This MCP server enables AI assistants to fully manage Google Contacts and search Google Workspace directories.
Contact Management (CRUD):
List contacts - View all contacts or filter by name (up to 100 results)
Get contact details - Retrieve full information using resource name or email address
Create contacts - Add new contacts with name, email, and phone (requires given name)
Update contacts - Modify existing contact information (requires resource name)
Delete contacts - Remove contacts using their resource name
Search contacts - Find contacts by name, email, or phone number
Google Workspace Directory:
List workspace users - Browse organization directory with optional search filtering (up to 50 results)
Search directory - Perform targeted searches to find specific members (up to 20 results)
Additional Features:
Other contacts - Access people you've interacted with but haven't formally added (up to 50 results)
Provides access to Google Contacts functionality, allowing users to list, search, create, update, and delete contacts, as well as search the Google Workspace directory and access 'Other Contacts'.
Requires a Google Cloud project with the People API enabled for authentication and access to Google's contact management capabilities.
📇 MCP Google Contacts Server
A Machine Conversation Protocol (MCP) server that provides Google Contacts functionality, allowing AI assistants to manage contacts, search your organization's directory, and interact with Google Workspace. Much updated from its original by Gemini AI in Gemini CLI.
✨ Features
List and search Google Contacts
Create, update, and delete contacts
Search Google Workspace directory
View "Other Contacts" (people you've interacted with but haven't added)
Access Google Workspace users in your organization
Related MCP server: Google Drive MCP Server
🚀 Installation
📋 Prerequisites
Python 3.12 or higher
Google account with contacts access
Google Cloud project with People API enabled
OAuth 2.0 credentials for Google API access
📦 Installation from Source
To install the mcp-google-contacts-server as a Python package:
Clone the repository:
git clone https://github.com/rayanzaki/mcp-google-contacts-server.git cd mcp-google-contacts-serverRename the source directory: The package expects the source code to be in a directory named
mcp_google_contacts_server.mv src mcp_google_contacts_serverInstall the package: This will install the package and its dependencies, making the
mcp-google-contactscommand available in your PATH.pip install .Note: If you encounter import errors after installation, ensure that relative imports within the source files (
🔑 Authentication Setup
The server requires Google API credentials to access your contacts. You have several options:
🔐 Option 1: Using a credentials.json file
Create a Google Cloud project and enable the People API
Create OAuth 2.0 credentials (Desktop application type)
Download the credentials.json file
Place it in one of these locations:
The root directory of this project
Your home directory (~/google-contacts-credentials.json)
Specify its location with the
--credentials-fileargument
🔐 Option 2: Using environment variables
Set the following environment variables:
GOOGLE_CLIENT_ID: Your Google OAuth client IDGOOGLE_CLIENT_SECRET: Your Google OAuth client secretGOOGLE_REFRESH_TOKEN: A valid refresh token for your account
Note: If your existing environment variables for Google OAuth client ID and client secret have different names (e.g.,
Use e.g. export GOOGLE_CLIENT_ID=$GOOGLE_OAUTH_CLIENT_ID && export GOOGLE_CLIENT_SECRET=$GOOGLE_OAUTH_CLIENT_SECRET in command line before: mcp-google-contacts :
{authentication evocation should happen here)
🚀 Initial Authorization (Recommended)
For the initial authorization flow to obtain your GOOGLE_REFRESH_TOKEN, it is recommended to run the mcp-google-contacts command directly in your terminal (outside of any MCP client that might obscure the interactive browser prompts).
Example:
Follow the instructions in your terminal and browser to complete the authentication. Once the GOOGLE_REFRESH_TOKEN is displayed, you can set it as an environment variable for non-interactive use.
🛠️ Usage
🏃♂️ Basic Startup
This starts the server with the default stdio transport.
⚙️ Command Line Arguments
Argument | Description | Default Value |
| Transport protocol to use (
or
) |
|
| Host for HTTP transport |
|
| Port for HTTP transport |
|
| Google OAuth client ID (overrides environment variable) | - |
| Google OAuth client secret (overrides environment variable) | - |
| Google OAuth refresh token (overrides environment variable) | - |
| Path to Google OAuth credentials.json file | - |
📝 Examples
Start with HTTP transport:
Use specific credentials file:
Provide credentials directly:
🔌 Integration with MCP Clients
To use this server with MCP clients (like Anthropic's Claude with Cline), add it to your MCP configuration:
🧰 Available Tools
This MCP server provides the following tools:
Tool | Description |
| List all contacts or filter by name |
| Get a contact by resource name or email |
| Create a new contact |
| Update an existing contact |
| Delete a contact by resource name |
| Search contacts by name, email, or phone number |
| List Google Workspace users in your organization's directory |
| Search for people in the Google Workspace directory |
| Retrieve contacts from the 'Other contacts' section |
🔍 Detailed Tool Descriptions
📋 list_contacts
Lists all your Google contacts or filters them by name.
Parameters:
name_filter(optional): String to filter contacts by namemax_results(optional): Maximum number of contacts to return (default: 100)
Example:
👤 get_contact
Retrieves detailed information about a specific contact.
Parameters:
identifier: Resource name (people/*) or email address of the contact
Example:
➕ create_contact
Creates a new contact in your Google Contacts.
Parameters:
given_name: First name of the contactfamily_name(optional): Last name of the contactemail(optional): Email address of the contactphone(optional): Phone number of the contact
Example:
✏️ update_contact
Updates an existing contact with new information.
Parameters:
resource_name: Contact resource name (people/*)given_name(optional): Updated first namefamily_name(optional): Updated last nameemail(optional): Updated email addressphone(optional): Updated phone number
Example:
🗑️ delete_contact
Deletes a contact from your Google Contacts.
Parameters:
resource_name: Contact resource name (people/*) to delete
Example:
🔍 search_contacts
Searches your contacts by name, email, or phone number.
Parameters:
query: Search term to find in contactsmax_results(optional): Maximum number of results to return (default: 10)
Example:
🏢 list_workspace_users
Lists Google Workspace users in your organization's directory.
Parameters:
query(optional): Search term to find specific usersmax_results(optional): Maximum number of results to return (default: 50)
Example:
🔭 search_directory
Performs a targeted search of your organization's Google Workspace directory.
Parameters:
query: Search term to find specific directory membersmax_results(optional): Maximum number of results to return (default: 20)
Example:
👥 get_other_contacts
Retrieves contacts from the 'Other contacts' section - people you've interacted with but haven't added to your contacts.
Parameters:
max_results(optional): Maximum number of results to return (default: 50)
Example:
🔒 Permissions
When first running the server, you'll need to authenticate with Google and grant the necessary permissions to access your contacts. The authentication flow will guide you through this process.
❓ Troubleshooting
🔐 Authentication Issues: Ensure your credentials are valid and have the necessary scopes
⚠️ API Limits: Be aware of Google People API quota limits
📝 Logs: Check the console output for error messages and debugging information
👥 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.