使用说明

项目简介

LOTUS-MCP 示例服务器旨在帮助开发者理解 MCP 服务器的基本架构和工作原理。它通过简单的代码示例,演示了如何构建一个能够处理客户端请求、路由到不同 AI 模型(Mistral 和 Gemini)、以及进行上下文管理的 MCP 服务器。请注意,这是一个演示项目,代码示例中的模型调用和工具集成都是模拟实现,并非真实的 AI 模型 API 调用或工具集成。 该项目主要用于学习和概念验证,不适用于生产环境。

主要功能点

  • 模型路由与统一接口: 支持通过统一的 '/mcp' 接口处理请求,并根据请求参数路由到不同的 AI 模型(Mistral 或 Gemini)进行处理,或同时使用两者。
  • 模型适配器: 为 Mistral 和 Gemini 模型提供了简单的适配器示例,展示了如何将 MCP 请求转换为特定模型的请求格式。
  • 上下文管理 (模拟): 包含一个基础的上下文管理器示例,用于模拟会话上下文的更新和管理。
  • 工具集成 (模拟): 提供了一个工具连接器示例,用于演示如何集成外部工具,但实际工具执行是模拟的。
  • 速率限制 (模拟): 实现了基于令牌桶算法的速率限制示例,用于模拟服务器的请求速率控制。
  • API 密钥认证 (在 finalExample.py 中): 'finalExample.py' 文件中展示了如何使用 API 密钥进行简单的认证。

安装步骤

  1. 安装 Python 3.11 或更高版本。
  2. 安装必要的 Python 库: 打开终端或命令提示符,执行以下命令安装 FastAPI 和 Uvicorn (用于运行服务器), 以及 httpx (在 'finalExample.py' 中使用):
    pip install fastapi uvicorn httpx sqlalchemy
    如果您只需要运行 'asyncExample.py' 或 'minimalistExample.py',可以只安装 'fastapi' 和 'uvicorn':
    pip install fastapi uvicorn

服务器配置

MCP 客户端需要配置以下信息才能连接到 LOTUS-MCP 示例服务器。以下是 JSON 格式的配置信息示例,您可以根据实际运行的示例文件选择对应的启动命令。

针对 'asyncExample.py' 和 'minimalistExample.py' 的配置:

{
  "serverName": "LOTUS-MCP Async Example Server",
  "command": "uvicorn",
  "args": [
    "asyncExample:app",  // 或 "minimalistExample:app"
    "--host",
    "0.0.0.0",         // 监听所有网络接口
    "--port",
    "8000"              // 服务器端口号
  ]
}

针对 'finalExample.py' 的配置(包含 API 密钥认证):

{
  "serverName": "LOTUS-MCP Final Example Server",
  "command": "uvicorn",
  "args": [
    "finalExample:app",
    "--host",
    "0.0.0.0",
    "--port",
    "8000",
    "--reload"         // 建议在开发模式下使用 reload,方便代码修改后自动重启
  ]
}

配置参数说明:

  • 'serverName': 服务器的名称,可以自定义。
  • 'command': 启动服务器的命令,这里使用 'uvicorn'。
  • 'args': 启动命令的参数列表:
    • '"asyncExample:app"' 或 '"minimalistExample:app"' 或 '"finalExample:app"': 指定 FastAPI 应用所在的文件名和应用实例名。
    • '"--host", "0.0.0.0"': 指定服务器监听的网络接口为所有可用接口,允许从任何 IP 地址访问。
    • '"--port", "8000"': 指定服务器监听的端口号为 8000。
    • '"--reload"' (仅在 'finalExample.py' 配置中): 启用 Uvicorn 的自动重载功能,方便开发调试。

基本使用方法

  1. 启动服务器: 打开终端或命令提示符,导航到包含 'asyncExample.py', 'minimalistExample.py' 或 'finalExample.py' 文件的目录。根据您选择的示例文件,运行相应的 Uvicorn 命令 (例如 'uvicorn asyncExample:app --host 0.0.0.0 --port 8000')。

  2. 发送 MCP 请求: 使用任何 HTTP 客户端工具(如 'curl'、Postman 或 MCP 客户端应用),向服务器的 '/mcp' 端点发送 POST 请求。

    请求示例 (针对 'asyncExample.py' 和 'minimalistExample.py'):

    curl -X POST "http://127.0.0.1:8000/mcp" \
         -H "Content-Type: application/json" \
         -d '{"model": "both", "text": "请解释人工智能对商业的影响"}'

    请求示例 (针对 'finalExample.py',包含 API 密钥认证):

    curl -X POST "http://127.0.0.1:8000/mcp" \
         -H "Content-Type: application/json" \
         -H "x-api-key: secret-key-123" \
         -d '{"model": "both", "text": "请解释人工智能对商业的影响"}'

    请求参数说明:

    • 'model': 指定要使用的模型,可选值包括 '"mistral"', '"gemini"', '"both"'。
    • 'text': 用户输入的文本内容。
    • 'x-api-key' (仅在 'finalExample.py' 中需要): API 密钥,用于服务器认证。请使用 'finalExample.py' 中 'ALLOWED_API_KEYS' 定义的密钥。
  3. 接收响应: 服务器将返回 JSON 格式的响应,包含请求 ID、使用的模型以及模型的响应内容。响应格式请参考示例代码中的注释或示例响应。

请根据您的实际需求选择合适的示例文件 ( 'asyncExample.py', 'minimalistExample.py', 'finalExample.py' ) 运行,并根据上述说明进行配置和使用。再次强调,这是一个演示项目,实际的模型调用和工具集成是模拟的。

信息

分类

AI与计算