项目简介
'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' 初始化时声明服务器依赖,方便部署和开发环境的管理。
安装步骤
-
环境准备: 确保已安装 Python 3.8 或更高版本,并配置好 pip 包管理工具。
-
安装 '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' 协议,需要仔细核对仓库信息。
基本使用方法
- 启动服务器: 根据上述服务器配置,在 MCP 客户端中配置好服务器信息后,启动 MCP 服务器。服务器将会在后台运行,并监听来自客户端的请求。
- 客户端调用工具: 在 LLM 客户端中,可以使用 MCP 协议发送请求来调用服务器端注册的工具,例如 'query_db'。客户端需要构造符合 MCP 协议的 JSON-RPC 请求,指定要调用的工具名称和参数。
- 服务器响应: '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' 仓库的完整文档和代码示例。 由于提供的仓库信息有限,这里只能基于代码片段进行推测和假设。
信息
分类
开发者工具