简体中文 | English
一个为程序员学习助力的Model Context Protocol服务器。
# 使用npm安装
npm install mcp-for-programmer
# 或使用yarn
yarn add mcp-for-programmer
# 或使用pnpm
pnpm add mcp-for-programmer# 克隆仓库
git clone https://github.com/zaizaizhao/mcp-for-programmer.git
cd mcp-for-programmer
# 安装依赖
pnpm install
# 构建项目
pnpm build本项目使用Rollup进行库的打包,支持以下功能:
- 生成CommonJS和ES模块两种格式
- 自动生成TypeScript类型声明文件
- 支持监视模式进行开发
- 生产环境构建优化
运行以下命令启动开发模式,将自动监视文件变更并实时构建:
npm run dev运行以下命令进行生产环境构建:
npm run build生成的文件将输出到各个包的dist目录中。
MCP-Server for Programmers 是一个基于 Model Context Protocol (MCP) 的服务器实现,专为帮助程序员理解和学习代码而设计。它能够通过提示词模板解析代码,提供代码解释、技术栈分析和最佳实践建议,帮助新手程序员更快地理解复杂代码。
- 📚 DeepWiki 详细文档 - 由 Devin 自动生成的项目详细文档
- 📘 提示词规范文档 - MCP提示词规范与使用指南
- 📦 NPM包 - NPM包页面
- 🚀 基于 MCP 协议,支持多种传输方式(stdio、SSE、streamable、HTTP Stream)
- 📝 支持通过 YAML 文件定义提示词模板
- 🔧 自动将提示词转换为工具,无需手动映射
- 🧩 模板变量替换功能,支持条件渲染
- 🌐 内置 Express 服务器,提供 REST API
- 🔍 支持与 MCP Inspector 集成,方便调试
- 📋 标准化的提示词规范,确保一致性和可维护性
- ✅ MCP 服务器基础架构搭建
- ✅ 多种传输方式支持(stdio、SSE、streamable)
- ✅ YAML 提示词模板加载和解析
- ✅ 提示词自动转换为工具功能
- ✅ 模板变量替换和条件渲染
- ✅ Express REST API 服务
- ✅ 代码解释器提示词实现
- ✅ Rollup构建系统用于库打包
- ✅ HTTP Stream方式调用MCP服务器
- ✅ 提示词规范文档与示例
- 📋 用户界面优化与交互改进
- 📋 更多专业领域提示词模板
- 📋 代码分析与建议功能增强
- 📋 多语言支持扩展
- 📋 性能优化与缓存机制
- 📋 用户配置文件和个性化设置
- 📋 插件系统支持
# 使用标准输入输出(stdio)启动
pnpm run dev
# 或直接使用npx
npx mcp-for-programmer
# 使用 SSE 传输启动
pnpm run dev:sse
# 或直接使用npx
npx mcp-for-programmer --transport sse --port 3322 --endpoint /sse
# 使用 Streamable 传输启动
pnpm run dev:streamable
# 使用 HTTP Stream 方式启动
pnpm run dev:stream
# 在指定端口启动 Express 服务器
pnpm run dev:express
# 使用 Inspector 启动(调试模式)
pnpm run dev:inspector
# 或直接使用npx
npx @modelcontextprotocol/inspector mcp-for-programmer在 prompts 目录下创建 YAML 文件,例如 code-explainer.yaml:
name: code-explainer
description: 解释代码的功能和实现细节
arguments:
- name: code
description: 需要解释的代码片段
required: true
schema:
type: string
- name: language
description: 代码的编程语言
required: false
schema:
type: string
- name: context
description: 代码的上下文或背景信息
required: false
schema:
type: string
messages:
- role: system
content:
type: text
text: "你是一位专业的代码解释器,请解释以下{{language}}代码:\n\n```{{language}}\n{{code}}\n```\n{{#if context}}代码上下文:{{context}}{{/if}}"
- role: user
content:
type: text
text: "请详细解释这段代码的功能、实现原理和可能的优化点。"GET /api/models- 获取可用模型列表POST /api/query- 向模型发送查询GET /api/prompts- 获取所有可用的提示词模板GET /api/prompts/:filename- 获取特定提示词模板的内容
mcp-for-programmer/
├── packages/
│ └── mcp-for-programmer/
│ ├── src/
│ │ ├── backend/ # Express 服务器相关代码
│ │ ├── routes/ # API 路由定义
│ │ ├── tools/ # MCP 工具和提示词处理
│ │ ├── transportUtils/ # 传输方式实现
│ │ ├── index.ts # 入口文件
│ │ └── server.ts # MCP 服务器创建
│ ├── dist/ # 构建输出(不被Git跟踪)
│ ├── prompts/ # 提示词模板 YAML 文件
│ └── package.json
├── scripts/
│ ├── dev.js # 开发构建脚本,带监视模式
│ └── build.js # 生产环境构建脚本
├── prompt-schema.yaml # 提示词规范说明文档
├── prompt-example.yaml # 提示词示例文件
└── package.json
本文档提供了MCP (Model Context Protocol) 服务器的提示词(Prompt)规范和使用指南。
prompt-schema.yaml: 提示词规范说明文档,详细定义了提示词文件的结构和字段要求prompt-example.yaml: 提示词示例文件,展示了如何创建符合规范的提示词
每个提示词文件应遵循以下基本结构:
name: 提示词名称
description: 提示词描述
arguments: # 可选
- name: 参数名称
description: 参数描述
required: true/false
schema:
type: 参数类型
messages:
- role: 角色(system/user/assistant)
content:
type: 内容类型(text/image)
text: 文本内容详细规范请参考 prompt-schema.yaml 文件。
- 在
prompts目录下创建一个新的.yaml文件 - 文件名应与提示词名称保持一致
- 按照规范定义提示词的结构和内容
- 参考
prompt-example.yaml作为创建提示词的模板
提示词文件创建完成后,系统会自动加载并注册为工具。您可以通过以下方式使用这些提示词:
- 在代码中引用提示词名称
- 传递必要的参数
- 调用相应的API
示例代码:
// 引入必要的模块
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp";
import { createToolsForAllPrompts } from "./tools/promptTools";
// 初始化MCP服务器
const server = new McpServer();
// 注册所有提示词工具
await createToolsForAllPrompts(server);
// 使用提示词工具
const result = await server.invoke("gen_prd_prototype_html", {
productConcept: "一个智能家居控制应用"
});
console.log(result);提示词模板支持使用变量和条件语句,使用双花括号 {{}} 语法:
messages:
- role: user
content:
text: |
产品概念:{{productConcept}}
{% if targetUsers %}
目标用户:{{targetUsers}}
{% endif %}根据不同场景和需求,您可以创建多种类型的提示词:
- 代码解释器提示词 - 用于解释代码功能和实现细节
- 产品需求文档生成器 - 用于生成产品需求文档和原型设计
- 技术栈分析提示词 - 分析项目使用的技术栈和架构
- 最佳实践建议提示词 - 提供代码优化和最佳实践建议
- 提示词名称应简洁明了,反映其功能
- 描述应详细说明提示词的用途、输入和预期输出
- 参数应明确定义类型和是否必填
- 消息内容应结构清晰,便于理解和维护
- 定期审查和更新提示词,确保其有效性和安全性
- 为复杂提示词添加详细注释,解释其工作原理
- 测试提示词在不同输入条件下的表现
- 确保YAML格式正确,避免语法错误
- 避免在提示词中包含敏感信息或私有数据
- 测试提示词在不同场景下的表现,确保其稳定性和可靠性
- 提示词应遵循一致的命名规范,便于管理和使用
- 定期更新提示词以适应新的需求和场景
- TypeScript
- Node.js
- Express.js
- Model Context Protocol (MCP)
- Rollup (构建系统)
- YAML
- Zod (类型验证)
欢迎贡献代码、报告问题或提出新功能建议。请先创建 Issue 讨论您的想法,然后再提交 Pull Request。
本项目采用 ISC 许可证。详情请参阅 LICENSE 文件。