用于 Kaiten API 与 Claude Desktop 集成的 MCP 服务器。允许您直接从 Claude 管理 Kaiten 卡片、评论和空间。
npm install
创建一个 .env 文件:
cp .env.example .env
用您的数据填充它:
KAITEN_API_URL=https://your-domain.kaiten.ru/api/latest
KAITEN_API_TOKEN=your_api_token_here
KAITEN_DEFAULT_SPACE_ID=12345 # 您的主要 space_id
# 可选性能设置(默认值)
KAITEN_MAX_CONCURRENT_REQUESTS=5 # 最大并发请求数(1-20)
KAITEN_CACHE_TTL_SECONDS=300 # 缓存生存时间(秒)(0 = 关闭)
KAITEN_REQUEST_TIMEOUT_MS=10000 # 请求超时时间(毫秒)(1-60000)
如何获取 API 令牌:
.env 文件中npm run build
打开配置文件:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.json添加(替换路径为您完整的路径):
{
"mcpServers": {
"kaiten": {
"command": "node",
"args": [
"/完整的/路径/到/MCP Kaiten/dist/index.js"
],
"cwd": "/完整的/路径/到/MCP Kaiten"
}
}
}
替代方法(无需 .env):
{
"mcpServers": {
"kaiten": {
"command": "node",
"args": ["/完整的/路径/到/MCP Kaiten/dist/index.js"],
"env": {
"KAITEN_API_URL": "https://your-domain.kaiten.ru/api/latest",
"KAITEN_API_TOKEN": "your_api_token_here",
"KAITEN_DEFAULT_SPACE_ID": "12345"
}
}
}
}
完全关闭(关闭 + Q / Alt + F4),然后重新打开 Claude Desktop。
向 Claude 输入:
显示 Kaiten 空间列表
kaiten_get_card - 获取卡片 ID [格式: json/markdown]kaiten_create_card - 创建新卡片kaiten_update_card - 更新卡片kaiten_delete_card - 删除卡片kaiten_search_cards - 使用过滤器搜索卡片 [详细程度: 最小/正常/详细]kaiten_get_space_cards - 获取空间卡片 [详细程度]kaiten_get_board_cards - 获取看板卡片 [详细程度]kaiten_get_card_comments - 获取卡片评论kaiten_create_comment - 创建评论kaiten_update_comment - 更新评论kaiten_delete_comment - 删除评论kaiten_list_spaces 列出所有空间kaiten_get_space - 获取空间 [格式: json/markdown]kaiten_list_boards - 列出看板 [详细程度: 最小/正常/详细]kaiten_get_board - 获取看板 [格式: json/markdown]kaiten_list_columns - 列出看板的状态列kaiten_list_lanes - 列出泳道kaiten_list_types - 列出看板卡片类型kaiten_get_current_user - 获取当前用户kaiten_list_users - 列出用户 [详细程度: 最小/正常/详细]kaiten_cache_invalidate_spaces - 清除空间缓存kaiten_cache_invalidate_boards - 清除看板缓存kaiten_cache_invalidate_users - 清除用户缓存kaiten_cache_invalidate_all - 清除整个缓存kaiten_get_status - 获取服务器状态(缓存、队列、配置、日志、指标)kaiten_set_log_level - 运行时更改登录配置显示卡片 789
创建卡片 "修复 Bug" 在看板 456 上,描述为 "授权问题"
更新卡片 789: 更改状态为 3
在卡片 789 上添加评论: "工作已完成"
最小 - 超紧凑格式(节省 90%):
在看板 456 上查找卡片,最小详细程度
# 输出: 1. [12345] 修复 Bug
# 2. [12346] 添加功能
正常 - 平衡(默认,节省 80%):
在看板 456 上查找卡片
# 输出: 包含 owner、看板、状态、URL 的完整信息
详细 - 完整 API 响应:
在看板 456 上查找卡片,详细详细程度
# 输出: 所有元数据、权限、内部字段
何时使用:
最小 - 快速搜索、获取 ID、短列表正常 - 处理卡片、常规任务(默认)详细 - 调试、集成、需要所有字段Markdown - 易于阅读(默认):
显示卡片 12345
# 输出: # 卡片标题
# 🔗 https://...
# 📋 看板: ...
JSON - 结构化数据:
以 JSON 格式显示卡片 12345
# 输出: {"id": 12345, "title": "...", ...}
何时使用:
markdown - 用户展示、演示(默认)json - 集成、软件处理、解析在看板 456 上查找带有“授权”字样的卡片
显示我在空间 123 中的卡片
在看板 456 上查找所有正在工作的卡片
默认情况下,所有操作都在 KAITEN_DEFAULT_SPACE_ID 指定的空间中执行。这使命令更简洁:
查找关于保加利亚的卡片
# 自动在 DEFAULT_SPACE_ID 中搜索
要搜索所有空间,请明确指定:
查找关于保加利亚的卡片,在所有空间中
默认空间的工作原理:
KAITEN_DEFAULT_SPACE_IDspace_idDO (这样做):
在看板 456 上查找带有“Bug”的卡片
Don't do it (不要这样做):
显示空间中的所有卡片,并从中查找“Bug”
limit - 卡片数量(默认 10)sort_by - 排序:created、updated、titlesort_direction - 方向:asc、desccondition - 1=活动(默认),2=归档在看板 456 上查找 20 张卡片
显示看板 456 上的归档卡片
在看板 456 上查找按更新日期排序的卡片
MCP Kaiten/
├── src/
│ ├── index.ts # MCP 服务器
│ ├── kaiten-client.ts # Kaiten API 客户端
│ ├── config.ts # 配置和验证
│ ├── cache.ts # LRU 缓存
│ ├── schemas.ts # Zod 验证模式
│ ├── utils.ts # 工具函数(11 个辅助函数)
│ ├── logging/ # 日志系统
│ │ ├── index.ts # 导出
│ │ ├── types.ts # TypeScript 类型
│ │ ├── logger.ts # 统一日志器(单例)
│ │ ├── file-logger.ts # Pino 文件日志器
│ │ ├── mcp-logger.ts # MCP 通知日志器
│ │ └── metrics.ts # 性能指标收集器
│ └── middleware/ # HTTP 中间件
│ └── logging-middleware.ts # Axios 日志拦截器
├── evaluations/ # 测试套件
│ ├── README.md # 测试套件指南
│ └── kaiten-eval-template.xml # 包含 10 个问题的模板
├── logs/ # 日志文件(在 .gitignore 中)
├── dist/ # 编译后的文件
├── .env # 配置(不在 git 中)
├── .env.example # 配置示例
├── tsconfig.json # TypeScript 配置
├── package.json
├── README.md # 此文件
├── CHANGELOG.md # 变更历史
└── CLAUDE.md # Claude Code 指南
收到卡片后,返回以下字段:
{
"id": 12345,
"title": "卡片标题",
"url": "https://your-domain.kaiten.ru/space/12345/card/12345",
"description": "完整描述...",
"created": "2025-07-23T07:55:52.934Z",
"updated": "2025-10-01T12:14:47.754Z",
"state": 2,
"owner_id": 67890,
"owner_name": "伊万 伊万诺夫",
"board_id": 54321,
"board_title": "项目看板",
"blocked": true,
"block_reason": "等待团队的数据",
"blocked_at": "2025-08-04T09:10:22.528Z",
"blocker_name": "伊万 伊万诺夫",
"archived": false,
"tags": ["重要", "紧急"],
"members": ["伊万 伊万诺夫", "玛丽亚 彼得罗娃"],
"due_date": "2025-10-19T00:00:00.000Z"
}
npm run build.env 文件/api/latest 结尾使用过滤器和参数 board_id:
# 不好
在空间 123 中查找卡片
# 好
在空间 123 的看板 456 上查找卡片
高级日志
服务器支持灵活的日志系统用于调试和监控。所有日志设置都可以通过环境变量或运行时使用工具 kaiten_set_log_level 控制。
# 启用/禁用日志(默认: true)
KAITEN_LOG_ENABLED=true
# 日志级别(默认: error)
# debug | info | notice | warning | error | critical | alert | emergency
KAITEN_LOG_LEVEL=error
# 将日志发送到 MCP 客户端(默认: false)
KAITEN_LOG_MCP_ENABLED=false
# 记录日志到文件(默认: false)
KAITEN_LOG_FILE_ENABLED=false
# 日志文件路径(默认: ./logs/kaiten-mcp.log)
KAITEN_LOG_FILE_PATH=./logs/kaiten-mcp.log
# 记录所有 HTTP 请求(默认: false)
KAITEN_LOG_REQUESTS=false
# 收集性能指标(默认: false)
KAITEN_LOG_METRICS=false
生产(最少日志):
KAITEN_LOG_LEVEL=error
KAITEN_LOG_FILE_ENABLED=false
KAITEN_LOG_REQUESTS=false
KAITEN_LOG_METRICS=false
开发(适度日志用于调试):
KAITEN_LOG_LEVEL=info
KAITEN_LOG_FILE_ENABLED=true
KAITEN_LOG_REQUESTS=false
KAITEN_LOG_METRICS=true
调试(完整日志用于深入分析):
KAITEN_LOG_LEVEL=debug
KAITEN_LOG_MCP_ENABLED=true
KAITEN_LOG_FILE_ENABLED=true
KAITEN_LOG_REQUESTS=true
KAITEN_LOG_METRICS=true
使用工具 kaiten_set_log_level 在不重启的情况下更改配置:
# 启用调试模式
设置日志级别为 debug,启用文件和指标
# 关闭所有日志
设置日志级别为 off
# 只启用性能指标
设置日志级别为 info,启用指标
服务器日志输出到 stderr。在 macOS/Linux 上,可以通过 Console.app 或从终端运行 Claude 来查看。日志文件位于 logs/ 目录中,格式为 JSON(用于进一步分析)。
启用指标(KAITEN_LOG_METRICS=true)后,可以使用 kaiten_get_status 查看:
显示服务器状态
指标包括:
engines对于调试至关重要: MCP 使用 stdio 传输在客户端和服务器之间通信。
重要:
console.log() 都违反了协议 → 使用 console.error() 用于日志safeLog 包装器保证 stdout 的清洁度(src/config.ts:126-152)node dist/index.js 2>debug.log 或使用 MCP Inspector更多信息:构建一个 MCP 服务器
MIT