Google Contacts
Manage your Google Contacts, allowing you to create, search, and update contacts.
📇 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.json
from 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 (stdio
orhttp
, 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:
contacts
anddirectory.readonly
Search Not Working
- Use server-side search with
search_contacts
- Try different search terms or fields
Performance Issues
- Use pagination with
max_results
parameter - Set
include_all_fields=False
for 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.
Related Servers
Google Workspace MCP Server
Interact with Google Workspace services like Gmail and Google Calendar.
Qonto
Interact with the Qonto Business API to manage finances, transactions, and account information using API credentials.
MCP Tasks Organizer
Converts Cursor agent plans into structured markdown task lists and organizes them in your repository.
Flomo
Create notes in Flomo through AI chat interactions in Cursor or Claude desktop.
Todoist
Manage Todoist projects, sections, tasks, and labels using natural language with AI assistants.
Ramp
Interact with Ramp's Developer API to run analysis on your spend and gain insights leveraging LLMs
Travel MCP Server
A comprehensive travel planning server for flight search, accommodation booking, currency exchange, and weather forecasting.
Invoice MCP
Create professional PDF invoices using natural language.
Backlog Manager
Manage task backlogs using a file-based JSON storage system.
Miro
Miro MCP server, exposing all functionalities available in official Miro SDK.