关于 Google Contacts MCP
Google Contacts MCP 通过 Google People API 让 AI 应用管理 Google 通讯录,适合联系人维护与批量整理。它提供标签和 Other contacts 管理,并用 etag 防止覆盖并发修改。
主要功能
- 01搜索和查看联系人
- 02创建、更新和删除联系人
- 03批量导入与清理
- 04管理联系人组和标签
- 05读取并转存 Other contacts
- 06etag 保护并发更新
适用场景
- 01查找某公司的联系人及联系方式
- 02批量导入联系人
- 03将联系人归入 Clients 标签
- 04把 Other contacts 转为正式联系人
MCP 相关
作为 MCP 服务,它向客户端提供联系人、联系人组及 Other contacts 的查询和管理工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y mcp-google-contactsGOOGLE_CONTACTS_CLIENT_IDGoogle OAuth2 client id (refresh-token flow).GOOGLE_CONTACTS_CLIENT_SECRET密钥Google OAuth2 client secret (refresh-token flow). Treat it as a secret.GOOGLE_CONTACTS_REFRESH_TOKEN密钥Google OAuth2 refresh token, exchanged for access tokens automatically. Treat it as a secret.GOOGLE_CONTACTS_ACCESS_TOKEN密钥Static OAuth2 access token (~1h lifetime) — alternative to the refresh-token trio, mostly for testing.GOOGLE_CONTACTS_OAUTH_PORT密钥Fixed port for the loopback listener of the in-chat login (127.0.0.1 + PKCE). Set it when the client runs over SSH port forwarding; otherwise a free port is picked per login.GOOGLE_CONTACTS_API_BASEAPI root override.GOOGLE_CONTACTS_TIMEOUT_MSPer-request timeout in milliseconds.GOOGLE_CONTACTS_MAX_RETRIESRetries on transient errors (429 always; 5xx/network for reads).本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
25收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
Google Contacts MCP
English | Русский
A1 Google Contacts MCP 可让 AI 应用用日常语言管理你的 Google 通讯录。查找联系人、创建或更新联系人、用标签整理联系人、批量导入和清理联系人,还能将自动保存的“其他联系人”转为正式联系人。
它通过你的 Google 账号使用 Google Contacts 背后的 API——Google People API。每次更新都会进行并发编辑保护,通过明确的字段掩码精简读取内容,并清晰说明 People API 的限制,而不会暗示所有联系人操作都能实现。
- 25 个工具。 列出、搜索和读取联系人,逐个或批量创建、更新和删除联系人,管理联系人群组及成员关系,并访问“其他联系人”。
- 在对话中连接。 说“连接 Google Contacts”:服务会引导你完成 OAuth 客户端设置,通过 PKCE 在
127.0.0.1捕获 Google 的重定向,并自行保管令牌——无需配置文件,也无需重启。 - 更新不会覆盖并发修改。 每次更新都受 etag 保护:如果联系人在读取后已在其他位置发生变化,写入会失败,而不会悄悄覆盖并发修改。
- 删除会永久生效。 People API 没有回收站;删除联系人或群组无法撤销,服务会将这些工具标记为破坏性操作,以便 AI 应用先征求确认。
- 仅需最少的 Google 权限范围。 读写使用
contacts——只读配置使用contacts.readonly即可——只有访问“其他联系人”时才需要contacts.other.readonly,无需广泛的账号访问权限。
先从只读问题开始:
找出我通讯录中所有来自 Acme 的联系人,并显示他们的电子邮件地址和电话号码。
一分钟了解它的工作方式
你: 显示 Jane Doe 的联系人卡片——电子邮件、电话和公司。
助手: 查找该联系人并显示所需字段。不会进行任何更改。
你: 将她的电话号码改为 +1 415 555 0100,并将她添加到“客户”标签。
助手: 显示联系人和拟议的更改,然后在写入前请求确认。
你: 确认。
助手: 应用受 etag 保护的更新并添加标签。如果期间联系人在其他位置发生了变化,写入会失败,而不会覆盖现有修改。
目录
快速开始
你需要 Node.js 20+ 和一个 Google 账号。安装时不需要凭据——服务会在对话中连接。
- 将服务添加到你的 AI 应用。
- 说“连接 Google Contacts”:助手会引导你创建 OAuth 客户端并批准访问权限,无需编辑配置文件。
- 提出上面的只读问题。
Codex
**在应用中:**打开 设置 → MCP 服务,选择 添加服务,选择 STDIO,输入命令 npx -y mcp-google-contacts@latest 和环境变量 GOOGLE_CONTACTS_CLIENT_ID、GOOGLE_CONTACTS_CLIENT_SECRET、GOOGLE_CONTACTS_REFRESH_TOKEN,然后选择 保存 和 重启。
通过命令行:
codex mcp add google-contacts \
-- npx -y mcp-google-contacts@latest
codex mcp list
Claude Code
claude mcp add \
--transport stdio --scope user google-contacts \
-- npx -y mcp-google-contacts@latest
claude mcp list
Claude Desktop
当前官方路径是 设置 → 扩展。如需安装自定义桌面扩展,请打开 高级设置 → 扩展开发者 → 安装扩展…,选择 .mcpb 文件并按提示操作。
此仓库目前发布的是 npm stdio 包,不包含 .mcpb 捆绑包。对于仍支持本地配置的 Claude Desktop 版本,可使用以下 JSON stdio 配置作为备用方案:
{
"mcpServers": {
"google-contacts": {
"command": "npx",
"args": ["-y", "mcp-google-contacts@latest"]
}
}
}
在这些版本中,macOS 上将其保存到 ~/Library/Application Support/Claude/claude_desktop_config.json,Windows 上将其保存到 %APPDATA%\Claude\claude_desktop_config.json。
Cursor
在 macOS/Linux 上将以下内容添加到 ~/.cursor/mcp.json,或在 Windows 上添加到 %USERPROFILE%\.cursor\mcp.json:
{
"mcpServers": {
"google-contacts": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-google-contacts@latest"]
}
}
}
VS Code
运行 MCP: 打开用户配置 并添加:
{
"servers": {
"google-contacts": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-google-contacts@latest"]
}
}
}
使用 MCP: 列出服务 检查配置。
你可以让它做什么
查找和查看联系人
- 查找所有来自 Acme 的联系人,并显示他们的邮箱和电话号码。
- 显示“Clients”标签中的联系人。
- 列出上次同步后发生变更的联系人。
保持通讯录为最新状态
- 为 Jane Doe 创建联系人,并填写她的邮箱、电话和公司。
- 更新联系人的电话号码或职位名称。
- 一次批量导入 50 个人,或通过一次调用删除过时的联系人。
使用标签整理
- 创建“Clients”标签并将这些联系人添加到其中。
- 重命名标签,或将联系人从一个标签移到另一个标签。
- 删除标签但保留其中的联系人——也可以连同联系人一起删除,但只有在明确要求时才会这样做。
使用“其他联系人”
- 显示 Google 自动保存的、未保存在我的联系人的地址。
- 将其中一个复制到“我的联系人”,作为正式联系人。
联系人如何变化
- 每个联系人、群组和其他联系人都有一个完整的资源名称(
people/c...、contactGroups/...、otherContacts/...);工具通过该名称定位记录,与 API 返回的名称完全一致。 - 读取操作只返回字段掩码中指定的字段(默认包括姓名、电子邮件、电话、组织和群组成员关系)。字段缺失可能只是因为它不在掩码中,而非内容为空。
- 更新会将每个提供的字段组作为整体替换,并受 etag 保护:如果联系人在读取后于其他位置发生了变化,写入就会失败,而不会覆盖并发修改。
- 删除不可撤销。People API 没有回收站,也无法撤销。
搜索会查询可能滞后最近写入几秒的缓存,最多返回 30 条结果。“其他联系人”——Google 自动保存的地址——只能读取或复制到“我的联系人”,不能直接编辑。没有专用工具可管理联系人照片;raw_request 可以调用这些端点。
可以进行的更改
| 操作 | 结果 | 确认边界 |
|---|---|---|
| 读取、搜索或批量读取联系人和群组 | 读取联系人数据 | 不产生更改 |
| 创建联系人、群组或批量创建联系人 | 添加记录 | 更改 Google Contacts |
| 更新联系人或重命名群组 | 替换提供的字段组,并受 etag 保护 | 更改联系人 |
| 更改标签成员关系 | 为选定联系人添加或移除标签 | 更改联系人 |
| 复制其他联系人 | 将实际联系人添加到“我的联系人” | 更改 Google Contacts |
| 删除联系人、群组或批次 | 永久移除记录;只有明确请求时,删除群组才会删除其成员联系人 | 具有破坏性 |
| 原始 API 请求 | 可调用没有专用工具的 API 方法 | 可能具有破坏性 |
AI 客户端控制确认提示。服务会标记读取、写入和具有破坏性的工具,以便客户端区分检查操作与实际更改。
获取访问权限
Google Contacts 需要 OAuth 2.0;仅有 API 密钥不够。有两种接入方式,第一种无需配置文件。
从聊天中连接(推荐)
说“连接 Google Contacts”,助手就会引导你完成整个流程:
setup_instructions会显示检查清单:创建或选择 Google Cloud 项目、启用 Google People API、配置授权同意屏幕,并创建 桌面应用 OAuth 客户端。- 下载该客户端的 JSON(“Download JSON”),并将其路径提供给助手——
set_client会将其保存为仅所有者可访问。密钥不会经过对话传输。 start_login会返回 Google 授权链接。在这台机器上打开链接并批准;验证码会通过一次性监听器返回到127.0.0.1(PKCE),绝不会经过聊天传输。finish_login会交换验证码,并将令牌保存到~/.config/mcp-google-contacts/credentials.json(模式 0600),再通过真实的 Google People API 调用验证令牌——如果 API 仍处于关闭状态,就会在此时发现。
每次调用都会重新读取令牌,因此连接会立即生效,无需重启 AI 应用。auth_status 会显示当前连接状态;logout 会撤销并删除凭据。
环境变量(CI、无人值守安装)
-
创建或选择一个 Google Cloud 项目,并启用 People API。
-
配置 OAuth 同意屏幕,并创建 Desktop app OAuth 客户端。
-
授权要管理其联系人的 Google 账号。启用 Use your own OAuth credentials 后,可通过 OAuth 2.0 Playground 获取刷新令牌。
-
根据使用需求请求最小范围:
https://www.googleapis.com/auth/contacts https://www.googleapis.com/auth/contacts.other.readonly
contacts 涵盖联系人和群组的读取与写入;对于只读设置,仅需 contacts.readonly。只有使用“Other contacts”工具时才需要 contacts.other.readonly。如果单个工具返回 403,通常意味着刷新令牌生成时未包含该工具所需的范围——添加缺少的范围后重新授权。
测试模式下的 OAuth 刷新令牌可能在七天后过期。如需长期访问,请发布 OAuth 应用,或在 Workspace 域中使用 Internal 应用。请将客户端密钥和刷新令牌视为密码。
配置
所有变量均为可选项——如果不设置任何变量,服务会从聊天中连接。
| 变量 | 必填 | 说明 |
|---|---|---|
GOOGLE_CONTACTS_CLIENT_ID | 否* | OAuth 客户端 ID。 |
GOOGLE_CONTACTS_CLIENT_SECRET | 否* | OAuth 客户端密钥。 |
GOOGLE_CONTACTS_REFRESH_TOKEN | 否* | OAuth 刷新令牌。 |
GOOGLE_CONTACTS_ACCESS_TOKEN | 否* | OAuth 三项凭据的短期替代方案(约 1 小时)。 |
GOOGLE_CONTACTS_OAUTH_PORT | 否 | 用于聊天内登录的固定环回端口;通过 SSH 端口转发时很有用。 |
GOOGLE_CONTACTS_API_BASE | 否 | Google People API 基础 URL 覆盖值。 |
GOOGLE_CONTACTS_TIMEOUT_MS | 否 | 每次请求的超时时间;默认值为 60000 ms。 |
GOOGLE_CONTACTS_MAX_RETRIES | 否 | 临时错误重试次数;默认值为 3。 |
* 请提供 OAuth 三项凭据或访问令牌。即使完全没有凭据,服务仍会启动并完成 MCP 握手;首次调用工具时会指出需要设置的确切变量。
数据、限制和后台工作
- 请求会发送到 Google。 本地服务会刷新 Google OAuth 令牌,并调用
people.googleapis.com上的 People API。匿名遥测包含安装 ID、软件包版本、AI 客户端和平台版本,以及工具名称——绝不包含 OAuth 令牌、联系人数据、工具参数或提示词。设置ASKADS_TELEMETRY=0即可选择退出。 - Google 配额按用户计算且额度较低。 默认 People API 配额允许每位用户每分钟大约进行 90 次读取和 90 次写入,因此批处理工具比循环进行单次调用更高效;修改数据的批处理必须一次运行一个。遇到
429时,服务会退避并重试;读取操作遇到网络和5xx错误时也会重试,而写入操作在发生不确定故障后不会重放。 - 没有后台轮询。 服务仅在被调用时运行。
list_contacts支持同步令牌,因此,具有计划任务的 AI 应用可以定期只获取发生变化的内容;同步令牌约七天后过期,届时需要重新完整列出联系人。
技术文档
- MCP 能力目录 — 面向任务的页面,涵盖每个工具。
- 所有工具和输入
- 开发文档
- 发布文档
- Google People API 参考文档
支持
发现 Bug 或有使用场景需求?创建 issue或在 Telegram 上留言。
你已经读到最后了!
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。