GitHub日历MCP服务器
一个模型上下文协议(MCP)服务器,提供GitHub项目日历和团队管理功能。该服务器允许Goose等AI助手与GitHub项目板交互,分析团队工作负载,并提供日程安排见解。
特性
- 📅 日历事件:将GitHub项目问题作为日历事件获取
- 👥 团队状态:获取所有团队成员的当前状态
- 📊 工作量分析:分析团队工作量分布
- 🎯 智能分配:为新任务找到最佳团队成员
- 📋 个人日程安排:获取单个团队成员的日程安排
- 🔍 灵活过滤:按组织、项目、日期和受让人筛选
安装
- 克隆或创建项目目录:
mkdir github-calendar-mcp-server
cd github-calendar-mcp-server- 安装依赖项:
npm install- 设置环境变量:
创建一个 .env 文件或设置环境变量:
export GITHUB_TOKEN=your_github_personal_access_token要创建GitHub令牌,请执行以下操作:
- 转到GitHub设置→ 开发人员设置→ 个人访问令牌 - 使用以下权限创建新令牌: - repo (用于私有存储库) - read:org (用于组织数据) - read:project (适用于项目板)
用法
运行服务器
npm start服务器将启动并监听stdio上的MCP连接。
与Goose集成
将此配置添加到Goose MCP设置中:
{
"mcpServers": {
"github-calendar": {
"command": "node",
"args": ["/full/path/to/github-calendar-mcp-server/index.js"],
"env": {
"GITHUB_TOKEN": "your_github_token_here"
}
}
}
}可用工具
1. get_team_status
获取所有开发团队成员的当前状态。
示例提示:
- “目前的团队状况如何?”
- “告诉我每个人有多忙”
- “获取团队工作量概览”
2. get_person_schedule
获取特定团队成员的日程安排。
参数:
login(必填):GitHub用户名days(可选):展望未来的天数(默认值:7)
示例提示:
- “爱丽丝下周的日程安排是什么?”
- “让我看看鲍勃未来14天的工作”
3. analyze_workload
分析团队工作量分布。
示例提示:
- “分析团队工作量”
- “谁的工作量最大/最少?”
- “显示工作负载分布”
4. find_best_assignee
找到工作量最轻的团队成员。
示例提示:
- “我应该把这个新任务分配给谁?”
- “为新任务找到最佳人选”
- “谁的工作量最轻?”
5. get_calendar_events
使用筛选选项获取GitHub项目日历事件。
参数:
org(可选):GitHub组织(默认:“squareup”)project(可选):项目编号(默认值:333)since(可选):要筛选的ISO日期字符串(默认值:“2025-08-01”)assignee(可选):按GitHub用户名筛选
示例提示:
- “显示所有日历事件”
- “获取Alice的活动”
- “显示2025年9月以来的事件”
- “获取设计团队项目的日历事件”
配置
服务器已预先配置为:
- 组织:
squareup - 项目:
333 - 标签过滤器:
area: devrel-opensource - 日期范围:从2025年8月起
您可以在 index.js 文件:
const DEFAULT_ORG = 'your-org';
const DEFAULT_PROJECT_NUMBER = 123;
const DEFAULT_LABEL = 'your-label';数据源
服务器从以下位置获取数据:
- GitHub项目v2 API (GraphQL)-主要来源
- GitHub搜索API -GraphQL失败时回退
- 发布自定义字段 -开始/结束日期
- 问题正文解析 -备份日期提取
- 里程碑到期日 -其他日期来源
错误处理
服务器包括全面的错误处理:
- 身份验证错误:明确关于GitHub代币问题的信息
- API费率限制:优雅地处理GitHub API限制
- 网络问题:GraphQL和REST API之间的回退
- 缺失数据:不完整信息的合理默认值
交互示例
You: "What's the team status?"
Goose: "Here's the current team status:
**alice**
- Active Issues: 3
- Upcoming Issues: 1
- Overdue Issues: 0
- Total Workload: 4
**bob**
- Active Issues: 1
- Upcoming Issues: 2
- Overdue Issues: 1
- Total Workload: 4"
You: "Who should I assign a new task to?"
Goose: "**alice** has the lightest workload:
- Current workload: 2 issues
- Active: 2
- Upcoming: 0
- Overdue: 0"
You: "Show me Bob's schedule for next week"
Goose: "# Schedule for bob (Next 7 days)
**Fix login bug** (open)
- Start: Sep 23, 2025
- End: Sep 25, 2025
- URL: https://github.com/org/repo/issues/123"故障排除
常见问题
- “身份验证失败”错误:
- 验证您的 GITHUB_TOKEN 设置正确 - 检查令牌是否具有所需的权限 - 确保令牌未过期
- “找不到项目”错误:
- 核实组织和项目编号 - 检查您的令牌是否可以访问该项目 - 确保项目存在且可访问
- “未找到事件”错误:
- 检查日期范围(默认从2025年8月开始) - 验证标签筛选器是否与您的问题匹配 - 确保存在符合指定标准的问题
- 服务器未启动:
- 跑 npm install 确保安装了依赖项 - 检查Node.js版本(需要16+) - 验证 index.js 文件具有执行权限
调试模式
对于调试,您可以通过修改服务器代码或在运行服务器时检查错误输出来添加控制台日志记录。
发展
要扩展服务器,请执行以下操作:
- 添加新工具:修改
setupToolHandlers()方法 - 添加新数据源:扩展GitHub API集成
- 添加UI组件:与集成
@mcp-ui/server用于交互式界面 - 添加缓存:实现Redis或基于文件的缓存以获得更好的性能
许可证
MIT许可证-可以根据需要自由修改和分发。
