处理程序
报告错误代码
复制
询问AI
from dedalus_mcp.client import ClientCapabilitiesConfig, open_connection
from dedalus_mcp.types import LoggingMessageNotificationParams
def logging_handler(params: LoggingMessageNotificationParams) -> None:
"""处理来自服务器的日志消息。"""
level = params.level.upper()
data = params.data
print(f"[{level}] {data}")
使用方式
报告错误代码
复制
询问AI
capabilities = ClientCapabilitiesConfig(logging=logging_handler)
async with open_connection(
url="http://127.0.0.1:8000/mcp",
transport="streamable-http",
capabilities=capabilities,
) as client:
# 服务器日志将路由到您的处理程序
result = await client.call_tool("process", {"file": "data.csv"})
日志级别
| 级别 | 说明 |
|---|---|
debug | 详细的调试信息 |
info | 一般运行信息 |
warning | 警告条件 |
error | 错误条件 |
结构化日志
报告错误代码
复制
询问AI
import logging
logger = logging.getLogger("mcp.server")
def logging_handler(params: LoggingMessageNotificationParams) -> None:
level = getattr(logging, params.level.upper(), logging.INFO)
logger.log(level, params.data)
完整示例
报告错误代码
复制
询问AI
import asyncio
from dedalus_mcp.client import ClientCapabilitiesConfig, open_connection
from dedalus_mcp.types import LoggingMessageNotificationParams
def logging_handler(params: LoggingMessageNotificationParams) -> None:
level = params.level.upper()
print(f"[SERVER {level}] {params.data}")
async def main():
capabilities = ClientCapabilitiesConfig(logging=logging_handler)
async with open_connection(
url="http://127.0.0.1:8000/mcp",
transport="streamable-http",
capabilities=capabilities,
) as client:
print(f"Connected: {client.initialize_result.serverInfo.name}")
tools = await client.list_tools()
print(f"Available tools: {[t.name for t in tools.tools]}")
# 调用工具 - 日志将通过处理器显示
result = await client.call_tool("analyze", {"input": "test"})
print(f"Result: {result.content}")
asyncio.run(main())