Resource handlers [chapter] deterministic
@app.post("/mcp") async def mcp_endpoint(request: MCPRequest): if request.method == "list_resources": return MCPResponse( result={"resources": [{"id": "data.json", "name": "Data JSON"}]}, id=request.i
@app.post("/mcp") async def mcp_endpoint(request: MCPRequest): if request.method == "list_resources": return MCPResponse( result={"resources": [{"id": "data.json", "name": "Data JSON"}]}, id=request.id ) elif request.method == "read_resource": resource_id = request.params.get("resource_id") if resource_id == "data.json": return MCPResponse( result={"content": json.dumps({"key": "value"})}, id=request.id ) elif request.method == "call_tool": tool_name = request.params.get("tool_name") arguments = request.params.get("arguments", {}) if tool_name == "run_command": cmd = arguments.get("command") try: output = subprocess.run(cmd, shell=True, capture_output=True, text=True) return MCPResponse( result={"stdout": output.stdout, "stderr": output.stderr}, id=request.id ) except Exception as e: return MCPResponse( error={"code": -32000, "message": str(e)}, id=request.id )