规范驱动开发服务器

一个基于FastMCP的服务器,为规范驱动的编码工作流程提供工具、资源和提示,帮助LLM执行结构化、规范驱动的开发。

  • by hamishfromatech
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 hamishfromatech/spec-coding-mcp

使用说明

规范编码MCP服务器

基于FastMCP的服务器,用于规范驱动的编码工作流程。提供工具、资源和提示,以帮助LLM执行结构化、规范驱动的开发。

特性

  • FastMCP框架:基于FastMCP 2.x构建的现代Python MCP服务器
  • JSON存储:所有数据都存储在简单的JSON文件中
  • 完成工作流程:规格→ 规划→ 任务→ 回顾→ 完成
  • MCP协议:完全支持工具、资源和提示
  • TOON压缩:令牌减少30-60%,以实现高效的上下文窗口使用

令牌压缩

默认情况下,所有工具输出都使用 TOON格式 (面向令牌的对象表示法),与JSON相比,令牌使用量减少了30-60%。这有助于在处理大型规范时防止上下文窗口拥塞。

示例比较:

JSON(630个字符,~157个标记):

{
  "id": "001-user-auth",
  "title": "User Authentication",
  "requirements": [
    {"id": "REQ-001", "title": "Login", "priority": "high"}
  ]
}

TOON(310个字符,约77个令牌):

id: 001-user-auth
title: User Authentication
[1,]{id,title,priority}:
REQ-001,Login,high

使用 format: "json" 如果需要,可以在任何工具中使用参数来获取标准JSON输出。

安装

pip install -e .

或者直接安装依赖项:

pip install fastmcp

使用Claude Desktop

添加到您的Claude桌面配置(~/.claude/config.json 或 %APPDATA%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "spec-coding": {
      "command": "uvx",
      "args": ["spec-coding-mcp"],
      "cwd": "/path/to/your/project"
    }
  }
}

或者直接使用Python:

{
  "mcpServers": {
    "spec-coding": {
      "command": "python",
      "args": ["-m", "spec_coding.server"],
      "cwd": "/path/to/your/project"
    }
  }
}

作为Claude Code插件安装

这个仓库也是一个Claude Code插件+市场。一步完成安装:

/plugin marketplace add hamishfromatech/spec-coding-mcp
/plugin install spec-coding@spec-coding-marketplace

或者直接添加本地结账:

/plugin marketplace add /path/to/spec-coding-mcp
/plugin install spec-coding@spec-coding-marketplace

安装插件会捆绑MCP服务器(通过 .mcp.json,与 uv run --project ${CLAUDE_PLUGIN_ROOT} spec-coding-mcp) 和 一套技能 编排工作流:

技能 加载时
spec-workflow 完整规格→ Plan → 任务→ 回顾→ 完整流程
spec-create 定义特征规范及其要求
spec-plan 规划实施、架构和风险
spec-tasks 将计划分解为任务并跟踪进度
spec-review 审查已完成的工作并归档功能

当作为插件安装时, SPECS_DIR 默认情况下未设置,因此读取规格 并写在 ./specs 相对于项目的工作目录。点 其他地方的服务器 spec_set_project(path) 或 SPECS_DIR 有人是。

瞄准一个项目

默认情况下,服务器读取/写入以下规范 ./specs 相对于其工作 目录。您可以通过三种方式覆盖它(最高优先级优先):

  1. spec_set_project(path) --从会话(如果缺少则创建)中将服务器指向项目的specs目录。
  2. 这个 SPECS_DIR 环境变量。
  3. ./specs (默认),或通过 path 到 spec_init.

可用工具

项目管理

工具 说明
spec_init 初始化新的规范驱动项目(可选 path 以目录为目标)
spec_set_project 将服务器指向项目的规范目录
spec_list 列出项目中的所有功能
spec_current 获取当前活动的功能

功能管理

工具 说明
spec_create 创建新的功能规范
spec_get 获取完整的功能详细信息
spec_update 更新功能字段
spec_delete 删除功能(仅草稿)

需求

工具 说明
spec_add_requirement 添加带有验收标准的要求
spec_update_requirement 更新特定要求

规划

工具 说明
spec_plan 制定实施计划
spec_get_plan 获取实施计划

任务

工具 说明
spec_tasks 根据计划创建任务列表(如果放弃进度,则拒绝;通过 overwrite=True 替换)
spec_get_tasks 获取某个功能的所有任务
spec_update_task 更新任务的状态
spec_add_task 添加新任务

审核并完成

工具 说明
spec_review 创建具有批准状态的审核(将状态设置为 review;不存档)
spec_get_review 获取某个功能的评论
spec_set_status 手动设置功能状态(不 completed --使用 spec_complete)
spec_complete 将功能标记为完整并存档

导入/导出

工具 说明
spec_export 将功能导出为JSON
spec_import 从JSON导入功能(如果ID存在,则拒绝;通过 overwrite=True 替换)
spec_analyze 分析TOON和JSON格式之间的令牌节省

输出格式

所有工具均支持 format 参数:

  • format: "toon" (默认)-压缩TOON格式,令牌减少30-60%
  • format: "json" -兼容标准JSON格式
# Get feature in TOON format (default, more efficient)
spec_get(feature_id="001-auth")

# Get feature in JSON format (when needed for parsing)
spec_get(feature_id="001-auth", format="json")

工作流

1.初始化项目

Use spec_init to create the specs directory structure

2.创建规范

spec_create(
  feature_id="001-user-auth",
  title="User Authentication",
  description="Implement secure user authentication with login, logout, and session management",
  tech_stack=["Python", "FastAPI", "JWT"],
  constraints=["Must be GDPR compliant", "Support 2FA"]
)

3.添加要求

spec_add_requirement(
  feature_id="001-user-auth",
  req_id="REQ-001",
  title="User Login",
  description="Users can log in with email and password",
  priority="high",
  acceptance_criteria=[
    "User can enter email and password",
    "Invalid credentials show appropriate error",
    "Successful login creates session",
    "Session persists for 24 hours"
  ]
)

4.制定计划

spec_plan(
  feature_id="001-user-auth",
  overview="Implement JWT-based authentication with FastAPI",
  architecture="API Gateway -> Auth Service -> User Database",
  components=[
    {"name": "Auth Service", "purpose": "Handle authentication logic", "files": ["auth/service.py"]},
    {"name": "Session Manager", "purpose": "Manage user sessions", "files": ["auth/session.py"]}
  ],
  risks=[
    {"risk": "Token theft", "likelihood": "Medium", "impact": "High", "mitigation": "Use short-lived tokens with refresh"}
  ]
)

5.创建任务

spec_tasks(
  feature_id="001-user-auth",
  tasks=[
    {"id": "TASK-001", "title": "Create auth module", "dependencies": []},
    {"id": "TASK-002", "title": "Implement login endpoint", "dependencies": ["TASK-001"]},
    {"id": "TASK-003", "title": "Add session management", "dependencies": ["TASK-001"]}
  ]
)

6.跟踪进度

spec_update_task(feature_id="001-user-auth", task_id="TASK-001", status="in_progress")
spec_update_task(feature_id="001-user-auth", task_id="TASK-001", status="completed")

7.审查并完成

spec_review(
  feature_id="001-user-auth",
  approved=True,
  feedback=["Clean implementation", "Good test coverage"],
  recommendations=["Consider adding rate limiting"]
)

spec_complete(feature_id="001-user-auth")

目录结构

specs/
├── project.json              # Project metadata
├── templates/                # Template files
│   ├── spec_template.json
│   ├── plan_template.json
│   └── tasks_template.json
├── active/                   # Active features
│   └── <feature-id>/
│       ├── spec.json         # Feature specification
│       ├── plan.json         # Implementation plan
│       ├── tasks.json        # Task list
│       └── review.json       # Review (optional)
└── completed/                # Completed features
    └── <feature-id>/
        └── ...

提示词

服务器提供提示以指导规范驱动的工作流程:

提示 描述
spec_workflow_start 启动新的规范驱动工作流
spec_create_from_idea 根据想法描述创建规范
spec_plan_feature 为功能生成实施计划
spec_breakdown_tasks 将计划分解为可操作的任务
spec_review_checklist 为功能生成审查清单

资源

通过MCP资源访问特征数据:

  • spec://features/{feature_id}/spec -功能规格
  • spec://features/{feature_id}/plan -实施计划
  • spec://features/{feature_id}/tasks -任务列表

发展

直接运行服务器:

python -m spec_coding.server

运行测试:

python -m pytest tests/

建筑学

内置于 FastMCP,它提供:

  • 声明式装饰器: @mcp.tool, @mcp.resource, @mcp.prompt
  • 类型安全参数:使用 Annotated[type, "description"] 用于自动模式生成
  • 清洁代码:比原始MCP SDK减少约60%的样板
  • 自动stdio处理:简单 mcp.run() 入口点

关于

由以下人员制造和维护 A-Tech私人有限公司.

在YouTube上关注: @哈米什弗拉梅塔什

许可证

麻省理工学院

作者

由以下人员制造和维护 A-Tech私人有限公司.

在YouTube上关注: @哈米什弗拉梅塔什

反馈与社区

发现这个MCP服务器真的有用吗?我很想收到你的来信。