MCP ExplorerExplorer

Mcp For Programmer

@zaizaizhaoon 22 days ago
1 MIT
FreeCommunity
AI Systems
A Model Context Protocol server that empowers programmers in their learning journey.

Overview

What is Mcp For Programmer

mcp-for-programmer is a Model Context Protocol server designed to assist programmers in their learning journey.

Use cases

Use cases include interactive coding tutorials, collaborative programming sessions, and enhancing IDE functionalities for better learning experiences.

How to use

To use mcp-for-programmer, developers can set up the server in their local environment and connect it with their programming tools to facilitate learning and model context management.

Key features

Key features include real-time context management, support for various programming languages, and integration capabilities with popular development environments.

Where to use

mcp-for-programmer can be used in educational settings, software development projects, and anywhere programmers need to manage context effectively.

Content

MCP-Server for Programmers

简体中文 | English

一个为程序员学习助力的Model Context Protocol服务器。

GitHub stars
GitHub forks
GitHub issues
License
npm version
npm downloads

安装

使用NPM包(推荐)

# 使用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) 的服务器实现,专为帮助程序员理解和学习代码而设计。它能够通过提示词模板解析代码,提供代码解释、技术栈分析和最佳实践建议,帮助新手程序员更快地理解复杂代码。

文档

特性

  • 🚀 基于 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: "请详细解释这段代码的功能、实现原理和可能的优化点。"

API 接口

  • 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 提示词规范与使用指南

本文档提供了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 文件。

如何创建新的提示词

  1. prompts 目录下创建一个新的 .yaml 文件
  2. 文件名应与提示词名称保持一致
  3. 按照规范定义提示词的结构和内容
  4. 参考 prompt-example.yaml 作为创建提示词的模板

如何使用提示词

提示词文件创建完成后,系统会自动加载并注册为工具。您可以通过以下方式使用这些提示词:

  1. 在代码中引用提示词名称
  2. 传递必要的参数
  3. 调用相应的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 %}

提示词类型与用途

根据不同场景和需求,您可以创建多种类型的提示词:

  1. 代码解释器提示词 - 用于解释代码功能和实现细节
  2. 产品需求文档生成器 - 用于生成产品需求文档和原型设计
  3. 技术栈分析提示词 - 分析项目使用的技术栈和架构
  4. 最佳实践建议提示词 - 提供代码优化和最佳实践建议

最佳实践

  1. 提示词名称应简洁明了,反映其功能
  2. 描述应详细说明提示词的用途、输入和预期输出
  3. 参数应明确定义类型和是否必填
  4. 消息内容应结构清晰,便于理解和维护
  5. 定期审查和更新提示词,确保其有效性和安全性
  6. 为复杂提示词添加详细注释,解释其工作原理
  7. 测试提示词在不同输入条件下的表现

注意事项

  • 确保YAML格式正确,避免语法错误
  • 避免在提示词中包含敏感信息或私有数据
  • 测试提示词在不同场景下的表现,确保其稳定性和可靠性
  • 提示词应遵循一致的命名规范,便于管理和使用
  • 定期更新提示词以适应新的需求和场景

技术栈

  • TypeScript
  • Node.js
  • Express.js
  • Model Context Protocol (MCP)
  • Rollup (构建系统)
  • YAML
  • Zod (类型验证)

贡献

欢迎贡献代码、报告问题或提出新功能建议。请先创建 Issue 讨论您的想法,然后再提交 Pull Request。

许可证

本项目采用 ISC 许可证。详情请参阅 LICENSE 文件。

Star 历史

Star History Chart

Tools

No tools

Comments

Recommend MCP Servers

View All MCP Servers