凯腾mcp
MCP服务器 回天 -通过协议提供246个使用Kaiten API的工具 模型上下文协议.
机会
一个地区一个模块一个数量 |---------|--------|--------| 卡片 cards | 8 | 评论 comments | 4 | 卡片的参与者 members | 5 | 时间日志 time_logs | 4 | | 标签 | tags | 6 | 检查人员。 checklists | 8 | 锁。 blockers | 5 | 卡片链接 card_relations | 9 | 外部链接。 external_links | 4 | 卡片档案 files | 4 | 订阅者 subscribers | 6 | 空间。 spaces | 5 | | 记录 | boards | 5 | 我的扬声器和扬声器。 columns | 8 | 路。 lanes | 4 | 卡片类型 card_types | 5 | #22312;的特殊属性。 custom_properties | 10 | 文件。 documents | 10 | 韦布基 webhooks | 9 | 自动化与Workflow automations | 11 | 项目与短跑 projects | 13 | 角色和团体 roles_and_groups | 14 | 审计与分析 audit_and_analytics | 11 | |服务台| service_desk | 47 | 图表与分析 charts | 15 | 树的本质。 tree | 2 | 工具。 utilities | 14 | | 总计 | 27个模块 | 246 |
要求
- 码头工人 或 Python>=3.11
- 带有API令牌的凯腾帐户
环境变量
变量是必需的,描述 |------------|-------------|----------| | KAITEN_SUBDOMAIN #22312;公司(yourcompany 为了 yourcompany.kaiten.ru) | | KAITEN_BASE_DOMAIN ÐÐÐÐÐÐÐÐÐÐÐÐ kaiten.ru | | KAITEN_BASE_URL 无:主机API的完整覆盖URL;优先于 KAITEN_SUBDOMAIN/KAITEN_BASE_DOMAIN | | KAITEN_DOMAIN #否#过时的Fallback for向后兼容而不是 KAITEN_SUBDOMAIN | | KAITEN_TOKEN ÐÐÐÐÐÐÐÐÐÐÐÐÐ
填写 KAITEN_TOKEN 只有一种方法可以配置主机:
KAITEN_SUBDOMAIN平常*.kaiten.ruKAITEN_SUBDOMAIN+KAITEN_BASE_DOMAIN自定义域KAITEN_BASE_URL完全Override
KAITEN_BASE_URL 需要非标准域名和展台。实例:
KAITEN_SUBDOMAIN=yourcompany->https://yourcompany.kaiten.ru/api/latestKAITEN_SUBDOMAIN=kaiten+KAITEN_BASE_DOMAIN=kaiten.ru->https://kaiten.kaiten.ru/api/latestKAITEN_BASE_URL=https://kaiten.kaiten.ru->https://kaiten.kaiten.ru/api/latest
对于本地运行Python服务器读取 .env 通过 load_dotenv()过程变量优先于 .env.
快速启动 .env:
cp .env.example .env然后打开 .env 只留下合适的主机配置选项。
连接Claude Code
方法1:Docker(推荐)
收集图像(一次):
docker build -t kaiten-mcp .注册MCP服务器:
claude mcp add kaiten \
-e KAITEN_SUBDOMAIN=yourcompany \
-e KAITEN_TOKEN=your-api-token \
-- docker run --rm -i -e KAITEN_SUBDOMAIN -e KAITEN_TOKEN kaiten-mcp重新启动Claude Code(/exit 并重新启动)–246个Kaiten工具将可用。
对于非标准域,请添加 KAITEN_BASE_DOMAIN 或 KAITEN_BASE_URL:
claude mcp add kaiten \
-e KAITEN_SUBDOMAIN=kaiten \
-e KAITEN_BASE_DOMAIN=kaiten.ru \
-e KAITEN_TOKEN=your-api-token \
-- docker run --rm -i \
-e KAITEN_SUBDOMAIN -e KAITEN_BASE_DOMAIN -e KAITEN_TOKEN kaiten-mcp方法2:Python(Venv)
python3 -m venv .venv
.venv/bin/pip install -e .
claude mcp add kaiten \
-e KAITEN_SUBDOMAIN=yourcompany \
-e KAITEN_TOKEN=your-api-token \
-- .venv/bin/kaiten-mcp重新启动Claude Code。
方法3:Docker Compose
claude mcp add kaiten \
-e KAITEN_SUBDOMAIN=yourcompany \
-e KAITEN_TOKEN=your-api-token \
-- docker compose --project-directory /path/to/kaiten-mcp run --rm -T kaiten-mcp替换 /path/to/kaiten-mcp 到存储库的绝对路径。
重要的是: 使用--project-directory, а не-f旗帜-f仅指定YML文件的路径,但Build Context和.env我仍然在寻找CWD。旗-T这是必需的-没有它,Docker分配伪TTY,这破坏了JSON-RPC协议MCP。
检查
claude mcp list服务器 kaiten 必须具有状态 connected.
连接Claude Desktop
添加到 claude_desktop_config.json:
Docker:
{
"mcpServers": {
"kaiten": {
"command": "docker",
"args": ["run", "--rm", "-i", "-e", "KAITEN_SUBDOMAIN", "-e", "KAITEN_TOKEN", "kaiten-mcp"],
"env": {
"KAITEN_SUBDOMAIN": "yourcompany",
"KAITEN_TOKEN": "your-api-token"
}
}
}
}python
{
"mcpServers": {
"kaiten": {
"command": "/path/to/kaiten-mcp/.venv/bin/kaiten-mcp",
"env": {
"KAITEN_SUBDOMAIN": "yourcompany",
"KAITEN_TOKEN": "your-api-token"
}
}
}
}关于Docker和MCP的重要评论
MCP使用STDIO传输(JSON-RPC通过STDIN/STDOUT)。通过Docker启动:
- 旗
-i(--interactive) — 强制保持STDIN打开。 - 旗
-t(--tty) — 禁止,TTY字符破坏协议。 - 为了
docker compose run-使用-T(关闭TTY) .env文件 不需要 变量通过-e旗帜。- 如果使用
KAITEN_BASE_DOMAIN或KAITEN_BASE_URL,也需要通过-e.
项目结构
src/kaiten_mcp/
server.py # MCP-сервер (stdio transport)
client.py # HTTP-клиент Kaiten API (httpx, rate limiting)
models.py # Доменные перечисления
tools/
compact.py # Компактификация ответов (аватары, лимиты)
spaces.py # Пространства
boards.py # Доски
columns.py # Колонки и подколонки
lanes.py # Дорожки (swimlanes)
cards.py # Карточки (включая bulk-листинг с авто-пагинацией)
comments.py # Комментарии
members.py # Участники и пользователи
time_logs.py # Логи времени
tags.py # Теги
card_types.py # Типы карточек
custom_properties.py # Кастомные свойства
checklists.py # Чеклисты и элементы
blockers.py # Блокировки карточек
card_relations.py # Связи parent/child/planned
external_links.py # Внешние ссылки
files.py # Файлы карточек (загрузка, скачивание, удаление)
subscribers.py # Подписчики карточек
documents.py # Документы и группы документов
webhooks.py # Вебхуки пространств
automations.py # Автоматизации и воркфлоу
projects.py # Проекты и спринты
roles_and_groups.py # Роли, группы, участники пространств
audit_and_analytics.py # Аудит, активность, сохранённые фильтры
service_desk.py # Service Desk (SLA, пользователи, статистика)
charts.py # Графики (CFD, control, cycle/lead time, throughput)
tree.py # Навигация по дереву сущностей
utilities.py # API-ключи, таймеры, календари, корзинаAPI客户端
- 基本URL:
- 默认情况下: https://{subdomain}.kaiten.ru/api/latest - C自定义Base Domain: https://{subdomain}.{base_domain}/api/latest - 在 KAITEN_BASE_URL:Override正常化至 .../api/latest
- 授权:
Bearer代币 - 速度限制:4.5个请求/秒(服务器限制-5个REQ/s)
- HTTP 429自动检索,Exponential Backoff(最多3次)
测试
测试开始 在Docker:
# Все тесты с проверкой 100% покрытия
docker compose -f tests/docker-compose.test.yml up --build test-overseer
# E2E-тесты (нужен .env с KAITEN_SUBDOMAIN/KAITEN_BASE_URL и KAITEN_TOKEN)
docker compose -f tests/docker-compose.test.yml up --build test-e2e-expanded许可证
麻省理工学院
作者
维克托·奥格诺夫
显示器
本存储库及其托管的软件是根据“按原样”和“按可用”原则提供的,没有明示或暗示的保证。提交人未就正确性、可靠性、安全性、特定用途适用性或本决定中无错误作出任何保证或保证。
使用本软件产品即表示您同意承担与使用本软件相关的所有风险,包括但不限于直接、间接、附带或后续损失。
本存储库的作者是本代码的唯一开发者和权利持有人。该解决方案是独立开发和分发的,不是凯腾软件的官方产品或服务。
凯腾软件对性能、性能、使用结果或与使用本解决方案相关的任何后果不承担任何责任。对凯腾软件的任何提及仅供参考,并不意味着认可、支持或附属关系。
