任务管理MCP服务器

一个将Google Tasks集成到Claude和其他MCP兼容客户端的模型上下文协议服务器,支持通过自然对话管理任务、任务列表和待办事项。

  • by akutishevsky
  • TypeScript
  • 本地部署
  • 9 星标
  • 更新于
在 GitHub 查看 akutishevsky/google-tasks-mcp

使用说明

谷歌任务MCP服务器

一个模型上下文协议(MCP)服务器,将您的Google任务带入Claude和其他兼容MCP的客户端。通过自然对话管理你的任务、任务列表和待办事项。

🔒 隐私第一:此存储库是公开的,以展示透明度。代码显示 没有恶意记录或存储个人信息。所有敏感数据(令牌)在静止时都会加密,并自动从日志中编辑。您可以查看整个代码库以验证对隐私的承诺。

⚠️ 免责声明:此服务器已提供 按原样 没有任何保证或担保。虽然已经尽一切努力确保安全和隐私,但对可用性、数据完整性或安全性没有任何保证。使用风险自负。对于生产用例,考虑自托管您自己的实例。

目录

你能用这个做什么?

此MCP服务器允许Claude访问您的Google任务数据,允许您:

  • 管理任务列表:创建、读取、更新和删除任务列表
  • 管理任务:创建、读取、更新、删除和移动任务
  • 组织任务:创建子任务、设置截止日期、添加注释
  • 标记完成:将任务标记为已完成或未完成
  • 批量操作:从列表中清除所有已完成的任务
  • 查询任务:按完成状态、截止日期等筛选任务
  • 自然语言:通过与Claude的对话与您的任务互动

通过与Claude或任何其他MCP兼容客户端的自然对话。

对于最终用户:使用托管服务器

如果您只想将此MCP服务器与Claude Desktop一起使用,而无需自己托管任何内容,请按照以下步骤操作:

先决条件

  1. A. Google账户 使用Google任务
  2. 克劳德桌面 或您计算机上安装的任何其他MCP兼容客户端

安装说明

步骤1:在Claude Desktop中添加连接器

  1. 打开克劳德桌面
  2. 首选 设置 (左下角的齿轮图标)
  3. 导航到 连接器 标签
  4. 点击 添加自定义连接器
  5. 填写以下详细信息:
    • 名字: Google Tasks (或您喜欢的任何名称)
    • 远程MCP服务器URL: https://your-deployed-domain.com/mcp
  6. 点击 添加

步骤2:连接并授权

  1. 在 连接器 设置,找到您刚才添加的Google任务连接器
  2. 点击 连接 连接器旁边
  3. 您的网络浏览器将打开谷歌授权页面
  4. 登录您的Google帐户
  5. 审查并批准所请求的权限
  6. 您将被重定向回来,连接将完成

授权后,克劳德将可以访问您的谷歌任务!

可用工具

连接后,Claude可以使用这些工具访问您的数据:

任务列表管理

  • list_task_lists -返回所有经过身份验证的用户的任务列表
  • get_task_list -返回特定任务列表
  • insert_task_list -创建新任务列表
  • update_task_list -更新任务列表(完整更新)
  • patch_task_list -更新任务列表(部分更新)
  • delete_task_list -删除任务列表

任务管理

  • list_tasks -返回任务列表中的所有任务
  • get_task -返回特定任务
  • insert_task -创建新任务
  • update_task -更新任务(完整更新)
  • patch_task -更新任务(部分更新)
  • delete_task -删除任务
  • clear_completed_tasks -从列表中清除所有已完成的任务
  • move_task -将任务移动到其他位置或父级

对话示例

试着问克劳德:

  • “我有什么任务列表?”
  • “显示我的工作列表中的所有任务”
  • 创建一个名为“个人项目”的新任务列表
  • “在我的工作列表中添加一个任务“查看Q4报告”,截止日期为下周五”
  • “将“购买杂货”任务标记为已完成”
  • 将“编写提案”任务移动为“客户端项目”的子任务
  • “从我的购物清单中清除所有已完成的任务”
  • “本周有哪些任务要完成?”

隐私和安全

  • 加密令牌:所有身份验证令牌在存储前都使用AES-256-GCM进行加密
  • 不记录个人数据:代码是公开的-您可以验证没有记录任何敏感信息
  • 自动编校:所有用户ID、令牌和凭据都会从系统日志中自动编辑
  • OAuth 2.0:使用Google进行行业标准的安全身份验证
  • 你掌控全局:随时从您的Google帐户设置中取消访问

开发者:自助主机

想运行自己的实例吗?以下是如何自己部署此MCP服务器。

先决条件

  1. Node.js 18+和npm已安装
  2. Deno CLI 已安装以供部署
  3. A. 谷歌云平台 账户

第一步:创建谷歌云项目

  1. 首选 谷歌云控制台
  2. 创建新项目或选择现有项目
  3. 启用Google任务API:
    • 首选 API和服务 → 图书馆
    • 搜索“Google任务API”
    • 点击 启用
  4. 创建OAuth 2.0凭据:
    • 首选 API和服务 → 凭证
    • 点击 创建凭据 → OAuth客户端ID
    • 选择 Web应用程序
    • 添加授权重定向URI: https://your-domain.com/callback
    • 注意你的 客户端ID 和 客户端密钥
  5. 配置OAuth同意屏幕:
    • 首选 API和服务 → OAuth 授权界面
    • 添加所需范围: https://www.googleapis.com/auth/tasks

步骤2:克隆和设置

# Clone the repository
git clone https://github.com/akutishevsky/google-tasks-mcp.git
cd google-tasks-mcp

# Install dependencies
npm install

# Generate encryption secret
npm run generate-secret
# Copy the output - you'll need it for environment variables

第三步:地方发展

备注:Google要求OAuth回调具有可公开访问的URL。对于本地开发,使用隧道服务(如ngrok)公开本地服务器或部署到测试环境进行测试。

# Copy environment template
cp .env.example .env

# Edit .env with your values
# GOOGLE_CLIENT_ID=your_client_id
# GOOGLE_CLIENT_SECRET=your_client_secret
# GOOGLE_REDIRECT_URI=https://your-tunnel-url.com/callback
# ENCRYPTION_SECRET=paste_generated_secret_here
# PORT=3000

# Build the project
npm run build

# Run with Deno
deno task dev

确保.env文件中的重定向URI与指向本地服务器的可公开访问的URL匹配。

步骤4:部署到生产环境

部署到Deno部署

  1. 安装Deno Deploy命令行界面:
deno install -A --unstable https://deno.land/x/deploy/deployctl.ts
  1. 部署项目:
# Build first
npm run build

# Deploy to Deno Deploy
deployctl deploy --project=google-tasks-mcp build/index.js
  1. 在Deno Deploy仪表板中设置环境变量:
    • 转到项目设置
    • 添加所有必需的环境变量
    • 重新启动部署

步骤5:更新Google OAuth设置

返回您的Google Cloud Console OAuth客户端,更新重定向URI以匹配您部署的URL: https://your-domain.com/callback

步骤6:配置MCP客户端

对于Claude Desktop:

  1. 打开克劳德桌面
  2. 首选 设置 → 连接器 标签
  3. 点击 添加自定义连接器
  4. 填写以下详细信息:
    • 名字: Google Tasks (或您喜欢的任何名称)
    • 远程MCP服务器URL: https://your-domain.com/mcp
  5. 点击 添加
  6. 点击 连接 在要授权的连接器旁边

对于其他MCP客户:

使用以下连接详细信息配置MCP客户端:

  • 服务器URL: https://your-domain.com
  • 运输:服务器发送事件(SSE)
  • 端点: /mcp
  • 认证:OAuth 2.0
  • 发现URL: /.well-known/oauth-authorization-server

环境变量引用

变量 必填 描述
GOOGLE_CLIENT_ID 是 您的Google OAuth客户端ID
GOOGLE_CLIENT_SECRET 是 您的Google OAuth客户端密码
GOOGLE_REDIRECT_URI 是 OAuth回调URL(必须与Google Cloud Console设置匹配)
ENCRYPTION_SECRET 是 32+个字符的密钥用于令牌加密(使用 npm run generate-secret)
PORT 无 服务器端口(默认值:3000)
LOG_LEVEL 否 日志记录级别:跟踪、调试、信息、警告、错误(默认值:信息)
ALLOWED_ORIGINS 否 浏览器客户端允许的CORS源的逗号分隔列表

开发命令

npm run build            # Compile TypeScript to JavaScript
npm run dev              # Watch mode - recompile on changes
npm run generate-secret  # Generate encryption secret for ENCRYPTION_SECRET env variable

项目结构

src/
├── auth/              # OAuth 2.0 authentication & token storage
├── server/            # Hono app, MCP endpoints, middleware
├── tools/             # MCP tools for Google Tasks API (tasklists, tasks)
├── transport/         # Custom SSE transport for MCP
├── google/            # Google Tasks API client
├── utils/             # Logger and encryption utilities
└── index.ts           # Main entry point

安全特性

令牌加密

所有谷歌访问和刷新令牌在静止时都使用加密 AES-256-GCM:

  • 算法:AES-256-GCM(经过身份验证的加密)
  • 密钥派生:PBKDF2,迭代次数为100000次
  • 纵深防御:即使数据库遭到破坏,令牌也会受到保护

重要:保持你的 ENCRYPTION_SECRET:

  • 长度至少为32个字符
  • 随机生成(使用 npm run generate-secret)
  • 安全,从不承诺版本控制
  • 跨服务器重启保持一致

隐私安全日志

自定义记录器会自动编辑所有敏感信息:

  • ✅ 记录操作事件和错误
  • ❌ 没有令牌、凭据或身份验证码
  • ❌ 没有用户ID或个人信息
  • ❌ 没有包含敏感数据的API请求/响应有效负载

您可以在中查看日志记录实现 src/utils/logger.ts.

贡献

这是一个个人项目,但欢迎投稿!拜托:

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 提交拉取请求

许可证

MIT许可证-请参阅 许可证 文件以获取详细信息。

支持

致谢

内置: