fix: ThreadingHTTPServer + unbuffered stdout + correct endpoint URL

This commit is contained in:
brian
2026-05-29 14:59:19 -07:00
parent 3a62428751
commit d2c6b7c9b1
2 changed files with 12 additions and 6 deletions

View File

@@ -6,6 +6,7 @@ import queue
import threading
import uuid
from http.server import HTTPServer, BaseHTTPRequestHandler
from socketserver import ThreadingMixIn
from urllib.parse import urlparse, parse_qs
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
@@ -259,10 +260,10 @@ class MCPHandler(BaseHTTPRequestHandler):
self.send_header("Connection", "keep-alive")
self.send_header("Access-Control-Allow-Origin", "*")
self.end_headers()
# Send endpoint info
endpoint_msg = {"jsonrpc": "2.0", "method": "endpoint",
"params": {"uri": f"http://0.0.0.0:{PORT}/messages?client_id={client.id}"}}
self.wfile.write(f"event: endpoint\ndata: {json.dumps(endpoint_msg)}\n\n".encode())
self.wfile.flush()
# Send endpoint event immediately per MCP SSE spec
msg_url = f"http://192.168.86.11:{PORT}/messages?client_id={client.id}"
self.wfile.write(f"event: endpoint\ndata: {msg_url}\n\n".encode())
self.wfile.flush()
try:
while True:
@@ -331,12 +332,16 @@ class MCPHandler(BaseHTTPRequestHandler):
self.end_headers()
self.wfile.write(body)
class ThreadingHTTPServer(ThreadingMixIn, HTTPServer):
daemon_threads = True
def main():
db.init_db()
server = HTTPServer(("0.0.0.0", PORT), MCPHandler)
server = ThreadingHTTPServer(("0.0.0.0", PORT), MCPHandler)
print(f"Handoff Pro MCP server running on port {PORT}")
print(f"SSE endpoint: http://0.0.0.0:{PORT}/sse")
print(f"Tools registered: {len(TOOLS)}")
sys.stdout.flush()
server.serve_forever()
if __name__ == "__main__":