"""Official MCP 2.2.0 SDK, in-memory protocol client; no model involved.""" import asyncio import json from mcp import Client from mcp.server import MCPServer from demo import service_status server = MCPServer('Offline incident tools') @server.tool(structured_output=True) def get_service_status(service: str) -> dict[str, object]: """查询虚构服务的固定状态快照。service 必须为 checkout;不访问生产服务。""" return service_status(service) async def exercise(): async with Client(server) as client: tools = await client.list_tools() result = await client.call_tool('get_service_status', {'service':'checkout'}) return {'tools':[t.name for t in tools.tools], 'result':result.structured_content} if __name__=='__main__': print(json.dumps(asyncio.run(exercise()),ensure_ascii=False,indent=2))