Chapter 6:OpenSpec 与 MCP 生态
学习目标
- 理解 MCP(Model Context Protocol)协议的核心概念
- 掌握 OpenSpec 在 AI 编程工具生态中的定位
- 了解 OpenSpec + MCP 集成的技术方案
- 理解 AI 编程范式的演进趋势
概念讲解(Why)
MCP 协议是什么
MCP(Model Context Protocol,模型上下文协议)是由 Anthropic 于 2024 年底推出的开放标准,旨在解决 AI 助手与外部工具和数据源集成的标准化问题。
在 MCP 之前,每个 AI 编程工具(如 Cursor、Claude Code、Copilot)都有自己独特的工具调用方式:
传统方式: ┌──────────┐ 私有API ┌──────────┐ │ AI 助手 │ ←──────────────→ │ 工具 │ └──────────┘ └──────────┘ ↑ ↑ │ │ Claude API GitHub API Cursor API File System Copilot API Database ... ...MCP 之后:
MCP 方式: ┌──────────┐ 标准协议 ┌──────────┐ │ AI 助手 │ ←────────────→ │ MCP │ └──────────┘ │ Server │ └──────────┘ ↑ │ 任何实现 MCP 的工具 (GitHub, File System, DB...)为什么 OpenSpec 需要关注 MCP
OpenSpec 作为规范驱动开发的框架,需要与 AI 编程助手紧密协作。MCP 协议提供了标准化的工具调用能力,OpenSpec 可以通过 MCP Server 的形式被任何支持 MCP 的 AI 助手调用。
这种集成带来了以下优势:
- 广泛兼容性:OpenSpec 可以被任何 MCP 兼容的 AI 助手使用
- 工具互操作:OpenSpec 可以与其他 MCP 工具(如 GitHub、数据库)无缝协作
- 生态系统融入:OpenSpec 成为 MCP 生态的一部分
原理分析(How)
MCP 协议架构
┌─────────────────────────────────────────────────────────────┐ │ MCP 协议架构图 │ ├─────────────────────────────────────────────────────────────┤ │ │ │ ┌─────────────┐ │ │ │ AI 助手 │ │ │ │ (MCP Client) │ │ │ └──────┬──────┘ │ │ │ stdio / SSE │ │ │ │ │ ┌──────▼──────┐ │ │ │ MCP Server │ ←── 标准接口定义 │ │ └──────┬──────┘ │ │ │ │ │ ┌──────▼──────┐ ┌─────────────┐ │ │ │ Resources │ ←──→│ File System│ │ │ └─────────────┘ └─────────────┘ │ │ ┌─────────────┐ ┌─────────────┐ │ │ │ Tools │ ←──→│ GitHub │ │ │ └─────────────┘ └─────────────┘ │ │ ┌─────────────┐ ┌─────────────┐ │ │ │ Prompts │ ←──→│ Database │ │ │ └─────────────┘ └─────────────┘ │ │ │ └─────────────────────────────────────────────────────────────┘MCP 三种核心原语
1. Resources(资源)
提供 AI 可读取的数据:
// MCP Server 定义constuserDataResource={uri:'user://current/profile',name:'Current User Profile',mimeType:'application/json',};// AI 调用constprofile=awaitmcpClient.request({method:'resources/read',params:{uri:'user://current/profile'}});2. Tools(工具)
提供 AI 可调用的函数:
// MCP Server 定义constopenspecTool={name:'openspec_validate',description:'验证 OpenSpec 规范文件',inputSchema:{type:'object',properties:{specPath:{type:'string'}}}};// AI 调用constresult=awaitmcpClient.request({method:'tools/call',params:{name:'openspec_validate',arguments:{specPath:'auth/spec.md'}}});3. Prompts(提示模板)
提供可复用的提示:
// MCP Server 定义constreviewPrompt={name:'spec_review',description:'规范评审模板',arguments:[{name:'specContent',required:true}],template:`请评审以下规范: { {specContent}} 评审维度: 1. 功能范围是否清晰 2. 接口定义是否完整 3. 验收标准是否可测试`};// AI 调用constresponse=awaitmcpClient.request({method:'prompts/get',params:{name:'spec_review',arguments:{specContent:'...'}}});OpenSpec MCP Server 设计
OpenSpec 可以实现为一个 MCP Server,为 AI 助手提供以下能力:
// openspec-mcp-server/src/index.tsimport{Server}from'@modelcontextprotocol/sdk/server';import{StdioServerTransport}from'@modelcontextprotocol/sdk/server/stdio';constserver=newServer({name:'openspec-server',version:'1.0.0'});// 注册工具server.setRequestHandler('tools/list',async()=>({tools:[{name:'openspec_init',description:'初始化 OpenSpec 项目',inputSchema