feat(phase7): grow corpus, MCP write-tools+auth, /metrics observability
CI / typecheck + build (turbo) (push) Canceled after 0s
CI / typecheck + build (turbo) (push) Canceled after 0s
- content/: +5 real docs (caddy, bullmq, mcp-streamable-http, postgres-fts, cloudflare-525 writeup) across docs/writeups/notes. Reindexed: 9 docs, 17 chunks, 5 revisions (was 4 docs). - apps/mcp: add write-tools index_document/reindex_all/restore_revision (require x-webhook-secret) + queue_status (public). createMcpServer(authSecret?) threads the HTTP header; stdio keeps writes open (trusted local). - apps/api: GET /metrics (Prometheus text: uptime + queue job gauges). - Caddy: expose /metrics on wiki. domain -> :4020. Verified live: /metrics 200; MCP tools/list -> 10; index_document unauth -> error, auth -> enqueues + worker drains; typecheck green.
This commit is contained in:
1 parent
76ed91c468
commit
53d636af0e
12 files changed
+524
-4
No files matched your search
@@ -32,9 +32,12 @@ const httpServer = createServer(async (req: IncomingMessage, res: ServerResponse
|
||||
return;
|
||||
}
|
||||
|
||||
// Stateless: fresh server + transport per request.
|
||||
// Stateless: fresh server + transport per request. The x-webhook-secret header
|
||||
// (if present) is threaded into the server so write tools can require it.
|
||||
const rawSecret = req.headers["x-webhook-secret"];
|
||||
const authSecret = Array.isArray(rawSecret) ? rawSecret[0] : rawSecret;
|
||||
const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined });
|
||||
const server = createMcpServer();
|
||||
const server = createMcpServer(authSecret);
|
||||
await server.connect(transport);
|
||||
await transport.handleRequest(req, res);
|
||||
});
|
||||
|
||||
Reference in new issue
Block a user