planio mcp
MCP服务器 红矿 / 计划.通过标准Redmine REST API对问题、时间条目、项目和用户进行完全读/写访问。
兼容 任何Redmine实例.Planio特定功能(清单)可通过功能标志选择加入。
设计理念
此服务器是 意图界面,而不是API代理。代理人说 *它想要什么* --服务器知道了 *怎么*.
- 名称解析 —
tracker_id: "Bug",priority_id: "High",activity_id: "Development"服务器在内部将名称解析为ID。如果不匹配,它将返回有效选项,以便代理自行纠正。 - 项目标识符 —
project_id接受两个数字ID(5)以及Redmine标识符("my-project")所有工具。 - 情境反馈 --预订时间返回问题的时间预算。逾期问题显示警告。代理人不需要后续电话来了解情况。
- 当前用户默认值 —
list_time_entries和get_activity默认为经过身份验证的用户,就像任何登录的UI一样。通过user_id只有当你需要别人的数据时。 - 自动分页 —
list_time_entries自动获取所有匹配的条目(最多500个)。无需手动偏移/限制。 - 向后兼容 --数字ID仍然适用于所有地方。客户端发送
{"tracker_id": 3}如int或"3"因为字符串都被处理了。
设置
1.建造
xcodebuild -scheme planio-mcp -configuration Release build或者在Xcode中打开 Cmd+B.
2.配置
# Required
TICKET_URL=https://your-instance.plan.io
TICKET_KEY=your-api-key-here
# Feature flags (opt-in, default: false)
FEATURE_CHECKLISTS=true地点为 .env 在二进制文件旁边,在工作目录中,或通过环境变量传递。 您还可以指定自定义路径: planio-mcp --env /path/to/.env
配置优先级: ENV vars > .env file
API密钥: Redmine/Planio→ 你的头像→ 我的账户→ 侧边栏→ 显示API密钥
3.连接
克劳德桌面/克劳德代码
添加到MCP配置(claude_desktop_config.json 或 .claude/settings.json):
{
"mcpServers": {
"redmine": {
"command": "/absolute/path/to/planio-mcp",
"env": {
"TICKET_URL": "https://your-instance.plan.io",
"TICKET_KEY": "your-api-key-here",
"FEATURE_CHECKLISTS": "true"
}
}
}
}MCP检验员(测试)
npx @modelcontextprotocol/inspector /absolute/path/to/planio-mcp工具
问题
| 工具 | 说明 |
|---|---|
list_issues | 按项目(ID或标识符)、状态、受让人、跟踪器、日期、自定义字段筛选。跟踪器和版本接受名称。 |
get_issue | 带部分过滤的完整细节(sections 参数)。包括逾期问题的到期日警告。 |
bulk_get_issues | 与进度通知并行获取多个问题。与过滤相同 get_issue. |
create_issue | 使用所有字段创建。跟踪器、状态、优先级、类别、版本和受让人接受名称——服务器解析它们。 |
update_issue | 更新字段,添加注释(notes),管理检查表。与create同名解析。 |
delete_issue | 永久删除 |
add_watcher | 向问题添加观察者 |
remove_watcher | 从问题中删除观察者 |
时间条目
| 工具 | 说明 |
|---|---|
list_time_entries | 默认为当前用户。按项目、问题、日期范围筛选。自动分页最多500个条目。 |
get_time_entry | 单条目详细信息 |
create_time_entry | 根据问题或项目预订时间。活动接受名称。返回时间预算上下文(花费与估计)。 |
update_time_entry | 修改现有条目。活动接受名称。 |
delete_time_entry | 删除条目 |
项目和用户
| 工具 | 说明 |
|---|---|
list_projects | 列出所有项目,或获取带有跟踪器、类别、活动、版本和模块的单个项目 |
get_current_user | 当前已通过身份验证的用户 |
list_users | 搜索/筛选用户(完整列表需要管理员) |
活动
| 工具 | 说明 |
|---|---|
get_activity | 日期范围内的用户活动日志。结合时间条目和日记扫描。按问题分组,包括行动、预订时间和每张票的时间预算。 |
名称解析
所有可解析字段都接受 名字 (字符串)或a 数字ID服务器通过缓存的元数据解析名称。
| 字段 | 示例值 | 范围 |
|---|---|---|
tracker_id | "Bug", "Feature", 1 | 项目范围(回退到全局) |
status_id | "New", "In Progress", "Closed" | 全球 |
priority_id | "Normal", "High", "Urgent" | 全球 |
category_id | "Backend", "Frontend" | 项目范围(需要 project_id) |
fixed_version_id | "Sprint 12", "v2.0" | 项目范围(需要 project_id) |
activity_id | "Development", "Support" | 项目范围(需要项目上下文) |
assigned_to_id | "John", "jane.doe", 42 | 用户搜索(/users.json?name=X) |
如果不匹配,错误消息将列出所有有效选项:
No tracker named 'Defect'. Available: Bug, Feature, Support, Task情境反馈
服务器用可操作的上下文丰富了响应,因此代理不需要后续调用:
- 预订时的时间预算 --之后
create_time_entry,响应包括Issue #4523 time: 23.0h of 30.0h - 活动日志中的时间预算 —
get_activity显示#4523: Fix auth flow (23.0h of 30.0h)每张票 - 到期日警告 —
get_issue和list_issues显示未关闭问题的警告:
- ⚠ OVERDUE by 5 days (due 2026-03-06) - ⚠ Due today (2026-03-11) - ⚠ Due in 2 days (2026-03-13)
功能开关
| 标志 | 默认值 | 描述 |
|---|---|---|
FEATURE_CHECKLISTS | false | 清单支持(需要 Redmine清单插件 或Planio)。添加清单参数以创建/更新工具,在问题输出中显示带有ID的清单项。 |
当特征标志关闭时,相应的参数为 从工具架构中删除 --法学硕士从未见过他们。
提示示例
What did I work on last week?Book 2h on #1234, activity Development, comment "API refactoring"Create a bug "Login broken on Safari" in project my-project, priority High, assign to JohnShow me all open issues assigned to me, sorted by priorityUpdate #1234 status to "In Progress" and assign to meList all Feature issues in Sprint 12建筑
planio-mcp/
├── main.swift # Server setup, tool routing
├── Config.swift # .env parsing, feature flags
├── PlanioClient.swift # HTTP client (actor, cached metadata + issues)
├── Models/
│ ├── Issue.swift # Issue, Journal, Checklist, Relations, shared types
│ ├── IssueFilterOptions.swift # Section filtering for get_issue output
│ ├── MetadataResponses.swift # Statuses, Priorities, Trackers response models
│ ├── TimeEntry.swift
│ ├── Project.swift
│ └── User.swift
├── Tools/
│ ├── ToolDefinitions.swift # JSON Schema definitions (feature-aware)
│ ├── IssueTools.swift # CRUD + watchers + name resolution
│ ├── TimeEntryTools.swift # CRUD + activity resolution + time budget
│ ├── ProjectTools.swift
│ ├── UserTools.swift
│ └── ActivityTools.swift # Composite activity log with time budget per ticket
└── Helpers/
├── NameResolver.swift # Name-to-ID resolution with guided errors
├── ValueHelpers.swift # MCP Value extraction, type-flexible param reading
└── ResponseFormatter.swift # Output formatting, due date warnings备注
- Redmine兼容 -所有端点都是标准的Redmine REST API
- 认证:
X-Redmine-API-Key头球 - 缓存: 问题和元数据(状态、优先级、跟踪器、每个项目的元数据)的5分钟内存TTL。写入时自动失效。当前用户在进程生命周期内被缓存(不可变)。批量提取(
get_activity,bulk_get_issues)跳过已经缓存的问题——TTL内的重复调用几乎是即时的。 - 并行取数:
get_activity和bulk_get_issues使用支持缓存的批量加载(10个并发)和进度通知。 - Swift 5/macOS --用途 mcp swift sdk
