检索增强生成演示

一个展示如何实现具有检索增强生成功能的模型上下文协议服务器的演示项目,允许AI模型与知识库交互、搜索信息并添加新文档。

  • by quintavius-official
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 thinklytics/mcp-demo

使用说明

MCP与RAG演示

该演示项目展示了如何实现具有检索增强生成(RAG)功能的模型上下文协议(MCP)服务器。该演示允许AI模型与知识库交互、搜索信息和添加新文档。

特性

  • 具有工具和资源支持的MCP服务器
  • RAG实现(回退到内存存储)
  • 与MCP服务器交互的客户端示例
  • 支持SSE(HTTP)和stdio通信模式
  • 简单提示模板

先决条件

  • Python 3.8+
  • pip(Python包管理器)

安装

  1. 克隆存储库:
git clone <repository-url>
cd mcp-demo
  1. 创建虚拟环境:
python -m venv mcp-env
source mcp-env/bin/activate  # On Windows: mcp-env\Scripts\activate
  1. 安装所需的依赖项:
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"

您可以根据需要自定义命令和参数。

客户示例的作用

客户端示例演示了几个关键操作:

  1. 列出可用的工具、资源和提示 来自MCP服务器
  2. 调用echo工具 验证基本通信
  3. 将文档添加到知识库 带有元数据
  4. 搜索知识库 使用RAG系统
  5. 读取示例资源 从服务器

可用的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.
    """

故障排除

客户端连接问题

如果在运行客户端时出现“连接被拒绝”错误:

  1. 确保服务器确实在另一个终端窗口中运行
  2. 检查您是否使用了正确的URL(默认为http://localhost:8000)
  3. 确保服务器正在侦听预期的接口(0.0.0.0接受外部连接)
  4. 尝试显式指定服务器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许可证下可用。

设置

  1. 安装所需的依赖项:

    pip install -r requirements.txt
    
  2. 创建一个 .env 文件:

    cp .env.example .env
    
  3. 编辑 .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一起使用。

设置

  1. 安装所需的依赖项:

    pip install -r requirements.txt
    
  2. 创建一个 .env 文件基于 .env.example 模板:

    cp .env.example .env
    
  3. 编辑 .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

示例的作用

  1. 从加载环境变量 .env 文件
  2. 使用API密钥配置OpenAI客户端
  3. 列出可用型号
  4. 通过简单提示创建聊天完成

环境变量

  • OPENAI_API_KEY:您的OpenAI API密钥(必需)
  • MCP_SERVER_URL:MCP服务器的URL(可选,默认为http://localhost:3000)
  • DEBUG:启用调试日志记录(可选,默认为false)