知识库助手

一个基于MCP协议和OpenAI API的知识库问答助手,能够通过自然语言查询公司政策信息。

  • by kofiadom
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 kofiadom/mcp-get-started

使用说明

MCP知识库助理

模型上下文协议(MCP)的演示,该协议将OpenAI驱动的客户端连接到知识库服务器。该项目展示了如何构建一个简单但功能强大的人工智能助手,通过MCP访问知识库来回答有关公司政策的问题。

📋 概述

该项目展示了:

  1. 如何构建一个将知识库作为工具公开的MCP服务器
  2. 如何创建连接到服务器的MCP客户端
  3. 如何集成OpenAI的API创建自然语言界面
  4. 如何使用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密钥

安装

  1. 克隆存储库:

    git clone <repository-url>
    cd MCP-Get-Started
    
  2. 创建虚拟环境并安装依赖项:

    python -m venv venv
    
    # On Windows
    venv\Scripts\activate
    
    # On macOS/Linux
    source venv/bin/activate
    
    pip install -r requirements.txt
    
  3. 创建一个 .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)

客户:

  1. 使用SSE传输连接到MCP服务器
  2. 检索可用工具列表
  3. 从用户处获取自然语言查询
  4. 将查询与可用工具一起发送到OpenAI
  5. 如果OpenAI决定使用工具,客户端将执行工具调用
  6. 向用户返回最终响应

知识库(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文件.

📄 许可证

MIT许可证