项目简介
'nacos-mcp-wrapper-python' 是一个Python库,它建立在标准MCP服务器Python SDK之上,增加了将MCP服务器实例自动注册到Nacos服务注册中心以及利用Nacos配置中心进行工具描述和参数描述动态管理的功能。
主要功能点
- Nacos服务注册: 自动将MCP服务器的服务地址和元数据注册到Nacos,方便客户端发现。
- 动态配置管理: 将MCP服务器的工具、Prompt、资源等描述信息发布到Nacos配置中心,并支持运行时动态更新工具的描述和参数描述,无需重启服务器。
- 基于标准SDK扩展: 在'modelcontextprotocol/python-sdk' 的'Server'和'FastMCP'类基础上进行封装,保留了原有SDK的使用方式。
- 支持多种传输协议: 兼容MCP标准SDK支持的'stdio'和'sse'传输协议。
安装步骤
确保您的Python版本 >= 3.10。
-
使用pip安装库:
pip install nacos-mcp-wrapper-python
服务器配置 (供MCP客户端参考)
MCP客户端需要知道如何找到并连接到您的MCP服务器。使用此库构建的服务器会将连接信息注册到Nacos。客户端通常需要配置以下信息:
- 服务器名称 (Server Name): 在代码中创建'NacosServer'或'NacosMCP'时指定的名称(例如:"nacos-mcp-python", "mcp-website-fetcher")。
- 传输协议 (Transport Protocol): 服务器使用的传输协议,例如 "stdio" 或 "sse"。
- 连接详情 (Connection Details):
- 对于 'stdio' 协议(本地进程):客户端需要配置用于启动服务器进程的命令及其参数(例如:'python your_server_script.py --transport stdio')。
- 对于 'sse' 协议(网络服务):客户端需要配置服务器的网络地址和路径。此库会将服务器注册到Nacos服务注册中心(使用服务器名称加 '-mcp-service' 作为服务名),并在Nacos配置中心发布包含服务引用(服务名、组、命名空间)和导出路径的信息。客户端可以通过Nacos服务发现获取实际的网络地址,或直接配置服务注册信息和路径来连接。
基本使用方法
您可以在现有使用 'mcp.server.Server' 或 'mcp.server.FastMCP' 构建的MCP服务器代码基础上进行修改,将服务器类替换为 'NacosServer' 或 'NacosMCP',并提供Nacos连接配置。
以下是使用 'NacosMCP' 的基本示例:
from nacos_mcp_wrapper.server.nacos_mcp import NacosMCP from nacos_mcp_wrapper.server.nacos_settings import NacosSettings # 配置Nacos连接信息 nacos_settings = NacosSettings() nacos_settings.SERVER_ADDR = "<您的Nacos服务器地址,例如: 127.0.0.1:8848>" # 替换为实际地址 # 创建NacosMCP服务器实例 # 参数1: 服务器名称 # 参数2: Nacos配置对象 mcp = NacosMCP("my-awesome-mcp-server", nacos_settings=nacos_settings) # 使用装饰器注册工具、Prompt、资源等,方式与标准SDK相同 @mcp.tool() def greet(name: str) -> str: """根据提供的名字生成问候语""" return f"你好, {name}!" @mcp.prompt() def instruct_user() -> str: """提供一个简单的用户指令Prompt""" return "请根据以下信息回答问题:" @mcp.resource("file://{filename}") def get_file_content(filename: str) -> str: """读取并返回指定文件的内容""" try: with open(filename, 'r') as f: return f.read() except FileNotFoundError: return f"错误: 文件 '{filename}' 未找到。" # 运行服务器,选择传输协议 (例如 "sse" 或 "stdio") if __name__ == "__main__": try: # 对于 SSE 协议,需要指定端口 mcp.run(transport="sse", port=8000) # 对于 Stdio 协议 # mcp.run(transport="stdio") except ValueError as e: print(f"运行时发生错误: {e}")
运行上述代码后,您的MCP服务器将启动,并将其信息(包括服务地址和服务提供的工具描述等)注册到Nacos。您可以通过修改Nacos配置中心中对应的数据(数据ID格式为 '<服务器名称>-mcp-tools.json'),动态更新工具的描述信息。
信息
分类
开发者工具