模型上下文协议服务器

一个轻量级、高效的服务器实现,用于处理大型语言模型的上下文操作,提供文档和上下文管理、异步任务处理、速率限制和错误处理等功能。

  • by Qonye
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 qonye/mcp-server

使用说明

模型上下文协议(MCP)服务器

一种轻量级、高效的服务器实现,用于处理大型语言模型的上下文操作。

概述

模型上下文协议(MCP)服务器提供了一个强大的API,用于管理语言模型使用的文档和上下文。它具有自动任务排队、速率限制和错误处理功能,即使在高负载或遇到错误时也能确保可靠运行。

特性

  • 文档管理:创建、检索和删除文档对象
  • 上下文管理:创建、更新、检索和删除上下文集合
  • 异步任务处理:具有错误隔离功能的任务后台处理
  • 速率限制:内置请求限制以防止过载
  • 错误处理:失败的任务将被存储以供以后查看和重试
  • API文档:自动生成的Swagger UI文档
  • 简单身份验证:API基于密钥的安全性

快速开始

先决条件

  • Python 3.7+
  • pip包管理器

安装

# Clone the repository
git clone https://github.com/your-username/mcp-server.git
cd mcp-server

# Create a virtual environment
python -m venv venv

# Activate the virtual environment
# For Windows:
venv\Scripts\activate
# For macOS/Linux:
source venv/bin/activate

# Install dependencies
pip install fastapi uvicorn pydantic

运行服务器

python app.py

服务器将于启动http://localhost:8000默认情况下。您可以通过设置port环境变量来更改端口。

API文档

服务器运行后,请访问http://localhost:8000/docs访问交互式API文档。

API使用

认证

大多数端点都需要API密钥,该密钥应在 X-API-Key 头球默认的API密钥为 test-api-key,但可以通过设置 MCP_API_KEY 环境变量。

基本操作

1.创建文档

POST /documents
X-API-Key: test-api-key

{
  "content": "This is a sample document.",
  "metadata": {
    "source": "example.com",
    "author": "John Doe"
  }
}

2.创建上下文

POST /contexts
X-API-Key: test-api-key

{
  "name": "Sample Context",
  "description": "A collection of related documents",
  "documents": ["document-id-1", "document-id-2"]
}

3.检索上下文内容

GET /contexts/{context_id}/content
X-API-Key: test-api-key

管理任务

查看失败的任务

GET /tasks/failed
X-API-Key: test-api-key

重试失败的任务

POST /tasks/retry
X-API-Key: test-api-key

在VS代码中设置

  1. 在VS Code中打开项目文件夹
  2. 确保已安装Python扩展
  3. 选择您的Python解释器(虚拟环境中的解释器)
  4. 打开终端并运行 python app.py
  5. 通过设置断点并按F5进行调试

环境变量

  • PORT:服务器端口(默认值:8000)
  • MCP_API_KEY:用于身份验证的API密钥(默认值:test-API-key)

错误处理

服务器被设计为即使单个操作失败,也能继续处理任务。失败的任务存储在单独的队列中,可以通过专用端点进行检查和重试。

局限性

  • 此实现使用内存存储,不适合需要数据持久性的生产环境
  • 速率限制器是基本的,可能需要根据特定用例进行调整

未来改进

  • 持久存储的数据库集成
  • 高级身份验证机制
  • 更复杂的速率限制
  • 大型上下文的流式响应
  • 语义搜索的矢量嵌入支持

许可证

麻省理工学院

贡献

欢迎投稿!请随时提交拉取请求。