项目简介
mcp-auto-register包旨在简化基于FastMCP构建的MCP服务器的工具注册流程。它提供了一种便捷的方式,可以自动将Python包中的函数和类注册为MCP服务器可以调用的工具,从而扩展LLM应用的功能。通过该工具,开发者可以更快速地集成各种Python库的功能到MCP服务器中,无需手动逐个注册工具。
主要功能点
- 自动化工具注册: 自动扫描指定的Python包,将包内的函数或类注册为FastMCP服务器的工具。
- 函数注册: 支持将Python包中的函数批量注册为MCP工具。
- 类注册: 支持将Python包中的类,通过用户自定义的包装器(wrapper)函数,注册为MCP工具,允许灵活地控制类的实例化和方法调用方式。
- 过滤器: 提供函数和类的过滤器,允许用户精确控制需要注册的工具,避免注册不必要的函数或类。
- 易于集成: 可以轻松集成到现有的FastMCP服务器项目中,通过简单的API调用即可完成工具的自动注册。
安装步骤
-
确保已安装Python环境。
-
打开终端或命令提示符,运行以下命令安装 'mcp-auto-register' 包:
pip install mcp-auto-register
服务器配置
由于 'mcp-auto-register' 是 FastMCP 服务器的扩展工具,你需要先搭建并运行 FastMCP 服务器。'mcp-auto-register' 包本身不直接提供服务器运行命令,它需要在FastMCP服务器的代码中使用。
以下是 MCP 客户端连接 FastMCP 服务器时可能需要的配置信息 (JSON 格式示例),请注意,这里的命令和参数是FastMCP服务器的启动配置,而不是 'mcp-auto-register' 的配置。'mcp-auto-register' 的使用方式是在 FastMCP 服务器的代码中导入并调用其提供的注册函数。
{ "serverName": "MyMCPServer", "command": "python", "args": ["your_mcp_server_script.py", "--transport", "stdio"] }
配置信息参数说明:
- 'serverName': MCP 服务器的名称,可以自定义。
- 'command': 启动 MCP 服务器的命令,通常是 'python' 或 'node' 等,取决于你的服务器实现语言。
- 'args': 启动命令的参数列表。
- '"your_mcp_server_script.py"': 替换为你的 FastMCP 服务器启动脚本的路径。
- '"--transport", "stdio"': 指定服务器使用的传输协议,例如 'stdio' (标准输入输出), 'websocket' 或 'sse'。请根据你的 FastMCP 服务器实现选择合适的传输协议和参数。
重要提示: 'mcp-auto-register' 包本身不是一个独立的MCP服务器,它是一个辅助工具,用于简化 FastMCP 服务器的工具注册。你需要先确保你已经搭建了基于 'mcp.server.fastmcp' 的 MCP 服务器,然后才能使用 'mcp-auto-register' 来自动化工具注册。
基本使用方法
以下是如何在 FastMCP 服务器代码中使用 'mcp-auto-register' 的基本示例:
1. 注册 Python 包中的函数为工具:
from mcp_auto_register.register import register_functions_from_package from mcp.server.fastmcp import FastMCP # 初始化 FastMCP 实例 mcp_instance = FastMCP() # 注册 scipy.linalg 包中的 'eigh' 和 'inv' 函数为工具 register_functions_from_package('scipy.linalg', mcp_instance=mcp_instance, func_filter=['eigh', 'inv']) if __name__ == "__main__": mcp_instance.run() # 启动 FastMCP 服务器
2. 注册 Python 包中的类为工具:
import inspect from mcp_auto_register.register import register_classes_from_package from mcp.server.fastmcp import FastMCP from nba_api.stats.endpoints._base import Endpoint # 初始化 FastMCP 实例 mcp = FastMCP() # 定义一个包装器函数,用于处理 nba_api 的 Endpoint 类 def nba_endpoint_wrapper(endpoint: Endpoint): # ... (包装器函数的具体实现,参考仓库 README) ... init_params = inspect.signature(endpoint.__init__).parameters required_args = { p: param.annotation if param.annotation != inspect.Parameter.empty else "Any" for p, param in init_params.items() if p != "self" and param.default == inspect.Parameter.empty } def wrapper(**kwargs): return endpoint(**kwargs).get_dict() wrapper.__signature__ = inspect.Signature( parameters=[ inspect.Parameter(arg, inspect.Parameter.POSITIONAL_OR_KEYWORD) for arg, _ in required_args.items() ] ) return wrapper # 注册 nba_api.stats.endpoints 包中的类为工具,并使用 nba_endpoint_wrapper 进行包装 register_classes_from_package("nba_api.stats.endpoints", nba_endpoint_wrapper, mcp) if __name__ == "__main__": mcp.run(transport="stdio") # 启动 FastMCP 服务器
请根据你的实际需求修改代码中的包名、函数/类名、过滤器和包装器函数。运行包含上述代码的 Python 脚本即可启动集成了自动注册工具的 FastMCP 服务器。
信息
分类
开发者工具