项目简介

mcp-auto-register包旨在简化基于FastMCP构建的MCP服务器的工具注册流程。它提供了一种便捷的方式,可以自动将Python包中的函数和类注册为MCP服务器可以调用的工具,从而扩展LLM应用的功能。通过该工具,开发者可以更快速地集成各种Python库的功能到MCP服务器中,无需手动逐个注册工具。

主要功能点

  • 自动化工具注册: 自动扫描指定的Python包,将包内的函数或类注册为FastMCP服务器的工具。
  • 函数注册: 支持将Python包中的函数批量注册为MCP工具。
  • 类注册: 支持将Python包中的类,通过用户自定义的包装器(wrapper)函数,注册为MCP工具,允许灵活地控制类的实例化和方法调用方式。
  • 过滤器: 提供函数和类的过滤器,允许用户精确控制需要注册的工具,避免注册不必要的函数或类。
  • 易于集成: 可以轻松集成到现有的FastMCP服务器项目中,通过简单的API调用即可完成工具的自动注册。

安装步骤

  1. 确保已安装Python环境。

  2. 打开终端或命令提示符,运行以下命令安装 '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 服务器。

信息

分类

开发者工具