MCP知识库助理
模型上下文协议(MCP)的演示,该协议将OpenAI驱动的客户端连接到知识库服务器。该项目展示了如何构建一个简单但功能强大的人工智能助手,通过MCP访问知识库来回答有关公司政策的问题。
📋 概述
该项目展示了:
- 如何构建一个将知识库作为工具公开的MCP服务器
- 如何创建连接到服务器的MCP客户端
- 如何集成OpenAI的API创建自然语言界面
- 如何使用Docker容器化服务器组件
该系统允许用户用自然语言询问有关公司政策的问题,人工智能将从知识库中检索相关信息以提供准确的答案。
🏗️ 建筑
该项目遵循MCP客户端-主机-服务器架构:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ │ │ │ │ │
│ OpenAI Model │◄────┤ MCP Client │◄────┤ MCP Server │
│ (GPT-4o) │ │ (client.py) │ │ (server.py) │
│ │ │ │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
│
▼
┌─────────────────┐
│ │
│ Knowledge Base │
│ (kb.json) │
│ │
└─────────────────┘- MCP服务器:将知识库作为可查询的工具公开
- MCP客户端:连接到服务器并与OpenAI的API集成
- OpenAI模型:处理自然语言查询并生成响应
- 知识库:包含有关公司政策的问答对的JSON文件
🚀 入门指南
先决条件
- Python 3.11或更高版本
- Docker(可选,用于容器化服务器)
- OpenAI API密钥
安装
- 克隆存储库:
git clone
cd MCP-Get-Started- 创建虚拟环境并安装依赖项:
python -m venv venv
# On Windows
venv\Scripts\activate
# On macOS/Linux
source venv/bin/activate
pip install -r requirements.txt- 创建一个
.env使用您的OpenAI API密钥在项目根目录中创建文件:
OPENAI_API_KEY=your_openai_api_key_here运行服务器
选项1:直接用Python运行
python server.py选项2:使用Docker运行
# Build the Docker image
docker build -t mcp-server .
# Run the container
docker run -p 8050:8050 mcp-server运行客户端
在服务器运行的情况下,打开一个新的终端并运行:
python client.py📝 用法
客户端将连接到服务器,并询问有关公司平等机会政策的示例问题。您可以在中修改查询 client.py 询问有关公司政策的不同问题。
输出示例:
Connected to server with tools:
- get_knowledge_base: Retrieve the entire knowledge base as a formatted string.
Query: What is the company's equal opportunity policy?
Response: The company's equal opportunity policy is as follows: The company is an equal opportunity employer and prohibits discrimination based on race, gender, age, religion, disability, or any other protected characteristic.🔧 项目结构
server.py:公开知识库的MCP服务器实现client.py:连接到服务器并与OpenAI集成的MCP客户端data/kb.json:包含公司政策问答对的知识库Dockerfile:服务器容器化配置requirements.txt:Python依赖关系
🧩 运作原理
MCP服务器(Server.py)
服务器公开了一个名为 get_knowledge_base 从知识库文件中检索信息(data/kb.json).它使用端口8050上的SSE(服务器发送事件)传输运行。
MCP客户端(Client.py)
客户:
- 使用SSE传输连接到MCP服务器
- 检索可用工具列表
- 从用户处获取自然语言查询
- 将查询与可用工具一起发送到OpenAI
- 如果OpenAI决定使用工具,客户端将执行工具调用
- 向用户返回最终响应
知识库(data/kb.json)
知识库是一个简单的JSON文件,其中包含有关公司政策的问答对。这可以根据需要通过其他政策或信息进行扩展。
🔄 生命周期管理
客户端使用Python的异步上下文管理器实现了适当的生命周期管理:
async with MCPOpenAIClient() as client:
await client.connect_to_server()
response = await client.process_query("What is the policy?")
# Resources are automatically cleaned up when exiting the context这确保了所有资源都按照MCP最佳实践正确初始化和清理。
🛠️ 定制
添加更多知识
要扩展知识库,只需在 data/kb.json 文件。
添加更多工具
您可以通过定义附加功能向服务器添加更多工具 @mcp.tool() 室内装饰师 server.py.
更改模型
要使用不同的OpenAI模型,请修改 model 参数在 MCPOpenAIClient 类在 client.py.
📚 了解有关MCP的更多信息
模型上下文协议(MCP)是LLM与外部工具和服务交互的标准化方式。它提供:
- 可重复使用性:只需构建一个服务器,即可与任何兼容MCP的客户端一起使用
- 可组合性:组合多个服务器以创建复杂的功能
- 生态系统增长:受益于他人创建的服务器
有关更多信息,请访问 MCP文件.
