Taiga MCP Bridge 是一个强大的集成层,它连接了项目管理平台 Taiga 和模型上下文协议(MCP),使AI工具和工作流程能够无缝地与Taiga资源交互。
该桥提供了一整套工具和资源,供AI代理使用:
通过使用MCP标准,此桥允许AI系统保持对项目状态的上下文感知,并以编程方式执行复杂的项目管理工作。
该桥支持以下Taiga资源及其完整的CRUD操作:
该项目使用 uv 进行快速可靠的Python包管理。
# 克隆仓库
git clone https://github.com/your-org/pyTaigaMCP.git
cd pyTaigaMCP
# 安装依赖
./install.sh
用于开发(包括测试和代码质量工具):
./install.sh --dev
如果你更喜欢手动安装:
# 生产依赖
uv pip install -e .
# 包括开发依赖
uv pip install -e ".[dev]"
该桥可以通过环境变量或.env文件进行配置:
| 环境变量 | 描述 | 默认值 |
|---|---|---|
TAIGA_API_URL | Taiga API的基本URL | http://localhost:9000 |
SESSION_EXPIRY | 会话过期时间(秒) | 28800(8小时) |
TAIGA_TRANSPORT | 传输模式(stdio 或 sse) | stdio |
REQUEST_TIMEOUT | API请求超时时间(秒) | 30 |
MAX_CONNECTIONS | 最大HTTP连接数 | 1 |
MAX_KEEPALIVE_CONNECTIONS | 最大保持连接数 | 5 |
RATE_LIMIT_REQUESTS | 每分钟最大请求数 | 100 |
LOG_LEVEL | 日志级别 | INFO |
LOG_FILE | 日志文件路径 | taiga_mcp.log |
在项目根目录下创建一个.env文件来设置这些值:
TAIGA_API_URL=https://api.taiga.io/api/v1/
TAIGA_TRANSPORT=sse
LOG_LEVEL=DEBUG
在Claude App或Cursor的mcp设置部分粘贴以下json:
{
"mcpServers": {
"taigaApi": {
"command": "uv",
"args": [
"--directory",
"<本地pyTaigaMCP文件夹路径>",
"run",
"src/server.py"
],
"env": {
"TAIGA_TRANSPORT": "<stdio|sse>",
"TAIGA_API_URL": "<Taiga API URL(例如:http://localhost:9000)>",
"TAIGA_USERNAME": "<Taiga用户名>",
"TAIGA_PASSWORD": "<Taiga密码>"
}
}
}
启动MCP服务器:
# 默认stdio传输
./run.sh
# 对于SSE传输
./run.sh --sse
或者手动启动:
# 对于stdio传输(默认)
uv run python src/server.py
# 对于SSE传输
uv run python src/server.py --sse
服务器支持两种传输模式:
你可以通过多种方式设置传输模式:
run.sh或server.py的--sse标志(默认是stdio)TAIGA_TRANSPORT环境变量.env文件中添加TAIGA_TRANSPORT=sse这个MCP桥梁使用基于会话的认证模型:
登录:客户端必须首先使用login工具进行身份验证:
session = client.call_tool("login", {
"username": "your_taiga_username",
"password": "your_taiga_password",
"host": "https://api.taiga.io" # 可选
})
# 保存响应中的session_id
session_id = session["session_id"]
使用工具和资源:在每次API调用中包含session_id:
# 对于资源,在URI中包含session_id
projects = client.get_resource(f"taiga://projects?session_id={session_id}")
# 对于特定项目的资源
epics = client.get_resource(f"taiga://projects/123/epics?session_id={session_id}")
# 对于工具,将session_id作为参数
new_project = client.call_tool("create_project", {
"session_id": session_id,
"name": "New Project",
"description": "Description"
})
检查会话状态:你可以检查会话是否仍然有效:
status = client.call_tool("session_status", {"session_id": session_id})
# 返回有关会话有效性及剩余时间的信息
注销:完成时,可以注销以终止会话:
client.call_tool("logout", {"session_id": session_id})
这里是一个完整的示例,用于创建带有史诗和用户故事的项目:
from mcp.client import Client
# 初始化MCP客户端
client = Client()
# 认证并获取session_id
auth_result = client.call_tool("login", {
"username": "admin",
"password": "password123",
"host": "https://taiga.mycompany.com"
})
session_id = auth_result["session_id"]
# 创建新项目
project = client.call_tool("create_project", {
"session_id": session_id,
"name": "My New Project",
"description": "A test project created via MCP"
})
project_id = project["id"]
# 创建史诗
epic = client.call_tool("create_epic", {
"session_id": session_id,
"project_id": project_id,
"subject": "User Authentication",
"description": "Implement user authentication features"
})
epic_id = epic["id"]
# 在史诗中创建用户故事
story = client.call_tool("create_user_story", {
"session_id": session_id,
"project_id": project_id,
"subject": "User Login",
"description": "As a user, I want to log in with my credentials",
"epic_id": epic_id
})
# 完成后注销
client.call_tool("logout", {"session_id": session_id})
pyTaigaMCP/
├── src/
│ ├── server.py # 实现MCP服务器和工具
│ ├── taiga_client.py # 具有所有CRUD操作的Taiga API客户端
│ ├── tools.py # MCP工具定义
│ └── config.py # 使用Pydantic的配置设置
├── tests/
│ ├── conftest.py # 共享的pytest插件
│ ├── unit/ # 单元测试
│ └── integration/ # 集成测试
├── pyproject.toml # 项目配置和依赖
├── install.sh # 安装脚本
├── run.sh # 服务器执行脚本
└── README.md # 项目文档
使用pytest运行测试:
# 运行所有测试
pytest
# 仅运行单元测试
pytest tests/unit/
# 仅运行集成测试
pytest tests/integration/
# 运行具有特定标记的测试
pytest -m "auth" # 认证测试
pytest -m "core" # 核心功能测试
# 运行具有覆盖率报告的测试
pytest --cov=src
使用包含的检查工具进行调试:
# 默认stdio传输
./inspect.sh
# 对于SSE传输
./inspect.sh --sse
# 对于开发模式
./inspect.sh --dev
所有API操作返回标准化的错误响应,格式如下:
{
"status": "error",
"error_type": "ExceptionClassName",
"message": "详细错误消息"
}
该桥实现了多项性能优化:
欢迎贡献!请随意提交Pull Request。
git checkout -b feature/amazing-feature)./install.sh --dev)pytest)git commit -m 'Add some amazing feature')git push origin feature/amazing-feature)本项目根据MIT许可证发布 - 查看LICENSE文件了解详情。