Neural Mastery
← Practice
MCP Protocol JSON-RPC Tool Routermedium

MCP Protocol JSON-RPC Tool Router

mediumAgents & Applications⏱ 15–20 min
Libraries allowed · Pure Python earns +10 bonus XP
🎯 Mission
Implement an MCP (Model Context Protocol) JSON-RPC 2.0 message handler for tool discovery and invocation.

Task

Implement `mcp_router` supporting `tools/list` and `tools/call`.

Function Signature

mcp_router(jsonrpc_request: str, registered_tools: dict) -> str

Examples

Example 1: Tools List Request
Input: {"jsonrpc_request":"{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"}","registered_tools":{"calculator":{"description":"Performs math","schema":{}}}}
Output: "{\"jsonrpc\": \"2.0\", \"id\": 1, \"result\": {\"tools\": [{\"name\": \"calculator\", \"description\": \"Performs math\", \"inputSchema\": {}}]}}"

Constraints

  • Must return valid JSON-RPC 2.0 response matching {"jsonrpc": "2.0", "id": req_id, "result": ...}.
  • Handle tools/list and tools/call methods.
Python3Saved ✓
import json

def mcp_router(jsonrpc_request, registered_tools):
"""
Parses JSON-RPC 2.0 request string and handles tools/list or tools/call methods.
Return JSON-RPC response string.
"""
# Your implementation here
pass

Case 1: Tools List Request
Input: {"jsonrpc_request":"{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"}","registered_tools":{"calculator":{"description":"Performs math","schema":{}}}}
Expected: "{\"jsonrpc\": \"2.0\", \"id\": 1, \"result\": {\"tools\": [{\"name\": \"calculator\", \"description\": \"Performs math\", \"inputSchema\": {}}]}}"