使用说明
谷歌工作区MCP服务器
MCP(模型上下文协议)服务器,通过标准化的工具界面让人工智能助手访问Gmail和谷歌日历。使用TypeScript构建。
特征
Gmail
- 线程 --列出并阅读带有全文处理功能的电子邮件线程(引号删除、签名删除、HTML到文本转换)
- 草稿 --使用线程回复支持创建、更新、列出和删除电子邮件草稿(仅草稿,从不发送)
- 标签 --列出所有Gmail标签(系统+用户)
日历
- 事件 --创建、列出、更新和删除日历事件,支持全天活动、与会者和地点
先决条件
- Node.js 18+
- Google Cloud项目 Gmail API 和 谷歌日历API 启用
- OAuth 2.0客户端凭据(桌面应用程序类型)来自 谷歌云控制台
设置
1.安装依赖项
npm install
2.运行OAuth设置向导
npm run setup
这将:
- 提示您输入OAuth客户端ID和客户端密码
- 提示您 帐户别名 (例如,“工作”、“个人”)
- 打开浏览器窗口进行谷歌授权
- 在上启动本地回调服务器
http://localhost:3000/oauth2callback - 将令牌保存到
~/.config/google-workspace-mcp/tokens.json多账户格式 - 验证Gmail和日历API的访问权限
跑 npm run setup 再次添加更多帐户。第一个帐户将成为默认帐户。
重定向URI:确保
http://localhost:3000/oauth2callback在您的Google Cloud Console OAuth凭据中列为授权重定向URI。
没有刷新令牌? 如果安装程序因未收到刷新令牌而失败,请在以下位置撤销应用程序访问权限https://myaccount.google.com/permissions并再次运行安装程序。
3.构建和运行
npm run build
npm start
与MCP客户端一起使用
添加到您的MCP客户端配置(Claude Desktop、Claude Code等):
{
"mcpServers": {
"google-workspace": {
"command": "node",
"args": ["/absolute/path/to/google-workspace-mcp/dist/index.js"]
}
}
}
凭据从加载 ~/.config/google-workspace-mcp/tokens.json (由创建 npm run setup).环境变量(GOOGLE_CLIENT_ID, GOOGLE_CLIENT_SECRET, GOOGLE_REFRESH_TOKEN)支持作为单帐户使用的后备方案,但 npm run setup 这是推荐的方法。
可用工具
所有工具都接受可选 account 用于选择使用哪个Google帐户的参数(例如。, account: "work").省略它以使用默认帐户。
账户管理
| 工具 | 说明 |
|---|---|
list_accounts |
列出已配置的Google帐户和默认帐户。用于发现可用的帐户别名 |
Gmail
| 工具 | 说明 |
|---|---|
gmail_list_threads |
列出带有可选搜索查询的线程(is:inbox, newer_than:14d, from:me等)、分页和最大结果 |
gmail_get_thread |
阅读完整的线程内容——所有带有正文的消息,或 minimal 仅用于元数据的格式 |
gmail_create_draft |
使用可选线程创建电子邮件草稿(thread_id, in_reply_to).支持/cc/bcc |
gmail_update_draft |
更新现有草稿——只提供要更改的字段 |
gmail_delete_draft |
永久删除草稿 |
gmail_list_drafts |
列出所有带有ID、主题和收件人的草稿 |
gmail_list_labels |
列出所有Gmail标签(系统和用户,包括超人自动标签) |
gmail_download_attachment |
下载附件(通过 message_id + attachment_id 从 gmail_get_thread)到磁盘;默认为临时临时临时目录(24小时后自动修剪),返回本地路径。通过 save_dir 保持它(例如。 ~/Downloads) |
日历
| 工具 | 说明 |
|---|---|
calendar_list_events |
按时间范围列出事件(默认值:现在到7天)。验证 time_min <= time_max.支持自定义 calendar_id |
calendar_create_event |
创建一个事件,包括摘要、开始/结束、与会者、位置、描述 |
calendar_update_event |
更新事件——只发送更改的字段(PATCH)。必须至少提供一个字段 |
calendar_delete_event |
删除事件 |
OAuth范围
| 范围 | 目的 |
|---|---|
gmail.readonly |
阅读帖子、消息、标签 |
gmail.compose |
创建和管理草稿 |
gmail.labels |
列出标签 |
calendar |
完整日历读/写 |
发展
npm run build # Compile TypeScript (tsc → dist/)
npm test # Run all tests (vitest)
npx vitest run tests/drafts.test.ts # Run a single test file
项目结构
src/
├── index.ts # MCP server — 13 tools with account param, transport
├── auth.ts # Multi-account OAuth2 factory, token migration, account resolution
├── utils.ts # compact() utility
├── gmail/
│ ├── threads.ts # Thread list/get with text processing pipeline
│ ├── drafts.ts # Draft CRUD, RFC 2822 email building
│ └── labels.ts # Label listing
└── calendar/
└── events.ts # Calendar event CRUD
tests/ # Vitest — mock-based, no real API calls
scripts/
└── setup-oauth.ts # Interactive OAuth setup wizard
specs/ # Planned feature specs (see specs/email-watcher.md)
看 CLAUDE.md 详细的架构文档和 INDEX.md 逐个文件引用。
许可证
麻省理工学院