mcpField
G
Google Contacts MCP

Google Contacts MCP

本地服务
github.com生产力04 周前更新

关于 Google Contacts MCP

Google Contacts MCP 通过 Google People API 让 AI 应用管理 Google 通讯录,适合联系人维护与批量整理。它提供标签和 Other contacts 管理,并用 etag 防止覆盖并发修改。

主要功能

  1. 01搜索和查看联系人
  2. 02创建、更新和删除联系人
  3. 03批量导入与清理
  4. 04管理联系人组和标签
  5. 05读取并转存 Other contacts
  6. 06etag 保护并发更新

适用场景

  1. 01查找某公司的联系人及联系方式
  2. 02批量导入联系人
  3. 03将联系人归入 Clients 标签
  4. 04把 Other contacts 转为正式联系人

MCP 相关

作为 MCP 服务,它向客户端提供联系人、联系人组及 Other contacts 的查询和管理工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"a1-x-tech-mcp-google-contacts": {
"command": "npx",
"args": [
"-y",
"mcp-google-contacts"
],
"env": {
"GOOGLE_CONTACTS_CLIENT_ID": "<GOOGLE_CONTACTS_CLIENT_ID>",
"GOOGLE_CONTACTS_CLIENT_SECRET": "<GOOGLE_CONTACTS_CLIENT_SECRET>",
"GOOGLE_CONTACTS_REFRESH_TOKEN": "<GOOGLE_CONTACTS_REFRESH_TOKEN>",
"GOOGLE_CONTACTS_ACCESS_TOKEN": "<GOOGLE_CONTACTS_ACCESS_TOKEN>",
"GOOGLE_CONTACTS_OAUTH_PORT": "<GOOGLE_CONTACTS_OAUTH_PORT>",
"GOOGLE_CONTACTS_API_BASE": "<GOOGLE_CONTACTS_API_BASE>",
"GOOGLE_CONTACTS_TIMEOUT_MS": "<GOOGLE_CONTACTS_TIMEOUT_MS>",
"GOOGLE_CONTACTS_MAX_RETRIES": "<GOOGLE_CONTACTS_MAX_RETRIES>"
}
}
}
}
启动命令npx -y mcp-google-contacts
需要配置的环境变量
GOOGLE_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmmcp-google-contacts1.0.0

工具

25

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

A1 Google Contacts MCP

English | Русский

npm Glama CI License: MIT

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 账号。安装时不需要凭据——服务会在对话中连接。

  1. 将服务添加到你的 AI 应用。
  2. 说“连接 Google Contacts”:助手会引导你创建 OAuth 客户端并批准访问权限,无需编辑配置文件。
  3. 提出上面的只读问题。
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

Codex MCP 文档

Claude Code
claude mcp add \
  --transport stdio --scope user google-contacts \
  -- npx -y mcp-google-contacts@latest
claude mcp list

Claude Code MCP 文档

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。

Claude Desktop MCP 文档

Cursor

在 macOS/Linux 上将以下内容添加到 ~/.cursor/mcp.json,或在 Windows 上添加到 %USERPROFILE%\.cursor\mcp.json:

{
  "mcpServers": {
    "google-contacts": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-google-contacts@latest"]
    }
  }
}

Cursor MCP 文档

VS Code

运行 MCP: 打开用户配置 并添加:

{
  "servers": {
    "google-contacts": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "mcp-google-contacts@latest"]
    }
  }
}

使用 MCP: 列出服务 检查配置。

VS Code MCP 文档

你可以让它做什么

查找和查看联系人
  • 查找所有来自 Acme 的联系人,并显示他们的邮箱和电话号码。
  • 显示“Clients”标签中的联系人。
  • 列出上次同步后发生变更的联系人。
保持通讯录为最新状态
  • 为 Jane Doe 创建联系人,并填写她的邮箱、电话和公司。
  • 更新联系人的电话号码或职位名称。
  • 一次批量导入 50 个人,或通过一次调用删除过时的联系人。
使用标签整理
  • 创建“Clients”标签并将这些联系人添加到其中。
  • 重命名标签,或将联系人从一个标签移到另一个标签。
  • 删除标签但保留其中的联系人——也可以连同联系人一起删除,但只有在明确要求时才会这样做。
使用“其他联系人”
  • 显示 Google 自动保存的、未保存在我的联系人的地址。
  • 将其中一个复制到“我的联系人”,作为正式联系人。

联系人如何变化

  1. 每个联系人、群组和其他联系人都有一个完整的资源名称(people/c...、contactGroups/...、otherContacts/...);工具通过该名称定位记录,与 API 返回的名称完全一致。
  2. 读取操作只返回字段掩码中指定的字段(默认包括姓名、电子邮件、电话、组织和群组成员关系)。字段缺失可能只是因为它不在掩码中,而非内容为空。
  3. 更新会将每个提供的字段组作为整体替换,并受 etag 保护:如果联系人在读取后于其他位置发生了变化,写入就会失败,而不会覆盖并发修改。
  4. 删除不可撤销。People API 没有回收站,也无法撤销。

搜索会查询可能滞后最近写入几秒的缓存,最多返回 30 条结果。“其他联系人”——Google 自动保存的地址——只能读取或复制到“我的联系人”,不能直接编辑。没有专用工具可管理联系人照片;raw_request 可以调用这些端点。

可以进行的更改

操作结果确认边界
读取、搜索或批量读取联系人和群组读取联系人数据不产生更改
创建联系人、群组或批量创建联系人添加记录更改 Google Contacts
更新联系人或重命名群组替换提供的字段组,并受 etag 保护更改联系人
更改标签成员关系为选定联系人添加或移除标签更改联系人
复制其他联系人将实际联系人添加到“我的联系人”更改 Google Contacts
删除联系人、群组或批次永久移除记录;只有明确请求时,删除群组才会删除其成员联系人具有破坏性
原始 API 请求可调用没有专用工具的 API 方法可能具有破坏性

AI 客户端控制确认提示。服务会标记读取、写入和具有破坏性的工具,以便客户端区分检查操作与实际更改。

获取访问权限

Google Contacts 需要 OAuth 2.0;仅有 API 密钥不够。有两种接入方式,第一种无需配置文件。

从聊天中连接(推荐)

说“连接 Google Contacts”,助手就会引导你完成整个流程:

  1. setup_instructions 会显示检查清单:创建或选择 Google Cloud 项目、启用 Google People API、配置授权同意屏幕,并创建 桌面应用 OAuth 客户端。
  2. 下载该客户端的 JSON(“Download JSON”),并将其路径提供给助手——set_client 会将其保存为仅所有者可访问。密钥不会经过对话传输。
  3. start_login 会返回 Google 授权链接。在这台机器上打开链接并批准;验证码会通过一次性监听器返回到 127.0.0.1(PKCE),绝不会经过聊天传输。
  4. finish_login 会交换验证码,并将令牌保存到 ~/.config/mcp-google-contacts/credentials.json(模式 0600),再通过真实的 Google People API 调用验证令牌——如果 API 仍处于关闭状态,就会在此时发现。

每次调用都会重新读取令牌,因此连接会立即生效,无需重启 AI 应用。auth_status 会显示当前连接状态;logout 会撤销并删除凭据。

环境变量(CI、无人值守安装)
  1. 创建或选择一个 Google Cloud 项目,并启用 People API。

  2. 配置 OAuth 同意屏幕,并创建 Desktop app OAuth 客户端。

  3. 授权要管理其联系人的 Google 账号。启用 Use your own OAuth credentials 后,可通过 OAuth 2.0 Playground 获取刷新令牌。

  4. 根据使用需求请求最小范围:

    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 应用可以定期只获取发生变化的内容;同步令牌约七天后过期,届时需要重新完整列出联系人。

技术文档

支持

发现 Bug 或有使用场景需求?创建 issue或在 Telegram 上留言。


两只 Mona 击掌

你已经读到最后了!

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。