# mcp-python-demo **Repository Path**: jbp123/mcp-python-demo ## Basic Information - **Project Name**: mcp-python-demo - **Description**: 基于python实现mcp client和server端,client利用langgraph实现,server基于sse以及streamable_http通信方式 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2025-05-13 - **Last Updated**: 2025-06-13 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 步骤 1. 确定client MultiServerMCPClient需要连接的mcp server(单个或者多个) 2. 然后执行server文件,产生url,再执行client.py文件,连接server获取工具。当前client.py链接server_sse.py,则需要先运行server_sse.py文件 ### 使用方法 #### 服务端: 1.mcp实例化 ```commandline mcp = FastMCP("Weather") # "Weather"可修改 ``` 2.利用@mcp.tool装饰函数,可以将函数注册为mcp工具,函数需要添加注释(函数解释,Args以及返回值) ```commandline # 利用mcp.tool装饰器在当前server中可以注册多个工具 # 函数必须添加说明、参数说明(如果有参数)以及返回值,便于智能体调用和命中 @mcp.tool() async def func1(): ... @mcp.tool() async def func2(): ... ``` 可以参考server_sse.py代码 ```commandline @mcp.tool() async def get_weather(location: str) -> str: """ 获取指定地点的天气信息。 Args: location (str): 要查询天气的地点名称。 Returns: str: 返回的天气信息字符串。 """ return "It's always sunny in New York" ``` 3.服务配置 ●基于SSE方式: ```commandline # 服务器配置,设置端口名 mcp.settings.port = 8001 # 设置路径为sse,并通过sse方式启动服务器 mcp.settings.sse_path = "/tmp/sse" mcp.run(transport="sse") ``` ●基于streamable-http方式: ```commandline # 服务器配置,设置端口名 mcp.settings.port = 8002 # 设置路径为streamable-http,并通过streamable-http方式启动服务 mcp.settings.streamable_http_path = "/tmp/sse" mcp.run(transport="streamable-http") ``` #### 客户端: client.py提供了一个agent智能体demo,利用MultiServerMCPClient连接mcp server,然后获取工具并命中调用。