教育MCP服务器
全面收集 三种实用的模型上下文协议(MCP)服务器 旨在通过实际操作示例帮助开发人员理解和学习MCP。
📚 什么是MCP?
这 模型上下文协议(MCP) 是由Anthropic创建的开放标准,使AI应用程序能够以标准化的方式连接到数据源和工具。开发人员不是为每个数据源构建自定义集成,而是根据单一协议进行构建。
MCP服务器公开了三个核心 原语:
- 工具 -可执行的操作(例如,添加项目、搜索、更新状态)
- 资源 -可读取的数据(例如,文件、数据库、API)
- 提示词 -指导人工智能交互的可重用模板
🎯 关于本项目
此项目包含 三台独立的MCP服务器,每个都以中等/实际复杂性级别展示了不同的用例和MCP模式:
1.学习库服务器📖
管理个人学习库(书籍、文章、课程、视频、播客)。
演示:
- 学习资源的CRUD操作
- 进度跟踪和完成状态
- 统计和分析
- 搜索和过滤功能
使用案例:
- 跟踪学习材料
- 衡量学习进度
- 获取下一步学习内容的建议
- 制定学习计划
______________________________________________________________________
2.代码段服务器💻
通过语言检测和标记来存储和管理代码片段。
演示:
- 基于文件的存储和检索
- 语言分类
- 基于标签的组织
- 使用情况跟踪和收藏夹
使用案例:
- 存储可重用的代码片段
- 按语言、标签或关键字搜索
- 获取人工智能辅助的代码解释
- 为特定用例组合片段
______________________________________________________________________
3.任务管理器服务器✅
完成具有依赖关系的任务和项目管理系统。
演示:
- 状态管理(TODO、IN_PROGRESS、BLOCKED等)
- 实体关系(任务↔ 项目)
- 具有周期检测的依赖性跟踪
- 复杂的过滤和统计
使用案例:
- 管理任务和项目
- 跟踪进度和完成情况
- 生成站立报告
- 在人工智能的帮助下规划冲刺
______________________________________________________________________
🚀 快速开始
先决条件
- Node.js 18+和npm
- 克劳德代码 或 克劳德桌面 (使用服务器)
安装
- 克隆或下载此存储库
cd mcp-educational-servers- 安装依赖项
npm install- 构建所有服务器
npm run build这将为所有三台服务器将TypeScript编译为JavaScript。
测试单个服务器
您可以独立构建和测试每个服务器:
# Learning Library
npm run build:learning
# Code Snippets
npm run build:snippets
# Task Manager
npm run build:tasks🔧 配置
克劳德代码
添加到您的克劳德代码设置(~/.config/claude-code/config.json 或通过设置UI):
{
"mcpServers": {
"learning-library": {
"command": "node",
"args": [
"/absolute/path/to/mcp-educational-servers/learning-library/dist/index.js"
]
},
"code-snippets": {
"command": "node",
"args": [
"/absolute/path/to/mcp-educational-servers/code-snippets/dist/index.js"
]
},
"task-manager": {
"command": "node",
"args": [
"/absolute/path/to/mcp-educational-servers/task-manager/dist/index.js"
]
}
}
}重要提示: 替换 /absolute/path/to/ 使用系统上的实际完整路径。
适用于克劳德桌面
添加到 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS)或您操作系统上的同等版本:
{
"mcpServers": {
"learning-library": {
"command": "node",
"args": [
"/absolute/path/to/mcp-educational-servers/learning-library/dist/index.js"
]
},
"code-snippets": {
"command": "node",
"args": [
"/absolute/path/to/mcp-educational-servers/code-snippets/dist/index.js"
]
},
"task-manager": {
"command": "node",
"args": [
"/absolute/path/to/mcp-educational-servers/task-manager/dist/index.js"
]
}
}
}验证配置
配置后,重新启动Claude Code或Claude Desktop。当您与Claude交互时,您应该看到服务器的工具、资源和提示可用。
验证:
- 问克劳德:“有哪些MCP服务器可用?”
- 问克劳德:“给我看看学习库服务器上的工具”
- 问克劳德:“阅读资源library://catalog"
📖 学习路径
如果您是MCP的新手,我们建议您按以下顺序浏览服务器:
1.从学习图书馆开始
- 为什么? 最简单的数据模型,清晰的CRUD操作
- 学习: 基本工具、资源和提示结构
- 尝试: 添加学习项目,搜索它,标记它完成
- 探索: 使用“查看进度”提示
2.转到代码段
- 为什么? 引入更复杂的过滤和使用情况跟踪
- 学习: 基于标签的组织、收藏夹、使用计数
- 尝试: 添加代码片段,按语言/标签搜索
- 探索: 使用“解释片段”和“改进片段”提示
3.完成任务管理器
- 为什么? 关系和依赖关系最为复杂
- 学习: 实体关系、依赖关系跟踪、验证
- 尝试: 创建项目和任务,添加依赖关系
- 探索: 使用“冲刺计划”和“每日站立”提示
🔍 关键概念展示
工具(动作)
每台服务器都实现了执行以下操作的工具:
- 输入验证 使用Zod模式
- 错误处理 有意义的信息
- 状态更新 具有持久性
- 响应格式 遵循MCP惯例
学习库示例:
// addItem tool - Creates a new learning resource
// Input: title, type, author, topic, description, url (optional)
// Output: Success message + created item资源(数据)
服务器通过基于URI的资源公开数据:
- 静态资源 (例如。,
library://catalog) - 动态资源 (例如。,
library://topic/{topicName}) - 过滤视图 (例如。,
snippets://favorites) - 统计 (例如。,
tasks://stats)
URI示例:
library://catalog-所有学习项目snippets://language/typescript-仅限TypeScript代码段tasks://project/{projectId}-特定项目的任务
提示(模板)
提示指导人工智能与结构化工作流程的交互:
- 参数 用于定制
- 上下文 从数据存储中
- 结构化输出 指导
任务管理器示例:
// "sprint-planning" prompt
// Takes: sprintDuration, capacity
// Provides: Backlog analysis, task recommendations, risk assessment🛠️ 项目结构
mcp-educational-servers/
├── package.json # Workspace root
├── tsconfig.json # Shared TypeScript config
├── README.md # This file
├── shared/ # Shared utilities
│ ├── types.ts # Common types
│ └── utils.ts # Helper functions
├── learning-library/
│ ├── src/
│ │ ├── index.ts # Server implementation
│ │ ├── types.ts # Domain types
│ │ └── data.json # Data storage (auto-created)
│ ├── package.json
│ ├── tsconfig.json
│ └── README.md
├── code-snippets/
│ ├── src/
│ │ ├── index.ts
│ │ ├── types.ts
│ │ └── data.json # Data storage (auto-created)
│ ├── package.json
│ ├── tsconfig.json
│ └── README.md
└── task-manager/
├── src/
│ ├── index.ts
│ ├── types.ts
│ └── data.json # Data storage (auto-created)
├── package.json
├── tsconfig.json
└── README.md📝 代码亮点
共享公用设施(shared/)
所有服务器都使用通用实用程序:
- ID生成 -实体的唯一标识符
- 时间戳 -ISO格式时间戳
- 文件I/O -具有错误处理功能的安全JSON读/写
- 格式化错误 -一致的错误消息
- 验证助手 -常见验证功能
数据持久层
- 每台服务器都将数据存储在JSON文件中(
data.json) - 首次运行时自动创建,默认为空状态
- 简单的基于文件的持久性(易于理解和检查)
- 在生产环境中,你会使用一个合适的数据库
类型安全
- Zod模式 用于工具输入的运行时验证
- TypeScript类型 用于编译时安全
- 枚举 用于状态/优先级/类型值
- 接口 延伸
BaseEntity结构一致
🧪 测试服务器
Claude手动测试
配置服务器后,尝试以下交互:
学习图书馆:
Claude, add a book to my learning library:
- Title: "Clean Code"
- Author: "Robert C. Martin"
- Type: BOOK
- Topic: "Software Engineering"
- Description: "A handbook of agile software craftsmanship"代码段:
Claude, add this TypeScript snippet:
- Title: "Debounce Function"
- Language: typescript
- Category: utilities
- Tags: ["async", "performance"]
- Code: [paste code]任务管理器:
Claude, create a project called "Website Redesign" and add 3 tasks for it测试提示
Claude, use the "review-progress" prompt from the learning library to analyze my learningClaude, use the "improve-snippet" prompt to suggest improvements for snippet ID [id]Claude, use the "daily-standup" prompt from task manager to generate today's report🎓 教育价值
你将学到什么
- MCP协议基础
- 服务器如何通过JSON-RPC与客户端通信 - 三个基本元素:工具、资源、提示 - 能力协商和服务器生命周期
- 服务器实现
- 使用SDK设置MCP服务器 - 处理不同类型的请求 - 正确的错误处理和验证
- 数据管理
- MCP服务器的持久模式 - 状态管理和更新 - 过滤和搜索实施
- 最佳实践
- 使用Zod进行输入验证 - TypeScript的类型安全 - 资源URI设计 - 提示模板结构
- 现实世界模式
- CRUD操作 - 实体关系 - 依赖追踪 - 统计和汇总
🔒 安全考虑
这些服务器是 教育实例 并包括基本的安全实践:
✅ 已实施:
- 使用Zod模式进行输入验证
- TypeScript的类型安全
- 不暴露内部的错误处理
- 文件路径验证
⚠️ 未准备好生产:
- 无身份验证/授权
- 仅基于本地文件的存储
- 无速率限制
- SQL注入无输入净化(不使用SQL)
- 静止数据不加密
对于生产用途,您可以添加:
- 身份验证(JWT、OAuth、API密钥)
- 授权和访问控制
- 具有适当安全性的数据库
- 日志记录与监视
- 速率限制
- 输入净化和验证
- 安全配置管理
📚 其他资源
MCP官方文件
了解更多
🤝 贡献
这是一个教育项目。请随意:
- 用新功能扩展服务器
- 为不同域添加更多服务器
- 改进文档
- 分享你的学习经历
📄 许可证
MIT许可证-请随意使用这些示例来学习和构建您自己的MCP服务器。
❓ 常见问题解答
Q: 为什么是三台独立的服务器而不是一台?
A. 证明MCP服务器应该具有集中、单一的责任目的。每个服务器独立管理一个域。
Q: 我可以在生产中使用这些吗?
A. 这些都是教育方面的例子。对于生产,添加身份验证、适当的数据库、错误处理、日志记录和安全措施。
Q: 如何添加我自己的工具/资源/提示?
A. 查看任何服务器中的实现 src/index.ts。对于新工具、资源或提示,请遵循相同的模式。
Q: 如果我收到“找不到命令”错误怎么办?
A. 确保你已经跑过了 npm run build 配置中的路径为 绝对路径,不是相对的。
Q: 我可以直接修改data.json文件吗?
A. 对!JSON文件是人类可读的。您可以直接编辑它们进行测试,但要注意维护有效的JSON结构。
Q: 如何调试服务器问题?
A. 检查服务器日志(它们输出到stderr)。您还可以使用MCP检查器工具进行目视测试。
______________________________________________________________________
快乐学习! 🚀
如果您有疑问或想分享您构建的内容,请随时在存储库上打开问题或讨论。
