使用说明
Gmail MCP服务器
模型上下文协议(MCP)服务器,通过Google Gmail API提供对Gmail的只读访问。
特性
- 列出来自Gmail文件夹/标签的邮件
- 阅读完整的邮件详细信息,包括正文和附件
- 使用Gmail搜索语法搜索邮件
- 查看所有Gmail标签及其统计数据
- 使用OAuth2身份验证的只读访问
先决条件
- Node.js 18+和npm
- 启用Gmail API的谷歌云项目
- OAuth2凭据(客户端ID和客户端机密)
设置
1.获取Google OAuth2凭据
- 首选 谷歌云控制台
- 创建新项目或选择现有项目
- 启用Gmail API:API和服务>库>Gmail API>启用
- 创建OAuth2凭据:
- API和服务>凭据>创建凭据>OAuth客户端ID
- 应用程序类型:桌面应用程序
- 名称:Gmail MCP服务器
- 复制客户端ID和客户端密码
2.安装依赖项
npm install
3.配置环境变量
创建一个 .env 文件:
GMAIL_CLIENT_ID=your_client_id.apps.googleusercontent.com
GMAIL_CLIENT_SECRET=your_client_secret
备注:重定向URI是使用第一个可用端口(默认值:8080)自动生成的。您可以选择设置 GMAIL_REDIRECT_URI 如果你需要一个特定的端口。
4.建设项目
npm run build
5.使用MCP检查员进行测试
npm run inspect
这将:
- 检查中的现有令牌
~/.gmail-mcp/tokens.json - 如果未找到,请打开浏览器进行OAuth2授权
- 授权应用程序访问Gmail
- 启动MCP检查器进行测试
用法
服务器提供以下工具:
gmail_list_消息
列出来自Gmail文件夹/标签的邮件。
参数:
labelIds(可选):标签ID数组(默认值:[“INBOX”])maxResults(可选):要返回的消息数(默认值:20,最大值:100)pageToken(可选):分页标记includeSpamTrash(可选):包括垃圾邮件/垃圾(默认值:false)
gmail_get_message
获取完整的消息详细信息。
参数:
messageId(必填):消息IDformat(可选):“完整”、“元数据”或“最小”(默认值:“元数据”)
gmail_search_message
使用Gmail搜索语法搜索邮件。
参数:
query(必填):搜索查询(例如,“发件人:john@example.com“,”主题:会议“)maxResults(可选):结果数(默认值:20)pageToken(可选):分页标记
gmail_list_labels
列出所有Gmail标签。
无需参数。
gmail_get_label
获取特定标签的详细信息。
参数:
labelId(必填):标签ID
MCP客户端配置
克劳德桌面/克莱恩/OpenAI
-
创建或编辑配置文件:
- macOS/Linux:
~/.config/claude/claude_desktop_config.json - 视窗:
%APPDATA%\Claude\claude_desktop_config.json
- macOS/Linux:
-
添加Gmail MCP服务器配置:
{
"mcpServers": {
"gmail": {
"command": "node",
"args": [
"/absolute/path/to/gmail-mcp/build/index.js"
],
"env": {
"GMAIL_CLIENT_ID": "your_client_id.apps.googleusercontent.com",
"GMAIL_CLIENT_SECRET": "your_client_secret"
}
}
}
}
备注:重定向URI是自动生成的。您可以选择设置 GMAIL_REDIRECT_URI 如果你需要一个特定的端口。
Gemini CLI/Gemini CLI
-
查找或创建Gemini配置文件:
- macOS/Linux:
~/.config/gemini/config.json - 视窗:
%APPDATA%\gemini\config.json
- macOS/Linux:
-
添加MCP服务器配置:
{
"mcp": {
"servers": {
"gmail": {
"command": "node",
"args": [
"/absolute/path/to/gmail-mcp/build/index.js"
],
"env": {
"GMAIL_CLIENT_ID": "your_client_id.apps.googleusercontent.com",
"GMAIL_CLIENT_SECRET": "your_client_secret"
}
}
}
}
}
- 重新启动Gemini CLI
openencode
-
查找或创建opencode配置文件:
- macOS/Linux:
~/.config/opencode/mcp.json - 视窗:
%APPDATA%\opencode\mcp.json
- macOS/Linux:
-
添加MCP服务器配置:
{
"mcpServers": {
"gmail": {
"command": "node",
"args": [
"/absolute/path/to/gmail-mcp/build/index.js"
],
"env": {
"GMAIL_CLIENT_ID": "your_client_id.apps.googleusercontent.com",
"GMAIL_CLIENT_SECRET": "your_client_secret"
}
}
}
}
- 重新启动opencode应用程序
使用npx(推荐)
您可以直接使用npx而无需安装:
npx -y gmail-mcp-service
在MCP客户端配置中:
{
"mcpServers": {
"gmail": {
"command": "npx",
"args": [
"-y",
"gmail-mcp-service"
],
"env": {
"GMAIL_CLIENT_ID": "your_client_id.apps.googleusercontent.com",
"GMAIL_CLIENT_SECRET": "your_client_secret"
}
}
}
}
使用npm全局安装
如果您希望全局安装该软件包:
npm install -g @your-scope/gmail-mcp
然后在MCP客户端配置中,使用:
{
"mcpServers": {
"gmail": {
"command": "npx",
"args": [
"@your-scope/gmail-mcp"
],
"env": {
"GMAIL_CLIENT_ID": "your_client_id.apps.googleusercontent.com",
"GMAIL_CLIENT_SECRET": "your_client_secret"
}
}
}
}
首次授权
当您首次在任何客户端上使用Gmail MCP服务器时:
- 服务器将检查中的现有令牌
~/.gmail-mcp/tokens.json - 如果没有找到令牌,它将打开您的浏览器进行OAuth2授权
- 授权应用程序访问您的Gmail
- 令牌存储在本地以供将来使用
- 然后,服务器将可供您的MCP客户端使用
发展
# Watch mode for development
npm run dev
# Run tests
npm test
# Build for production
npm run build
CI/CD
该项目使用GitHub Actions进行持续集成和自动发布npm。
运作原理
-
CI工作流 (
.github/workflows/ci.yml):- 对每个推送和拉取请求运行
main - Node.js 18和20的测试
- 运行所有测试和TypeScript编译
- 对每个推送和拉取请求运行
-
发布工作流 (
.github/workflows/publish.yml):- 运行推送
main分支 - 检查版本是否在
package.json比npm注册表更新 - 如果版本更改:
- 运行测试和构建
- 发布到npm
- 创建GitHub版本
- 运行推送
设置npm发布
要启用自动npm发布:
- 转到您的GitHub存储库 设置→ 秘密与变量→ 行动
- 点击 新存储库机密
- 添加一个名为的秘密
NPM_TOKEN - 使用您的npm身份验证令牌作为值
要创建npm令牌:
- 首选 npmjs.com→ 访问令牌
- 点击“生成新令牌”→ “自动化”
- 复制生成的令牌
- 添加为
NPM_TOKEN在GitHub操作秘密
发布新版本
-
更新中的版本
package.json:npm version major # or minor or patch -
承诺并推动
main:git commit -am "chore: bump version to X.Y.Z" git push origin main -
GitHub操作将自动:
- 运行测试
- 构建项目
- 发布到npm
- 创建GitHub版本
安全
- 令牌存储在本地
~/.gmail-mcp/tokens.json - 仅请求只读Gmail访问
- 没有共享或传输凭据
许可证
麻省理工学院
