项目简介

'FastMCP Server' 是一个基于 Python 'FastMCP' 框架实现的 Model Context Protocol (MCP) 服务器。它旨在简化 LLM 应用的后端开发,提供了一种轻量级、可扩展的方式来管理工具、资源和上下文信息,并以标准化的 MCP 协议与 LLM 客户端进行通信。虽然示例代码相对简洁,但它展示了构建 MCP 服务器的核心要素,例如工具注册、生命周期管理和上下文访问。

主要功能点

  • 工具注册 (Tool Registration): 允许开发者通过装饰器 '@mcp.tool()' 轻松注册 Python 函数作为 MCP 工具,供 LLM 客户端调用。工具可以访问服务器端的上下文信息,实现与后端资源的交互。
  • 生命周期管理 (Lifespan Management): 通过 'app_lifespan' 函数实现应用程序的生命周期管理,支持在服务器启动时初始化资源(如数据库连接),并在关闭时进行清理,确保资源管理的健壮性。
  • 类型安全的上下文 (Type-safe Context): 利用 'dataclass' 和类型注解 'AppContext',为工具函数提供类型安全的上下文访问,提高了代码的可读性和可维护性。
  • 依赖管理 (Dependency Management): 支持在 'FastMCP' 初始化时声明服务器依赖,方便部署和开发环境的管理。

安装步骤

  1. 环境准备: 确保已安装 Python 3.8 或更高版本,并配置好 pip 包管理工具。

  2. 安装 'mcp_server': 根据仓库信息,推测可能需要安装 'mcp' 包。由于没有明确的安装步骤,这里假设可以通过 pip 安装 'mcp' 包(实际安装命令可能需要参考仓库的 'setup.py' 或 'requirements.txt' 文件,如果存在的话)。

    pip install mcp-server  #  实际安装命令可能需要根据仓库信息调整

    或者,如果仓库提供了 'setup.py' 文件,可以克隆仓库后使用以下命令安装:

    git clone https://github.com/dplaia/mcp_server
    cd mcp_server
    pip install .

服务器配置

MCP 客户端需要配置服务器连接信息才能与 'FastMCP Server' 通信。以下是一个可能的 JSON 格式配置示例,你需要根据实际情况进行调整。

{
  "serverName": "My App",  // 服务器名称,与 server.py 中 FastMCP 初始化时指定的名称一致
  "command": "python",     // 启动服务器的命令,这里假设使用 python 解释器
  "args": [                // 启动参数
    "-m",                  // 运行模块
    "mcp_server.server"   // 假设 server.py 是 mcp_server 包的一部分,通过模块名启动,实际情况可能需要根据仓库结构调整
  ],
  "transport": "stdio"   //  传输协议,这里假设使用 stdio,实际可能支持其他协议,需要参考更详细的文档
}

参数注释:

  • 'serverName': 服务器的名称,必须与 'server.py' 中 'FastMCP("服务器名称")' 设置的名称完全一致。客户端通过此名称识别服务器。
  • 'command': 启动服务器进程的可执行命令。通常是 Python 解释器 'python' 或 'python3'。
  • 'args': 传递给启动命令的参数列表。
    • '"-m"': Python 的 '-m' 参数用于运行模块。
    • '"mcp_server.server"': 模块名称,指向 'server.py' 文件。 请注意,这只是一个假设,实际模块路径需要根据仓库的目录结构和 'server.py' 文件的位置进行调整。 如果 'server.py' 直接在仓库根目录下,可能需要调整为 '"server"' 并确保 'server.py' 所在的目录在 Python 的模块搜索路径中。
  • 'transport': MCP 客户端与服务器通信的传输协议。 '"stdio"' 表示标准输入输出流。 'FastMCP' 可能支持其他协议如 'websocket' 或 'sse',具体支持哪些协议需要查看更详细的文档或代码。

重要提示: 上述配置是一个推测示例,实际配置可能需要根据 'mcp_server' 仓库的完整代码和文档进行调整。特别是 'args' 中的模块路径和 'transport' 协议,需要仔细核对仓库信息。

基本使用方法

  1. 启动服务器: 根据上述服务器配置,在 MCP 客户端中配置好服务器信息后,启动 MCP 服务器。服务器将会在后台运行,并监听来自客户端的请求。
  2. 客户端调用工具: 在 LLM 客户端中,可以使用 MCP 协议发送请求来调用服务器端注册的工具,例如 'query_db'。客户端需要构造符合 MCP 协议的 JSON-RPC 请求,指定要调用的工具名称和参数。
  3. 服务器响应: 'FastMCP Server' 接收到客户端的工具调用请求后,会执行相应的工具函数,并将结果以 JSON-RPC 响应的格式返回给客户端。工具函数可以访问 'app_lifespan' 中初始化的上下文资源,例如数据库连接,从而实现更复杂的功能。

示例工具调用 (假设客户端使用 JSON-RPC over stdio):

客户端发送的 JSON-RPC 请求 (示例):

{
  "jsonrpc": "2.0",
  "method": "call_tool",
  "params": {
    "tool_name": "query_db",
    "arguments": {}  //  query_db 工具函数示例中没有定义参数
  },
  "id": 1
}

服务器返回的 JSON-RPC 响应 (示例):

{
  "jsonrpc": "2.0",
  "result": "数据库查询结果...", //  query_db 工具函数的返回值
  "id": 1
}

请注意: 这只是一个基本的使用说明,更详细的使用方法和高级功能,例如资源管理、Prompt 模板等,需要参考 'mcp_server' 仓库的完整文档和代码示例。 由于提供的仓库信息有限,这里只能基于代码片段进行推测和假设。

信息

分类

开发者工具