使用说明
Gmail MCP服务器
基于Java的模型上下文协议(MCP)服务器,与Gmail集成,通过Claude Desktop实现自然语言电子邮件查询。服务器使用带有安全OAuth2身份验证的Gmail API,公开按主题(例如“项目截止日期”)搜索电子邮件和阅读电子邮件内容的工具。
特性
- 搜索电子邮件:使用Gmail的查询语法按主题、发件人或日期查找电子邮件(例如。,
from:alice budget). - 阅读电子邮件:按ID检索完整的电子邮件内容(主题、发件人、正文)。
- 安全认证:将OAuth2与
gmail.readonly最小访问范围。 - MCP集成:使用JSON-RPC 2.0通过Stdio与Claude Desktop通信。
- 稳健设计:包括错误处理、日志记录和生产就绪的输入验证。
先决条件
- Java 17:确保安装了JDK 17(
java --version). - 梅文:用于依赖关系管理(
mvn --version). - 谷歌云项目:启用Gmail API和OAuth2凭据。
- 克劳德桌面:已安装并配置MCP(可从Anthropic获得)。
- 操作系统:在Windows、macOS和Linux上进行了测试。
安装说明
1.创建Google Cloud凭据
- 转到 谷歌云控制台.
- 创建一个新项目(例如“Gmail MCP服务器”)。
- 启用Gmail API:
- 引导到 API和服务>库.
- 搜索“Gmail API”并点击 启用.
- 创建OAuth 2.0凭据:
- 首选 API和服务>凭据>创建凭据>OAuth 2.0客户端ID.
- 选择 桌面应用程序 作为应用程序类型。
- 命名客户端(例如,“Gmail MCP客户端”)。
- 下载
credentials.json文件。
- 添加
http://localhost到授权重定向URI:- 在……里面 凭证,编辑OAuth 2.0客户端ID并添加
http://localhost在...之下 授权重定向URI.
- 在……里面 凭证,编辑OAuth 2.0客户端ID并添加
2.克隆或设置项目
- 克隆存储库(或创建一个新的Maven项目):或者,创建一个新的Maven项目并复制提供的文件:
git clone <repository-url> cd gmail-mcp-serversrc/main/java/com/swiftbeard/gmailmcp/GmailMcpServer.javapom.xmlsrc/main/resources/credentials.json(来自谷歌云)src/main/resources/logback.xml
- 地方
credentials.json在……里面src/main/resources/. - 验证项目结构:
gmail-mcp-server/ ├── pom.xml ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/swiftbeard/gmailmcp/ │ │ │ └── GmailMcpServer.java │ │ ├── resources/ │ │ │ ├── credentials.json │ │ │ └── logback.xml
3.建设项目
- 安装依赖项并构建项目:
mvn clean install - 构建将生成一个带阴影的JAR:
target/gmail-mcp-server-1.0-SNAPSHOT.jar.
4.运行服务器
- 启动服务器:
java -jar target/gmail-mcp-server-1.0-SNAPSHOT.jar - 首次运行时,服务器会打开一个浏览器进行OAuth2身份验证:
- 使用您的Gmail帐户登录。
- 授予应用程序读取电子邮件的权限(使用
gmail.readonly范围)。 - 令牌保存到
~/.gmail-mcp/tokens用于后续运行。
- 服务器在Stdio模式下运行,等待来自Claude Desktop的MCP请求。
5.配置克劳德桌面
- 从以下位置安装Claude Desktop Anthropic网站.
- 定位或创建MCP配置文件(例如。,
~/.cursor/mcp.json或克劳德的设置文件)。 - 添加Gmail MCP服务器配置:替换
{ "mcpServers": { "gmail": { "command": "java", "args": ["-jar", "/full/path/to/gmail-mcp-server-1.0-SNAPSHOT.jar"] } } }/full/path/to/gmail-mcp-server-1.0-SNAPSHOT.jar使用JAR文件的绝对路径(例如。,/home/user/gmail-mcp-server/target/gmail-mcp-server-1.0-SNAPSHOT.jar). - 保存文件并重新启动Claude Desktop。
6.测试集成
- 打开克劳德桌面。
- 输入自然语言查询,例如:
Find emails about project deadlines from the last 30 days. - 克劳德将其翻译为
searchEmails工具调用(例如。,query: "project deadlines after:2025-03-26").服务器返回电子邮件列表:[ {"id": "abc123", "subject": "Project Deadlines Update", "snippet": "Please review the June 1 deadline..."}, {"id": "def456", "subject": "Q2 Deadlines", "snippet": "Deadlines for Project X..."} ] - 跟进:
Read the email with ID abc123. - 服务器执行
readEmail("abc123")并返回:{ "id": "abc123", "subject": "Project Deadlines Update", "from": "jane.doe@example.com", "body": "Hi team, please review the June 1 deadline for Project X..." } - 克劳德用自然语言总结了结果。
使用示例
- 按主题搜索:地图指向:
Show me emails about budget approvals from last month.searchEmails("budget approvals after:2025-03-01 before:2025-04-01"). - 按发件人搜索:地图指向:
Find emails from alice@example.com about conference planning.searchEmails("from:alice@example.com conference planning"). - 阅读特定电子邮件:地图指向:
Read the email with ID xyz123.readEmail("xyz123").
最佳实践
- 安全:
- 使用最少
gmail.readonly限制访问的范围。 - 将OAuth2令牌安全地存储在
~/.gmail-mcp/tokens(不包括在版本控制中)。 - 验证输入以防止注入攻击。
- 使用最少
- 错误处理:
- 返回无效请求或API失败的JSON-RPC错误响应。
- 使用SLF4J/Logback记录错误以进行调试。
- 演出:
- 将搜索结果限制为10封电子邮件,以遵守Gmail API速率限制(250次查询/分钟)。
- 使用Jackson进行高效的JSON解析。
- 可维护性:
- 模块化代码,具有独立的Gmail和MCP逻辑。
- 用于监控的全面日志记录。
故障排除
- 身份验证错误:
- 确保
credentials.json在...里src/main/resources/. - 删除
~/.gmail-mcp/tokens如果令牌无效,则重新进行身份验证。
- 确保
- 服务器未响应:
- 验证中的JAR路径
mcp.json是正确的。 - 检查控制台中的日志是否有错误。
- 验证中的JAR路径
- Claude桌面问题:
- 确保Claude Desktop已更新到最新版本。
- 确认MCP配置文件的格式正确。
- Gmail API费率限制:
- 如果达到速率限制,请降低查询频率或实现指数回退。
安全考虑
- 凭证:添加
credentials.json和~/.gmail-mcp/tokens向.gitignore以防止意外犯罪。 - OAuth2:用途
offline持久令牌的访问类型;查看谷歌云控制台是否有异常活动。 - 范围:仅限于
gmail.readonly以防止未经授权的行为。
扩展服务器
- 添加工具:扩展
GmailMcpServer.java包括以下工具labelEmail或sendEmail(需要额外的范围)。 - 远程托管:修改以使用SSE或WebSockets进行云部署(例如,使用Spring WebFlux)。
- 缓存:使用Caffeine等内存存储为频繁搜索的查询实现缓存。
贡献
欢迎投稿!拜托:
- 分叉存储库。
- 创建要素分支(
git checkout -b feature/xyz). - 提交更改(
git commit -m "Add XYZ feature"). - 推到分支(
git push origin feature/xyz). - 打开一个pull请求。
许可证
MIT许可证。看 LICENSE 了解详情。
致谢
- 内置于 谷歌Gmail API 和 人类MCP.
- 受到龚哲的Gmail MCP服务器等社区MCP服务器的启发。
对于问题或疑问,打开GitHub问题或联系维护人员。