MCP协议实践库

一个用于学习和实践Model Context Protocol (MCP)的综合项目,包含多种服务器实现和测试用例。

  • by Tayyaba-Akbar956
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Tayyaba-Akbar956/MCP-Practice

使用说明

MCP实践库

一个全面的学习项目,用于理解使用FastMCP和JSON-RPC 2.0的模型上下文协议(MCP)实现。此存储库演示了服务器-客户端通信、错误处理和协议合规性测试。

📋 目录

🎯 概述

该项目使用划分工具实现了一个简单的MCP服务器,并包括对以下内容的全面测试:

  • 有效的JSON-RPC 2.0请求
  • 错误处理和验证
  • 协议合规
  • HTTP和JSON响应分析

📁 项目结构

MCP_PRACTICE/
├── main.py              # FastMCP server for Divide tool
├── client.py            # HTTP client with 23 test requests
├── Resources.py         # Resources server (files, web content)
├── prompts.py           # Prompts server (Github Profile, format, divide)
├── sampling.py          # Sampling server (LLM interaction)
├── logs_progress.py     # Logs and progress server
├── roots.py             # Roots server (project analysis)
├── transport1.py        # Alternative transport implementation
├── statefulHTTP.py      # Stateful HTTP example
├── Tools.py             # Additional tools (Quiz, Summarize)
├── formula.py           # Sample resource file with formulas
├── Instructions.md      # Comprehensive testing guide
├── questions.md         # Learning questions about MCP
├── answers.md           # answer of all questions from question.md
└── reponses.md          # Expected responses for all 23 requests

✨ 特性

  • 多个MCP服务器:6种不同的服务器实现(工具、资源、提示、采样、日志、根)
  • 综合测试:6个测试阶段的23个测试用例
  • 工具实施:部门、测验生成、网络摘要
  • 资源处理:文件读取、web内容获取、模板化资源
  • 及时管理:Github配置文件查找、文档格式化、数字分割提示
  • MCP协议特性:采样请求、日志记录、进度跟踪、根分析
  • 错误验证:测试格式错误的请求和边缘情况
  • 双重测试方法:同时支持Python客户端和Postman

🔧 先决条件

  • Python 3.8+
  • uv 包管理器
  • 邮递员(可选,用于手动测试)

📦 安装

  1. 克隆存储库:
git clone https://github.com/Tayyaba-Akbar956/MCP-Practice.git
cd "MCP PRACTICE"
  1. 安装依赖项:
uv pip install fastmcp requests uvicorn

🚀 用法

此项目需要运行不同的服务器,具体取决于要测试的功能。

模式1:工具测试(请求1-11)

对于测试工具(部门、问候语)和错误处理:

uv run uvicorn main:app --reload

服务器将在以下时间启动 http://localhost:8000/mcp/

模式2:资源测试(请求12-15)

对于测试资源(文件读取、Web获取):

uv run uvicorn Resources:app --reload

服务器将在以下时间启动 http://localhost:8000/mcp/

模式3:提示测试(请求16-19)

对于测试提示:

uv run uvicorn prompts:app --reload

模式4:抽样测试(请求20-21)

对于测试采样(LLM交互):

uv run uvicorn sampling:app --reload

模式5:日志测试(请求22)

关于测试日志和进度:

uv run uvicorn logs_progress:app --reload

模式6:根测试(请求23)

测试根:

uv run uvicorn roots:app --reload

模式7:传输(STDIO)测试(请求1-11)

用于测试transport1.py(与main.py相同的工具):

uv run client.py

然后在终端中发送请求。无需管理客户。

📚 学习资源

该项目包括综合学习材料:

问题.md

50个精心策划的问题,涵盖:

  • HTTP基础:状态代码、方法、版本(HTTP/1.1、HTTP/2、HTTP/3)
  • REST API设计:最佳实践、约束、幂等性
  • JSON-RPC协议:请求/响应结构、错误处理、批处理请求
  • MCP概念:上下文、图元(工具/资源/提示)、传输、根、采样、日志和进度
  • FastMCP:配置选项,有状态与无状态模式

答案.md

所有问题的完整编号答案(1-50),提供:

  • 简洁、准确的解释
  • 错误代码及其含义

这些资源非常适合:

  • 学习MCP协议基础
  • 了解JSON-RPC通信
  • 准备技术面试
  • 开发时快速参考

🧪 测试

有关详细的测试说明,请参阅 说明.md.

📝 备注

  • 在执行客户端测试之前,始终运行服务器
  • 一次测试一个场景,以进行清晰的输出分析
  • 审查 responses.md 对于每个请求的预期响应
  • 检查 instructions.md 了解详细的测试步骤

📧 联系

如有疑问或反馈,请在GitHub上发布问题。


快乐学习! 🚀