MCP服务器-谷歌工作区

用于Google Workspace集成的模型上下文协议(MCP)服务器,为Gmail、Google日历和Google Drive访问提供工具。
特性
- 🔐 简单认证:基于环境变量的凭据
- 📧 Gmail:列出、阅读、搜索和发送电子邮件
- 📅 日历:列出日历(包括共享日历),在任何可访问的日历中列出和创建事件
- 📁 驾驶:文件管理(即将推出)
- 🔄 自动令牌刷新:自动刷新OAuth令牌
- 🏢 多用户支持:主机应用程序可以解密和注入用户特定的凭据
- 🤝 共享日历支持:访问和管理与您共享的日历中的事件
安装
供个人使用
npm install mcp-server-google-workspace
# or
pnpm add mcp-server-google-workspace为了发展
git clone
cd mcp-server-google-workspace
pnpm install
pnpm build认证
MCP服务器从环境变量中读取Google OAuth凭据:
# .env
GOOGLE_CLIENT_ID=your_client_id
GOOGLE_CLIENT_SECRET=your_client_secret
GOOGLE_REFRESH_TOKEN=your_refresh_token
GOOGLE_ACCESS_TOKEN=your_access_token # optional多用户平台
对于服务于多个用户的平台,主机应用程序应:
- 从数据库中获取加密凭据
- 解密凭据(例如,使用AWS KMS)
- 启动MCP服务器时,将解密后的凭据作为环境变量传递
这使MCP服务器保持简单,并将凭据管理委托给主机应用程序。
可用工具
Gmail工具
gmail_list_emails
列出Gmail收件箱中最近的电子邮件。
参数:
hours(数字,可选):回顾时间(默认值:24)maxResults(数字,可选):要返回的最大电子邮件数(默认值:50)query(字符串,可选):Gmail搜索查询
例子:
{
"hours": 168,
"maxResults": 50,
"query": "from:boss@company.com"
}gmail_read_email
阅读特定电子邮件的完整内容。
参数:
emailId(字符串,必填):Gmail邮件ID
gmail_search_emails
使用Gmail查询语法搜索电子邮件。
参数:
query(字符串,必填):搜索查询maxResults(数字,可选):最大结果(默认值:50)
查询示例:
"from:user@example.com subject:meeting""has:attachment after:2025/11/01""is:unread label:important"
日历工具
calendar_list_calendars
列出所有可访问的日历,包括共享日历。
参数:
showHidden(布尔值,可选):包含隐藏日历(默认值:false)minAccessRole(字符串,可选):最小访问角色筛选器(freeBusyLeader、阅读器、写入器、所有者)
例子:
{
"showHidden": false,
"minAccessRole": "reader"
}答复: 返回日历及其ID、名称、访问角色和其他元数据的列表。使用日历 id 用于其他日历操作的字段。
calendar_list_events
列出日期范围内的日历事件。返回带有时区信息的事件。
参数:
calendarId(字符串,可选):日历ID(默认值:'primary')。使用calendar_list_calendars以获取共享日历的ID。date(字符串,可选):开始日期(YYYY-MM-DD),默认值:今天days(数字,可选):天数(默认值:1)maxResults(数字,可选):最大事件数(默认值:50)
答复: 每个活动包括 startTimeZone 和 endTimeZone 字段,使处理不同时区的事件变得容易(例如,ET与UTC)。
calendar_create_event
创建具有适当时区支持的新日历事件。
参数:
calendarId(字符串,可选):日历ID(默认值:'primary')。使用calendar_list_calendars以获取共享日历的ID。summary(字符串,必填):事件标题start(字符串,必填):开始时间(ISO 8601)end(字符串,必填):结束时间(ISO 8601)timeZone(字符串,可选):IANA时区(例如,“美国/纽约”、“美国/洛杉矶”、“UTC”)。如果未指定,则使用日历的默认时区。description(字符串,可选):事件描述location(字符串,可选):事件位置attendees(数组,可选):与会者电子邮件
示例:
在EST时区创建事件:
{
"calendarId": "primary",
"summary": "Team Meeting",
"start": "2025-11-02T10:00:00",
"end": "2025-11-02T11:00:00",
"timeZone": "America/New_York",
"description": "Quarterly review",
"attendees": ["team@company.com"]
}在UTC中创建事件(如果未指定,则默认):
{
"summary": "Team Meeting",
"start": "2025-11-02T15:00:00Z",
"end": "2025-11-02T16:00:00Z"
}用法
使用克劳德桌面
添加到您的Claude Desktop配置中:
{
"mcpServers": {
"google-workspace": {
"command": "npx",
"args": ["-y", "mcp-server-google-workspace"],
"env": {
"GOOGLE_CLIENT_ID": "your_client_id",
"GOOGLE_CLIENT_SECRET": "your_client_secret",
"GOOGLE_REFRESH_TOKEN": "your_refresh_token"
}
}
}
}程序化使用(例如,使用Claude Agent SDK)
对于多用户平台,解密凭据并在启动服务器时注入它们:
import { Agent } from '@anthropic-ai/claude-agent-sdk';
// Your backend decrypts credentials from database
const credentials = await decryptUserCredentials(userId);
const agent = new Agent({
mcpServers: [{
command: 'node',
args: ['path/to/mcp-server-google-workspace/dist/index.js'],
env: {
GOOGLE_CLIENT_ID: credentials.clientId,
GOOGLE_CLIENT_SECRET: credentials.clientSecret,
GOOGLE_REFRESH_TOKEN: credentials.refreshToken,
}
}]
});发展
# Install dependencies
pnpm install
# Build
pnpm build
# Watch mode
pnpm watch
# Run locally
pnpm dev测试
与MCP检查员一起
npx @modelcontextprotocol/inspector node dist/index.js使用环境变量
cp .env.example .env
# Edit .env with your credentials
pnpm devOAuth设置
要获取Google OAuth凭据,请执行以下操作:
- 首选 谷歌云控制台
- 创建新项目或选择现有项目
- 启用Gmail API和Google日历API
- 创建OAuth 2.0凭据
- 添加授权重定向URI
- 获取客户端ID和客户端密钥
- 使用OAuth游乐场获取刷新令牌
贡献
欢迎投稿!请随时提交拉取请求。
许可证
麻省理工学院
作者
iskifogl
