Files
Mofox-Core/scripts/debug_mcp_tools.py
明天好像没什么 f5e82685a0 feat(plugin): 集成 MCP 协议支持并优化代码风格
- 新增 fastmcp 依赖,支持通过 Streamable HTTP 连接外部工具服务器
- 在 component_registry 与 tool_api 中实现 MCP 工具加载、注册及调用链路
- 补充 README 中的 MCP 特性说明
- 统一修复多处 import 顺序、空行、引号及类型注解,提升代码整洁度
- 在 pyproject.toml 中忽略 PERF203 规则,允许循环内异常处理
- 优化语音缓存与本地 ASR 调用逻辑,减少冗余代码
2025-11-19 23:27:03 +08:00

60 lines
1.8 KiB
Python

"""
调试 MCP 工具列表获取
直接测试 MCP 客户端是否能获取工具
"""
import asyncio
from fastmcp.client import Client, StreamableHttpTransport
async def test_direct_connection():
"""直接连接 MCP 服务器并获取工具列表"""
print("=" * 60)
print("直接测试 MCP 服务器连接")
print("=" * 60)
url = "http://localhost:8000/mcp"
print(f"\n连接到: {url}")
try:
# 创建传输层
transport = StreamableHttpTransport(url)
print("✓ 传输层创建成功")
# 创建客户端
async with Client(transport) as client:
print("✓ 客户端连接成功")
# 获取工具列表
print("\n正在获取工具列表...")
tools_result = await client.list_tools()
print(f"\n获取结果类型: {type(tools_result)}")
print(f"结果内容: {tools_result}")
# 检查是否有 tools 属性
if hasattr(tools_result, "tools"):
tools = tools_result.tools
print(f"\n✓ 找到 tools 属性,包含 {len(tools)} 个工具")
for i, tool in enumerate(tools, 1):
print(f"\n工具 {i}:")
print(f" 名称: {tool.name}")
print(f" 描述: {tool.description}")
if hasattr(tool, "inputSchema"):
print(f" 参数 Schema: {tool.inputSchema}")
else:
print("\n✗ 结果中没有 tools 属性")
print(f"可用属性: {dir(tools_result)}")
except Exception as e:
print(f"\n✗ 连接失败: {e}")
import traceback
traceback.print_exc()
if __name__ == "__main__":
asyncio.run(test_direct_connection())