使用说明
MCP与RAG演示
该演示项目展示了如何实现具有检索增强生成(RAG)功能的模型上下文协议(MCP)服务器。该演示允许AI模型与知识库交互、搜索信息和添加新文档。
特性
- 具有工具和资源支持的MCP服务器
- RAG实现(回退到内存存储)
- 与MCP服务器交互的客户端示例
- 支持SSE(HTTP)和stdio通信模式
- 简单提示模板
先决条件
- Python 3.8+
- pip(Python包管理器)
安装
- 克隆存储库:
git clone <repository-url>
cd mcp-demo
- 创建虚拟环境:
python -m venv mcp-env
source mcp-env/bin/activate # On Windows: mcp-env\Scripts\activate
- 安装所需的依赖项:
pip install -r requirements.txt
项目结构
mcp-demo/
├── server.py # Main MCP server implementation
├── client_example.py # Example client to interact with the server
├── requirements.txt # Project dependencies
├── sample_data.txt # Sample data available as a resource
├── tools/
│ ├── __init__.py # Package initialization
│ └── rag_tools.py # RAG tools implementation
└── README.md # This readme file
运行演示
步骤1:启动MCP服务器
您可以在两种不同的模式下运行MCP服务器:
选项A:SSE(HTTP)模式
此模式允许服务器使用服务器发送事件(SSE)通过HTTP接受连接:
python server.py --sse
默认情况下,服务器将侦听 0.0.0.0:8000。您可以自定义主机和端口:
python server.py --sse --host 127.0.0.1 --port 9000
选项B:标准输入模式
此模式允许服务器通过标准输入/输出进行通信:
python server.py --stdio
步骤2:运行客户端示例
服务器启动并运行后,打开一个新的终端窗口(保持服务器在第一个窗口中运行):
连接到SSE服务器
# Make sure your virtual environment is activated
source mcp-env/bin/activate # On Windows: mcp-env\Scripts\activate
# Run the client with SSE mode
python client_example.py --sse http://localhost:8000
如果URL中还没有“/sse”,客户端会自动将其附加到URL中。
通过stdio连接
# Make sure your virtual environment is activated
source mcp-env/bin/activate # On Windows: mcp-env\Scripts\activate
# Run the client with stdio mode
python client_example.py --stdio --command python --args "server.py --stdio"
您可以根据需要自定义命令和参数。
客户示例的作用
客户端示例演示了几个关键操作:
- 列出可用的工具、资源和提示 来自MCP服务器
- 调用echo工具 验证基本通信
- 将文档添加到知识库 带有元数据
- 搜索知识库 使用RAG系统
- 读取示例资源 从服务器
可用的MCP工具
此演示中提供了以下工具:
echo:一个简单的工具,可以回显提供的消息add:将两个数字相加的工具add_document:将文档添加到知识库rag_search:在知识库中搜索与查询相关的信息list_documents:列出知识库中的所有文档
可用MCP资源
sample://data:提供对sample_data.txt中示例数据的访问
可用MCP提示
greeting:一个简单的问候提示模板
自定义演示
添加新工具
要添加新工具,请修改 server.py 文件:
@mcp.tool()
def your_tool_name(param1: type, param2: type) -> return_type:
"""Tool description"""
# Tool implementation
return result
添加新资源
要添加新资源,请修改 server.py 文件:
@mcp.resource("resource://pattern")
def your_resource_function() -> str:
"""Resource description"""
# Resource implementation
return "Resource content"
添加新提示
要添加新的提示模板,请修改 server.py 文件:
@mcp.prompt()
def your_prompt_name(param1: str, param2: str) -> str:
"""Prompt description"""
return f"""
Your prompt template text with {param1} and {param2} parameters.
"""
故障排除
客户端连接问题
如果在运行客户端时出现“连接被拒绝”错误:
- 确保服务器确实在另一个终端窗口中运行
- 检查您是否使用了正确的URL(默认为http://localhost:8000)
- 确保服务器正在侦听预期的接口(0.0.0.0接受外部连接)
- 尝试显式指定服务器URL:
python client_example.py --sse http://localhost:8000
服务器端点问题
MCP服务器在以下位置公开SSE(服务器发送事件)端点 /sse.与客户端连接时:
- 完整的URL应该是
http://localhost:8000/sse - 客户端将自动追加
/sse如果您指定的URL中缺少它
调试模式
如果遇到问题,可以启用调试模式以获得更详细的输出:
python client_example.py --sse http://localhost:8000 --debug
常见问题
客户端连接导入错误
如果在运行客户端示例时看到导入错误,请确保已安装所有必需的依赖项:
pip install mcp-sdk
找不到包或版本不匹配
如果您遇到导入错误或版本兼容性问题,请尝试安装特定版本的MCP包:
pip install mcp-sdk>=1.0.0
许可证
该项目作为示例实现提供,并在MIT许可证下可用。
设置
-
安装所需的依赖项:
pip install -r requirements.txt -
创建一个
.env文件:cp .env.example .env -
编辑
.env文件并添加您的OpenAI API密钥:OPENAI_API_KEY=your_api_key_here您还可以在中配置其他选项
.env文件:MCP_SERVER_URL:MCP服务器的URL(默认值:http://localhost:3000)DEBUG:启用调试模式(默认值:false)
用法
使用以下命令运行演示:
python openai_example.py
您可以覆盖中的设置 .env 使用命令行参数创建文件:
python openai_example.py --api-key YOUR_API_KEY --server-url http://your-server-url
环境变量
以下环境变量可以在 .env 文件:
OPENAI_API_KEY:您的OpenAI API密钥(必需)MCP_SERVER_URL:MCP服务器的URL(可选)DEBUG:启用调试模式(可选)
命令行参数
--api-key:您的OpenAI API密钥(覆盖.env文件)--server-url:MCP服务器的URL(覆盖.env文件)--debug:启用调试模式(覆盖.env文件)
MCP OpenAI示例
此示例演示如何将模型控制协议(MCP)与OpenAI的API一起使用。
设置
-
安装所需的依赖项:
pip install -r requirements.txt -
创建一个
.env文件基于.env.example模板:cp .env.example .env -
编辑
.env文件并添加您的OpenAI API密钥:OPENAI_API_KEY=your_api_key_here
运行示例
运行示例脚本:
python openai_example.py
您还可以直接指定选项:
python openai_example.py --api-key your_api_key_here --server-url http://localhost:3000 --debug
示例的作用
- 从加载环境变量
.env文件 - 使用API密钥配置OpenAI客户端
- 列出可用型号
- 通过简单提示创建聊天完成
环境变量
OPENAI_API_KEY:您的OpenAI API密钥(必需)MCP_SERVER_URL:MCP服务器的URL(可选,默认为http://localhost:3000)DEBUG:启用调试日志记录(可选,默认为false)