fix: resolve MCP output validation errors in HTTP server

- Rename `content` → `notes` in searchNodes and getNodes output schemas
  to match what the handlers actually return (was causing validation errors)
- Rename `schema` → `stats` key in rah_get_context outputSchema and
  structuredContent return (schema key name confused MCP SDK validator,
  caused getContext failures for external users like Linux)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
“BeeRad”
2026-03-17 19:18:18 +11:00
co-authored by Claude Sonnet 4.6
parent 7444599817
commit 4802187f5e
+4 -4
View File
@@ -112,7 +112,7 @@ const searchNodesOutputSchema = {
z.object({ z.object({
id: z.number(), id: z.number(),
title: z.string(), title: z.string(),
content: z.string().nullable(), notes: z.string().nullable(),
description: z.string().nullable(), description: z.string().nullable(),
link: z.string().nullable(), link: z.string().nullable(),
dimensions: z.array(z.string()), dimensions: z.array(z.string()),
@@ -151,7 +151,7 @@ const getNodesOutputSchema = {
z.object({ z.object({
id: z.number(), id: z.number(),
title: z.string(), title: z.string(),
content: z.string().nullable(), notes: z.string().nullable(),
link: z.string().nullable(), link: z.string().nullable(),
dimensions: z.array(z.string()), dimensions: z.array(z.string()),
updated_at: z.string() updated_at: z.string()
@@ -825,7 +825,7 @@ mcpServer.registerTool(
description: 'Get orientation context: hub nodes, dimensions, stats, and available guides. Call this first.', description: 'Get orientation context: hub nodes, dimensions, stats, and available guides. Call this first.',
inputSchema: {}, inputSchema: {},
outputSchema: { outputSchema: {
schema: z.object({ nodeCount: z.number(), edgeCount: z.number(), dimensionCount: z.number() }), stats: z.object({ nodeCount: z.number(), edgeCount: z.number(), dimensionCount: z.number() }),
hubNodes: z.array(z.object({ id: z.number(), title: z.string(), description: z.string().nullable(), edgeCount: z.number() })), hubNodes: z.array(z.object({ id: z.number(), title: z.string(), description: z.string().nullable(), edgeCount: z.number() })),
dimensions: z.array(z.object({ name: z.string(), nodeCount: z.number(), description: z.string().nullable() })), dimensions: z.array(z.object({ name: z.string(), nodeCount: z.number(), description: z.string().nullable() })),
guides: z.array(z.string()) guides: z.array(z.string())
@@ -853,7 +853,7 @@ mcpServer.registerTool(
return { return {
content: [{ type: 'text', text: `Knowledge graph: ${stats.dimensionCount} dimensions, ${hubNodes.length} hub nodes. ${guides.length} guides available.` }], content: [{ type: 'text', text: `Knowledge graph: ${stats.dimensionCount} dimensions, ${hubNodes.length} hub nodes. ${guides.length} guides available.` }],
structuredContent: { schema: stats, hubNodes, dimensions, guides } structuredContent: { stats, hubNodes, dimensions, guides }
}; };
} }
); );