项目协议服务器

Toony MCP服务器是一个为Claude提供项目管理、问题跟踪、评论管理、工作流和资源管理的协议服务器。

  • by bikerlfh
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 bikerlfh/toony-mcp

使用说明

Toony MCP服务器

MCP(模型上下文协议)服务器 图尼公开了20个工具,允许Claude管理项目、问题、评论、工件、工作流和工作区资源。

需求

安装

curl -fsSL https://raw.githubusercontent.com/bikerlfh/toony-mcp/main/install.sh | bash

安装程序将:

  1. 将仓库克隆到 ~/.toony/mcp-server/
  2. 提示您 TOONY_API_URL 和 TOONY_API_KEY
  3. 在Claude Code中注册MCP服务器

安装后重新启动Claude Code。

更新

~/.toony/mcp-server/update.sh

在不更改配置的情况下更新代码。

卸载

~/.toony/mcp-server/uninstall.sh

删除MCP服务器并将其从Claude Code中注销。

配置

变量 描述 默认值
TOONY_API_URL 后端API基本URL http://localhost:8000/api
TOONY_API_KEY 用户API密钥(承载令牌) 必需

API密钥是从Toony web应用程序中的用户配置文件页面生成的。

可用工具

项目(5个工具)

工具 说明 参数
list_projects 列出所有可访问的项目 search (可选)
get_project 获取项目的详细信息 project_id (UUID)
list_project_members 列出成员及其角色 project_id (UUID)
list_project_milestones 列出项目里程碑 project_id (UUID)
list_project_cycles 列出项目周期/冲刺 project_id (UUID)

问题(12个工具)

工具 说明 参数
get_issue 通过UUID或标识符获取问题详细信息(例如。, ENG-42) issue_id
list_project_issues 列出过滤器的问题 project_id, status, priority, assignee_id, milestone_id, cycle_id, label_ids, search (除project_id外均为可选)
get_my_issues 获取所有项目中分配给经过身份验证的用户的问题 status, priority, search (可选)
create_issue 创建新问题 project_id, title (必填); description, status, priority, assignee_id, milestone_id, cycle_id, label_ids, due_date (可选)
update_issue 更新现有问题 issue_id, project_id (必填);rest可选--通过 "none" 清除字段
list_issue_comments 列出对某个问题的评论 issue_id, project_id
create_comment 向问题添加评论 issue_id, project_id, body (支持降价)
list_issue_activities 查看问题的更改历史记录 issue_id, project_id
list_issue_artifacts 列出所附工件(计划、规格等) issue_id, project_id
create_artifact 将工件发布到问题 issue_id, project_id, title, artifact_type, content; requires_approval (可选)
update_artifact 更新现有工件 artifact_id (必填); title, content, status, requires_approval (可选)
delete_artifact 删除工件 artifact_id (UUID)

允许的值 status: BACKLOG, TODO, IN_PROGRESS, IN_REVIEW, DONE, CANCELED

允许的值 priority: NONE, URGENT, HIGH, MEDIUM, LOW

允许的值 artifact_type: PLAN, DESIGN_DOC, TECHNICAL_SPEC, TEST_PLAN, OTHER

工件的允许值 status: DRAFT, PENDING_APPROVAL, IN_REVIEW, APPROVED, REJECTED, REVISION_REQUESTED, SUPERSEDED

工作流程(1个工具)

工具 说明 参数
get_issue_workflow 获取问题的已解决工作流作为YAML issue_id (UUID)

工作区(2个工具)

工具 说明 参数
list_labels 列出标记问题的可用标签 search (可选)
search_global 跨问题、项目、团队和标签的全球搜索 organization_id (UUID), query

使用示例

# Query projects
"List my projects"
"Give me the details for project abc-123"
"Who are the members of project X?"

# Manage issues
"What are my pending issues?"
"Show me the urgent issues in project Y"
"Create an issue in project Z titled 'Fix login bug' with priority HIGH"
"Change the status of issue ENG-42 to IN_REVIEW"

# Comments and artifacts
"Add a comment to issue ENG-42: 'Fix deployed to staging'"
"Show me the activity history of issue ENG-10"
"Publish a technical plan on issue ENG-42"

# Search
"Search for 'authentication' in organization X"
"List the labels containing 'bug'"

建筑

Claude (MCP Client)
       |
       v
Toony MCP Server (FastMCP)
       |
       v
ToonyClient (HTTP + Bearer Token)
       |
       v
Django Backend API (/api/...)
  1. Claude调用MCP工具
  2. 服务器检索全局 ToonyClient 例子
  3. 客户端使用Bearer令牌发出HTTP请求
  4. 后端以JSON响应
  5. 服务器序列化并将结果返回给Claude

发展

在本地运行

git clone https://github.com/bikerlfh/toony-mcp.git
cd toony-mcp
cp .env.example .env   # edit with your values
uv run toony-mcp

添加新工具

  1. 在内部相应模块中定义函数 src/toony_mcp/tools/:
from toony_mcp.server import mcp, get_client

@mcp.tool()
def my_new_tool(param: str) -> str:
    """Description of what the tool does."""
    client = get_client()
    result = client._get(f"/my-endpoint/{param}/")
    return json.dumps(result)
  1. 如果创建新的工具模块,请将其导入 server.py:
def main():
    import toony_mcp.tools.issues
    import toony_mcp.tools.projects
    import toony_mcp.tools.workspace
    import toony_mcp.tools.my_module  # new
    mcp.run()
  1. 如果你需要一个新的客户端方法,请将其添加到 client.py.