模型上下文协议演示项目

MCP Playground是一个实践性学习项目,通过实际示例展示模型上下文协议(MCP),使AI助手能够安全连接到外部工具、数据源和服务。

  • by darshangupta
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 darshangupta/mcp_playground

使用说明

MCP游乐场

通过实例演示模型上下文协议(MCP)的实践学习项目。

什么是MCP?

模型上下文协议(MCP) 是一种标准化协议,使人工智能助手能够安全地连接到外部工具、数据源和服务。将其视为人工智能模型与外部世界之间的桥梁。

关键概念

  • MCP服务器:公开工具和资源的独立流程
  • MCP客户端:连接到服务器并调用其工具的应用程序
  • 工具:可以由客户端调用的函数(如API端点)
  • 资源:可访问的数据源(如文件或数据库)

这个游乐场是如何运作的

本项目通过以下方式演示了MCP:

  1. 连接到MCP服务器:我们连接到安装在以下位置的三台MCP服务器 /Users/darshangupta/mcp:

    • content_factory:生成脚本、标题和SEO内容
    • http_request:向web API发出HTTP请求
    • filesystem:读取和写入本地系统上的文件
  2. 调用个人工具: main.py 展示了如何独立调用每个工具

  3. 链式工具: workflow.py 演示如何将多个工具调用链接在一起以创建强大的工作流

项目结构

mcp_playground/
├── README.md              # This file
├── main.py                # Individual tool demonstrations
├── workflow.py            # Chained tool call examples
├── try_it.sh             # Quick execution script
├── requirements.txt       # Python dependencies
└── tests/                 # Test cases
    ├── __init__.py
    ├── test_main.py
    └── test_workflow.py

设置

  1. 再进行:

    pip install -r requirements.txt
    
  2. 验证MCP服务器:确保您的MCP服务器安装在 /Users/darshangupta/mcp

  3. 运行示例:

    ./try_it.sh
    

    或者单独运行:

    python main.py
    python workflow.py
    

例子

单个工具调用(main.py)

  • 内容工厂:生成关于某个主题的脚本
  • HTTP 请求:向公共API发出GET请求
  • 文件系统:读取和写入文件

连锁工作流程(workflow.py)

  • 生成→ Save → Read → Send:
    1. 使用内容工厂生成内容
    2. 使用文件系统将其保存到文件
    3. 读回
    4. 通过HTTP请求发送

运行测试

python -m pytest tests/

学习路径

  1. 从开始 main.py 了解单个工具调用
  2. 移动到 workflow.py 了解如何链接工具
  3. 浏览测试文件以了解预期行为
  4. 修改示例以尝试不同的参数

MCP服务器位置

游乐场连接到这些MCP服务器:

  • 内容工厂: /Users/darshangupta/mcp/content_factory (⚠️ 需要API更新)
  • HTTP请求: /Users/darshangupta/mcp/http_request (⚠️ 需要API更新)
  • 文件系统:目前使用Python文件操作(不调用MCP文件系统工具)

备注:文件系统演示目前使用Python的内置文件操作,而不是调用MCP文件系统工具。文件系统服务器在清单中标记为“内置”,这通常意味着它是由MCP框架提供的。要实际调用MCP文件系统工具,您需要连接到文件系统MCP服务器。

备注

  • MCP服务器通过stdio(标准输入/输出)进行通信
  • 每个工具调用都是异步的,并返回结构化的JSON
  • 链接工具时错误处理很重要
  • 在后续调用中使用工具响应之前,始终验证工具响应

使用虚拟环境进行设置(推荐)

建议使用虚拟环境来避免依赖冲突:

# Create virtual environment
python3 -m venv venv

# Activate it
source venv/bin/activate  # On macOS/Linux
# or
venv\Scripts\activate  # On Windows

# Install dependencies
pip install -r requirements.txt

故障排除

MCP API版本不匹配

如果您看到以下错误:

ImportError: cannot import name 'InitializeResult' from 'mcp.server.models'

这意味着您的MCP服务器是为旧版本的MCP库编写的。MCP API在不同版本之间发生了变化。您有两个选择:

  1. 更新您的MCP服务器 使用最新的MCP API
  2. 使用兼容的MCP版本 与您的服务器代码匹配:
    pip install "mcp<1.0.0"  # or the specific version your servers need
    

架构不匹配错误

如果您看到以下错误:

ImportError: dlopen(...pydantic_core...): incompatible architecture (have 'x86_64', need 'arm64e' or 'arm64')

这意味着您的Python安装与您的系统架构不匹配(在Apple Silicon Mac上很常见)。要修复:

  1. 使用虚拟环境 (推荐-见上文)
  2. 检查你的Python架构:
    python3 -c "import platform; print(platform.machine())"
    
  3. 重新安装Python以获得正确的架构,或使用具有正确Python版本的虚拟环境。

即使服务器由于API或体系结构问题而无法运行,游乐场代码仍将演示MCP概念。