48 lines
1.5 KiB
Python
48 lines
1.5 KiB
Python
import sys
|
|
import json
|
|
|
|
def main():
|
|
while True:
|
|
line = sys.stdin.readline()
|
|
if not line:
|
|
break
|
|
try:
|
|
req = json.loads(line)
|
|
method = req.get("method")
|
|
req_id = req.get("id")
|
|
|
|
if method == "tools/list":
|
|
resp = {
|
|
"jsonrpc": "2.0",
|
|
"id": req_id,
|
|
"result": {
|
|
"tools": [
|
|
{"name": "echo", "description": "Echo input", "inputSchema": {"type": "object"}}
|
|
]
|
|
}
|
|
}
|
|
elif method == "tools/call":
|
|
name = req["params"].get("name")
|
|
args = req["params"].get("arguments", {})
|
|
if name == "echo":
|
|
resp = {
|
|
"jsonrpc": "2.0",
|
|
"id": req_id,
|
|
"result": {
|
|
"content": [{"type": "text", "text": f"ECHO: {args}"}]
|
|
}
|
|
}
|
|
else:
|
|
resp = {"jsonrpc": "2.0", "id": req_id, "error": {"message": "Unknown tool"}}
|
|
else:
|
|
resp = {"jsonrpc": "2.0", "id": req_id, "error": {"message": "Unknown method"}}
|
|
|
|
sys.stdout.write(json.dumps(resp) + "\n")
|
|
sys.stdout.flush()
|
|
except Exception as e:
|
|
sys.stderr.write(f"Error: {e}\n")
|
|
sys.stderr.flush()
|
|
|
|
if __name__ == "__main__":
|
|
main()
|