npm google-contacts-mcpstdioupdated 28d ago
MCP server for Google Contacts - list, search, and manage contacts.
What can you do with Google Contacts?
google-contacts-mcp
MCP server for Google Contacts - list, search, and manage contacts.
Use Cases
Email lookup: "See the latest JIRA ticket that's come in. Can we email Sarah from the security team to get their input?" → finds Sarah's email and drafts the message.
Business card capture: After a networking event, snap photos of business cards → your assistant extracts the details and adds them as contacts with a note about where you met.
Find connections: "Who do I know at Google?" or "I'm visiting London next week - who should I catch up with?" → search your personal network.
Call reminder: "Remind me to call Mike at 3pm" → creates a calendar event with Mike's phone number attached so you can dial straight from the reminder.
Contact updates: You receive an out-of-office saying someone left their company with a new personal email → your assistant updates their contact automatically.
(These are just examples - any workflow that needs contact lookup or management can use this.)
Setup
1. Create Google OAuth credentials
- Go to Google Cloud Console
- Create a new project (or use existing)
- Enable the People API
- Go to APIs & Services → OAuth consent screen, set up consent screen
- Go to APIs & Services → Credentials → Create Credentials → OAuth client ID
- Choose Web application
- Add
http://localhost:3000/callbackto Authorized redirect URIs - Note your Client ID and Client Secret
2. Run the server
GOOGLE_CLIENT_ID='your-client-id' \
GOOGLE_CLIENT_SECRET='your-client-secret' \
MCP_TRANSPORT=http \
npm start
The server runs on http://localhost:3000 by default. Change with PORT=3001.
3. Add to your MCP client
With the server running, follow the instructions on install-mcp, which generates the right config for your MCP client (Claude Code, Claude Desktop, Cursor, Cline, VS Code, and more).
Architecture
This server acts as an OAuth proxy to Google:
graph LR
A[MCP client] <--> B[google-contacts-mcp] <--> C[Google OAuth/API]
- Server advertises itself as an OAuth authorization server via
/.well-known/oauth-authorization-server /registerreturns the Google OAuth client credentials/authorizeredirects to Google, encoding the client's callback URL in state/callbackreceives the code from Google and forwards to the client's callback/tokenproxies token requests to Google, injecting client credentials/mcphandles MCP requests, using the bearer token to call People API
The server holds no tokens or state - it just proxies OAuth to Google.
Tools
| Tool | Description |
|---|---|
contacts_list |
List contacts with names, emails, phones, organizations, birthdays, events, URLs, addresses, nicknames, relations, IM usernames, genders, external IDs, client data, and custom fields |
contacts_search |
Search contacts by name, email, or phone |
directory_search |
Search organization directory for coworkers |
contact_get |
Get detailed info for a single contact |
contact_create |
Create a new contact |
contact_update |
Update an existing contact |
contact_delete |
Permanently delete a contact |
contact_photo_update |
Set or replace a contact's photo |
contact_photo_delete |
Remove a contact's photo |
contact_groups_list |
List contact groups (labels) |
contact_group_get |
Get a contact group, including its members |
contact_group_create |
Create a new contact group |
contact_group_update |
Rename a contact group |
contact_group_delete |
Permanently delete a contact group |
contact_group_members_modify |
Add or remove contacts from a contact group |
Contributing
Pull requests are welcomed on GitHub! To get started:
- Install Git and Node.js
- Clone the repository
- Install dependencies with
npm install - Run
npm run testto run tests - Build with
npm run build
Releases
Versions follow the semantic versioning spec.
To release:
- Use
npm version <major | minor | patch>to bump the version - Run
git push --follow-tagsto push with tags - Wait for GitHub Actions to publish to the NPM registry.
Install
Add Google Contacts to your client. Pick the one you use.
claude mcp add google-contacts-mcp -- npx -y google-contacts-mcpcodex mcp add google-contacts-mcp -- npx -y google-contacts-mcpamp mcp add google-contacts-mcp -- npx -y google-contacts-mcp{
"mcpServers": {
"google-contacts-mcp": {
"command": "npx",
"args": [
"-y",
"google-contacts-mcp"
]
}
}
}Add to `claude_desktop_config.json`, then restart Claude Desktop.
{
"mcpServers": {
"google-contacts-mcp": {
"command": "npx",
"args": [
"-y",
"google-contacts-mcp"
]
}
}
}Add to `~/.cursor/mcp.json`, or `.cursor/mcp.json` for a single project.
code --add-mcp '{"name":"google-contacts-mcp","command":"npx","args":["-y","google-contacts-mcp"]}'Or add the block manually to `.vscode/mcp.json` under `servers`.
{
"mcpServers": {
"google-contacts-mcp": {
"command": "npx",
"args": [
"-y",
"google-contacts-mcp"
]
}
}
}Add to `~/.codeium/windsurf/mcp_config.json`.
{
"mcpServers": {
"google-contacts-mcp": {
"command": "npx",
"args": [
"-y",
"google-contacts-mcp"
]
}
}
}Add to `cline_mcp_settings.json` via the MCP Servers panel.
{
"mcpServers": {
"google-contacts-mcp": {
"command": "npx",
"args": [
"-y",
"google-contacts-mcp"
]
}
}
}Add to `~/.gemini/settings.json`.
{
"mcpServers": {
"google-contacts-mcp": {
"type": "local",
"command": "npx",
"args": [
"-y",
"google-contacts-mcp"
],
"tools": [
"*"
]
}
}
}Add to `~/.copilot/mcp-config.json`, or run `/mcp add` inside the CLI.
{
"context_servers": {
"google-contacts-mcp": {
"command": {
"path": "npx",
"args": [
"-y",
"google-contacts-mcp"
]
}
}
}
}Add to your Zed `settings.json`.
npx -y google-contacts-mcpRun `goose configure`, choose **Add Extension → Command-line Extension**, and paste this command.
15 tools
Google Contacts exposes 15 tools to a connected agent.
- contacts_list
- List contacts with names, emails, phones, organizations, birthdays, events, URLs, addresses, nicknames, relations, IM usernames, genders, external IDs, client data, and custom fields
- contacts_search
- Search contacts by name, email, or phone
- directory_search
- Search organization directory for coworkers
- contact_get
- Get detailed info for a single contact
- contact_create
- Create a new contact
- contact_update
- Update an existing contact
- contact_delete
- Permanently delete a contact
- contact_photo_update
- Set or replace a contact's photo
- contact_photo_delete
- Remove a contact's photo
- contact_groups_list
- List contact groups (labels)
- contact_group_get
- Get a contact group, including its members
- contact_group_create
- Create a new contact group
- contact_group_update
- Rename a contact group
- contact_group_delete
- Permanently delete a contact group
- contact_group_members_modify
- Add or remove contacts from a contact group
Score
76 / 100
Good
- Documentation25/25
- Maintenance25/25
- Trust6/20
- Capability8/15
- Install experience12/15
- Documents what it does and how to connect
- Has a resolvable package or endpoint
- Exposes at least one tool, prompt or resource
- README has substantive content
- Includes a code example
- Documents its configuration
- Mentions credentials or security posture
- Last commit 20 days ago
- Has a release history
- Repository is not archived
- No licence detected
- Namespace verified in the official MCP registry
- Claimed by its owner
- Published under an organisation
- 15 tool(s) documented
- Provides prompt templates
- Provides resources
- 12 documented install method(s)
- Published to a package registry
- Offers a hosted endpoint — no local install
Version history
| Versions | Published |
|---|---|
| 1.3.0Latest | Jul 27, 2026 |
| 1.2.0 | Jul 9, 2026 |
| 1.1.4 | May 25, 2026 |
| 1.1.3 | Apr 29, 2026 |
| 1.1.2 | Feb 23, 2026 |
| 1.1.1 | Dec 28, 2025 |
| 1.1.0 | Dec 28, 2025 |
| 1.0.1 | Dec 13, 2025 |
| 1.0.0 | Dec 11, 2025 |