feat: Add Brain Monitor dashboard and live API stats
This commit is contained in:
1 parent
3239e32866
commit
18fd05bb11
10 files changed
+672
-80
No files matched your search
@@ -0,0 +1,59 @@
|
||||
import urllib.request
|
||||
import json
|
||||
import threading
|
||||
import sys
|
||||
import time
|
||||
|
||||
sse_url = "http://localhost:3000/sse"
|
||||
|
||||
def call_mcp(method, params):
|
||||
req = urllib.request.Request(sse_url)
|
||||
with urllib.request.urlopen(req) as response:
|
||||
endpoint = None
|
||||
# read the SSE stream
|
||||
for line_bytes in response:
|
||||
line = line_bytes.decode('utf-8').strip()
|
||||
if line.startswith("data: /messages"):
|
||||
endpoint = "http://localhost:3000" + line.split("data: ")[1].strip()
|
||||
break
|
||||
|
||||
if not endpoint:
|
||||
print("Failed to get endpoint")
|
||||
sys.exit(1)
|
||||
|
||||
print(f"Got endpoint: {endpoint}")
|
||||
|
||||
payload = {
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1,
|
||||
"method": "tools/call",
|
||||
"params": {
|
||||
"name": method,
|
||||
"arguments": params
|
||||
}
|
||||
}
|
||||
|
||||
post_req = urllib.request.Request(endpoint, data=json.dumps(payload).encode('utf-8'), headers={'Content-Type': 'application/json'})
|
||||
with urllib.request.urlopen(post_req) as post_resp:
|
||||
print(f"POST status: {post_resp.status}")
|
||||
|
||||
# continue reading SSE for response
|
||||
for line_bytes in response:
|
||||
line = line_bytes.decode('utf-8').strip()
|
||||
if line.startswith("data: "):
|
||||
data = line[6:]
|
||||
if data == "ping": continue
|
||||
try:
|
||||
msg = json.loads(data)
|
||||
if msg.get("id") == 1:
|
||||
print("RESULT:")
|
||||
print(json.dumps(msg, indent=2))
|
||||
return
|
||||
except:
|
||||
pass
|
||||
|
||||
import sys
|
||||
if __name__ == "__main__":
|
||||
method = sys.argv[1]
|
||||
params = json.loads(sys.argv[2])
|
||||
call_mcp(method, params)
|
||||
Reference in new issue
Block a user