MCP Google Contacts Server
Provides comprehensive Google Contacts management including creating, searching, and updating contacts with 25+ fields, managing contact groups, and accessing Google Workspace directories.
README
📇 MCP Google Contacts Server
A Machine Conversation Protocol (MCP) server that provides comprehensive Google Contacts functionality for AI assistants.
✨ Features
- Complete Contact Management: Create, read, update, and delete contacts with 25+ fields
- Advanced Search: Multi-field search across names, emails, phones, and organizations
- Contact Groups: Full label/group management and organization
- Google Workspace Integration: Directory search and user management
- Efficient Performance: Pagination support for large contact lists (1000+ contacts)
- Rich Field Support: Multiple emails/phones, addresses, birthdays, relationships, custom fields
🚀 Installation
Prerequisites
- Python 3.12 or higher
- Google account with contacts access
- Google Cloud project with People API enabled
- OAuth 2.0 credentials
Setup
-
Clone and install:
git clone git@github.com:4tal/mcp-google-contacts-server.git cd mcp-google-contacts-server # Using uv (recommended) uv venv && source .venv/bin/activate uv pip install -r requirements.txt # Or using pip pip install -r requirements.txt -
Set up Google API credentials (choose one):
Option A: Credentials file
- Download
credentials.jsonfrom Google Cloud Console - Place in project root or specify with
--credentials-file
Option B: Environment variables
export GOOGLE_CLIENT_ID="your_client_id" export GOOGLE_CLIENT_SECRET="your_client_secret" export GOOGLE_REFRESH_TOKEN="your_refresh_token" - Download
🛠️ Usage
Basic Startup
python src/main.py
# or
uv run src/main.py
Command Line Options
--transport: Protocol (stdioorhttp, default:stdio)--host: HTTP host (default:localhost)--port: HTTP port (default:8000)--credentials-file: Path to credentials.json--client-id,--client-secret,--refresh-token: OAuth credentials
Examples
# HTTP transport
python src/main.py --transport http --port 8080
# Specific credentials file
python src/main.py --credentials-file /path/to/credentials.json
🔌 MCP Client Integration
Add to your MCP configuration:
{
"mcpServers": {
"google-contacts-server": {
"command": "uv",
"args": [
"--directory", "/path/to/mcp-google-contacts-server",
"run", "main.py"
]
}
}
}
🧰 Available Tools
Contact Management
list_contacts- List all contacts with filtering and paginationsearch_contacts- Advanced multi-field searchget_contact- Get detailed contact informationcreate_contact- Create contact with basic fields (11 fields)create_contact_advanced- Create contact with all fields (25+ fields)update_contact- Update contact with basic fieldsupdate_contact_advanced- Update contact with all fieldsdelete_contact- Delete a contact
Contact Groups (Labels)
list_contact_groups- List all contact groups/labelscreate_contact_group- Create new contact groupget_contact_group- Get group details and membersupdate_contact_group- Update group namedelete_contact_group- Delete user-created groupsadd_contacts_to_group- Add contacts to a groupremove_contacts_from_group- Remove contacts from groupsearch_contacts_by_group- Find contacts in specific group
Google Workspace
list_workspace_users- List organization directorysearch_directory- Search workspace directoryget_other_contacts- Get "other contacts"
📝 Quick Examples
Search Contacts
# Basic search
search_contacts("john smith")
# Search specific fields
search_contacts("engineer", search_fields=["jobTitle", "organization"])
# Search phone numbers
search_contacts("+1234567890")
Create Contact
# Basic contact
create_contact(
given_name="John",
family_name="Smith",
email="john@example.com",
phone="+1-555-123-4567",
organization="Acme Corp",
job_title="Software Engineer"
)
# Advanced contact with multiple fields
create_contact_advanced({
"given_name": "Jane",
"family_name": "Doe",
"emails": [
{"value": "jane@work.com", "type": "work"},
{"value": "jane@personal.com", "type": "home"}
],
"phones": [
{"value": "+1-555-111-2222", "type": "mobile"}
],
"organization": "Tech Corp",
"birthday": "1985-03-22"
})
Manage Contact Groups
# Create group
create_contact_group("Work Team")
# Add contacts to group
add_contacts_to_group("contactGroups/12345", ["people/67890", "people/11111"])
# Find contacts in group
search_contacts_by_group("contactGroups/12345")
❓ Troubleshooting
Authentication Issues
- Ensure People API is enabled in Google Cloud Console
- Check OAuth credentials are valid and have proper scopes
- Required scopes:
contactsanddirectory.readonly
Search Not Working
- Use server-side search with
search_contacts - Try different search terms or fields
Performance Issues
- Use pagination with
max_resultsparameter - Set
include_all_fields=Falsefor faster queries
🔧 Development
# Development setup
uv sync --dev
# Format code
./scripts/format.sh
# Run linting
./scripts/lint.sh
# Test
uv run python test_contact_groups.py
📄 License
MIT License - see LICENSE file for details.
Note: This server provides comprehensive Google Contacts functionality with support for all contact fields, advanced search, contact groups, and efficient handling of large contact lists.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.