关于 MCP Knowledge Base Assistant
MCP Knowledge Base Assistant 演示 OpenAI 客户端如何连接服务端,从 JSON 知识库检索公司政策答案,是 MCP 入门示例,服务端可选用 Docker 封装。
主要功能
- 01公司政策问答知识库
- 02检索知识的 MCP 工具
- 03SSE 客户端与服务端连接
- 04通过 OpenAI API 生成自然语言答复
- 05可选的 Docker 服务端容器
适用场景
- 01回答有关公司政策的问题
- 02学习连接 MCP 客户端与服务端
- 03通过 JSON 条目扩充政策问答
MCP 相关
服务端通过 `get_knowledge_base` 工具公开 JSON 知识库。Python 客户端经由 SSE 连接,并将该工具提供给 OpenAI 使用。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
MCP 知识库助手
这是一个 Model Context Protocol(MCP)的演示项目,将由 OpenAI 驱动的客户端连接到知识库服务。该项目展示了如何构建一个简单而强大的 AI 助手,通过 MCP 访问知识库,回答有关公司政策的问题。
📋 概述
该项目演示了:
- 如何构建一个将知识库作为工具提供的 MCP 服务
- 如何创建一个连接到服务的 MCP 客户端
- 如何集成 OpenAI 的 API,创建自然语言界面
- 如何使用 Docker 将服务组件容器化
用户可以用自然语言询问公司政策相关问题,AI 会从知识库中检索相关信息并提供准确答案。
🏗️ 架构
该项目采用 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 <repository-url> 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)中检索信息。它使用 SSE(服务器发送事件)传输方式在端口 8050 上运行。
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 文件中添加更多问答对。
添加更多工具
你可以在 server.py 中使用 @mcp.tool() 装饰器定义其他函数,为服务添加更多工具。
更改模型
要使用其他 OpenAI 模型,请修改 client.py 中 MCPOpenAIClient 类的 model 参数。
📚 进一步了解 MCP
模型上下文协议(MCP)是大模型与外部工具和服务交互的标准化方式。它提供:
- 可复用性:只需构建一次服务,即可在任何兼容 MCP 的客户端中使用
- 可组合性:组合多个服务,打造复杂功能
- 生态发展:受益于他人创建的服务
如需了解更多信息,请访问 MCP 文档。
📄 许可证
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。