目录
- Python-MCPInspector调试
- 1-核心聪明点
- 2-思路整理
- 1-核心思路
- 2-核心代码
- 3-参考网址
- 4-上手实操
- 1-空工程初始化环境
- 2-激活环境
- 3-添加依赖
- 4-项目结构
- 5-创建Python城市服务
- 6-暴露Python城市MCPServer服务
- 7-MCP Inspector调试
Python-MCPInspector调试
使用FastMCP开发MCPServer,熟悉McpServer编码经过+MCPInspector调试技巧-> 可以这样领会:只编写一个McpServer,接着使用MCPInspector作为McpClient进行McpServer的调试
1-核心聪明点
- 1-熟悉McpServer编码经过
- 2-熟悉McpServer调试技巧-MCP Inspector
2-思路整理
1-核心思路
- 1-编写传统的Service业务代码
- 2-在Service业务代码头上添加@tool装饰器,即可实现FastMCP的Tool功能
- 3-在Service业务代码头上添加@mcp.tool()装饰器,即可实现FastMCP的McpServer功能
- 4-主程序指定运行技巧-stdio进程启动(然而不要自己去启动)
- 5-使用MCPInspector调试McpServer(2个步骤)
- mcp dev city_02_mcp_server.py是启动mcpInspector并指定mcpServer的路径,
- 接着在Inspector中启动city_02_mcp_server.py->uv run &8211;with mcp mcp run city_02_mcp_server.py
2-核心代码
1-在Service业务代码头上添加@tool装饰器,即可实现FastMCP的Tool功能
假设 mcp 已经正确导入try: from mcp import toolexcept ImportError: 如果 mcp 未找到,模拟一个 tool 装饰器 def tool(func): return func 在 Service 业务代码头上添加 @tool 装饰器@toolasync def get_city_list(self) -> list: “””获取所有的城市信息。 返回: str: 所有的城市信息列表 “”” logging.info(f”获取所有的城市信息”) city_list = [] for city in self.CITY_WEATHER_DATA: city_list.append(city) return city_list
2-在Service业务代码头上添加@mcp.tool()装饰器,即可实现FastMCP的McpServer功能
from mcp.server.fastmcp import FastMCPfrom city_01_service import CityDataServer 1-初始化 MCP 服务器mcp = FastMCP(“CityDataServer”) 2-初始化城市信息服务器(业务代码+@tool装饰器)city_server = CityDataServer() 3-在 Service 业务代码头上添加@mcp.tool()装饰器@mcp.tool() 获取所有城市列表async def get_city_list(): “””获取所有城市列表。 返回: str: 所有城市列表 “”” city_list = await city_server.get_city_list() return city_list 4-主程序指定运行技巧-stdio进程启动if __name__ == “__main__”: mcp.run(transport=’stdio’)
3-参考网址
个人代码实现仓库:https://gitee.com/enzoism/python_mcp_01_inspector
4-上手实操
1-空工程初始化环境
mkdir my_projectcd my_projectpython -m venv .venv
2-激活环境
Windowssource .venv/Scripts/activate Macsource .venv/bin/activate
3-添加依赖
对应的依赖是在激活的环境中
uv用于后续MCP Inspector的连接pip install uv httpx mcp
4-项目结构
city_01_service.py
:城市服务脚本city_02_mcp_server.py
:MCP 服务器脚本
5-创建Python城市服务
city_01_service.py
:城市服务脚本
import logging 假设 mcp 已经正确导入try: from mcp import toolexcept ImportError: 如果 mcp 未找到,模拟一个 tool 装饰器 def tool(func): return func 配置日志打印级别logger = logging.getLogger(__name__)logging.basicConfig(level=logging.INFO) 定义城市服务class CityDataServer: 模拟城市的天气数据 CITY_WEATHER_DATA = “北京”: “condition”: “晴”, “temperature”: 25, “humidity”: 40}, “上海”: “condition”: “多云”, “temperature”: 27, “humidity”: 60}, “广州”: “condition”: “雨”, “temperature”: 30, “humidity”: 80}, “深圳”: “condition”: “多云”, “temperature”: 29, “humidity”: 70}, “杭州”: “condition”: “晴”, “temperature”: 26, “humidity”: 50}, } @tool async def get_city_weather(self, city: str) -> str: “””获取指定城市的天气信息。 参数: city (str): 城市名称 返回: str: 天气信息描述 “”” logging.info(f”获取天气信息: city}”) if city in self.CITY_WEATHER_DATA: weather = self.CITY_WEATHER_DATA[city] return f”city} : weather[‘condition’]} , weather[‘temperature’]} °C,湿度 weather[‘humidity’]} %” else: return f”抱歉,未找到 city} 的天气信息” @tool async def get_city_list(self) -> list: “””获取所有的城市信息。 返回: str: 所有的城市信息列表 “”” logging.info(f”获取所有的城市信息”) city_list = [] for city in self.CITY_WEATHER_DATA: city_list.append(city) return city_list @tool async def get_city_detail(self, city: str) -> str: “””获取指定城市的信息。 参数: city (str): 城市名称 返回: str: 城市信息 “”” logging.info(f”获取指定城市的信息: city}”) if city in await self.get_city_list(): return f”city} : 一个风景秀丽的城市,你值得去玩一把” else: return f”抱歉,未找到 city} 的城市信息”
6-暴露Python城市MCPServer服务
city_02_mcp_server.py
:MCP 服务器脚本
from mcp.server.fastmcp import FastMCPfrom city_01_service import CityDataServer 初始化 MCP 服务器mcp = FastMCP(“CityDataServer”) 初始化城市信息服务器city_server = CityDataServer() 获取天气信息的工具@mcp.tool()async def get_city_weather(city: str) -> str: “””获取指定城市的天气信息。 参数: city (str): 城市名称 返回: str: 天气信息描述 “”” city_weather_info = await city_server.get_city_weather(city) return city_weather_info@mcp.tool() 获取所有城市列表async def get_city_list(): “””获取所有城市列表。 返回: str: 所有城市列表 “”” city_list = await city_server.get_city_list() return city_list@mcp.tool() 获取指定城市的信息async def get_city_detail(city: str): “””获取指定城市的信息。 参数: city (str): 城市名称 返回: str: 指定城市的信息 “”” city_info = await city_server.get_city_detail(city) return city_info 主程序if __name__ == “__main__”: mcp.run(transport=’stdio’)
7-MCP Inspector调试
1-安装MCP Inspector
运行机制:先运行MCPInspector再运行uv run &8211;with mcp mcp run city_02_mcp_server.py
1-安装MCP Inspectorpip install mcp[cli]
2-运行MCP Inspector服务
2-运行MCP Inspectormcp dev city_02_mcp_server.py
3-访问MCP Inspector网页
再运行uv run &8211;with mcp mcp run city_02_mcp_server.py
http://127.0.0.1:6274
到此这篇关于Python MCPInspector调试的文章就介绍到这了,更多相关Python MCPInspector调试内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客!
无论兄弟们可能感兴趣的文章:
- Python代码调试的技巧集锦
- 使用PythonIDLE进行Debug调试的图文步骤
- 基于Python编写一个串口调试工具
- Python代码调试Debug的实用技巧分享
- Python工具PDB调试器的使用技巧详解
- pycharm?python代码调试跳出for循环难题
- VSCode运行或调试python文件无反应的难题解决
- python在命令行中使用?pdb?实现断点调试功能