mindgraph-mcp 0.24.0 → 0.25.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -5,6 +5,9 @@
5
5
 
6
6
  Model Context Protocol server for [MindGraph](https://mindgraph.cloud) — plug your persistent, structured knowledge graph into Claude Desktop, Claude Code, Codex, and any MCP-compatible client.
7
7
 
8
+ Requires Node.js 20 or later. Speaks MCP revision 2026-07-28 and the 2025
9
+ revisions, over stdio and hosted Streamable HTTP.
10
+
8
11
  ## Install
9
12
 
10
13
  The fastest way to install is the interactive setup:
package/dist/cli.js CHANGED
@@ -2728,15 +2728,15 @@ function refreshHookRunner(serverVersion, sourceBundle, homeDir) {
2728
2728
  if (!import_node_fs6.default.existsSync(sourceBundle)) {
2729
2729
  return { refreshed: false, reason: "no_source" };
2730
2730
  }
2731
- const server2 = parseSemver(serverVersion);
2732
- if (!server2) return { refreshed: false, reason: "unparseable" };
2731
+ const server = parseSemver(serverVersion);
2732
+ if (!server) return { refreshed: false, reason: "unparseable" };
2733
2733
  const runnerVersion = installedHookRunnerVersion(home);
2734
2734
  if (runnerVersion !== void 0) {
2735
2735
  const pinned = parseSemver(runnerVersion);
2736
2736
  if (!pinned) {
2737
2737
  return { refreshed: false, reason: "unparseable", runnerVersion };
2738
2738
  }
2739
- if (!semverNewer(server2, pinned)) {
2739
+ if (!semverNewer(server, pinned)) {
2740
2740
  return {
2741
2741
  refreshed: false,
2742
2742
  reason: runnerVersion === serverVersion ? "current" : "downgrade",
@@ -7869,14 +7869,14 @@ var init_tools = __esm({
7869
7869
  // src/server.ts
7870
7870
  function buildMindGraphServer(wiring) {
7871
7871
  const { client: client2, hosted } = wiring;
7872
- const server2 = new import_server.Server(
7872
+ const server = new import_server.Server(
7873
7873
  { name: "mindgraph", version: wiring.serverVersion },
7874
7874
  {
7875
7875
  capabilities: { tools: {}, resources: {}, prompts: {} },
7876
7876
  instructions: wiring.instructions
7877
7877
  }
7878
7878
  );
7879
- server2.setRequestHandler(import_types.ListToolsRequestSchema, async () => {
7879
+ server.setRequestHandler("tools/list", async () => {
7880
7880
  const generated = await getGeneratedTools(client2, wiring.generatedTools);
7881
7881
  const tools = [...toolsForProfile(wiring.profile), ...generated.tools];
7882
7882
  if (!hosted) return { tools };
@@ -7887,7 +7887,7 @@ function buildMindGraphServer(wiring) {
7887
7887
  ]
7888
7888
  };
7889
7889
  });
7890
- server2.setRequestHandler(import_types.CallToolRequestSchema, async (request) => {
7890
+ server.setRequestHandler("tools/call", async (request) => {
7891
7891
  const { name, arguments: args } = request.params;
7892
7892
  const rawArgs = {
7893
7893
  ...args || {},
@@ -7934,20 +7934,20 @@ function buildMindGraphServer(wiring) {
7934
7934
  }
7935
7935
  return handleTool(client2, name, toolArgs, wiring.memory);
7936
7936
  });
7937
- server2.setRequestHandler(import_types.ListPromptsRequestSchema, async () => {
7937
+ server.setRequestHandler("prompts/list", async () => {
7938
7938
  return { prompts: PROMPTS };
7939
7939
  });
7940
- server2.setRequestHandler(import_types.GetPromptRequestSchema, async (request) => {
7940
+ server.setRequestHandler("prompts/get", async (request) => {
7941
7941
  const { name, arguments: args } = request.params;
7942
7942
  return getPrompt(name, args);
7943
7943
  });
7944
- server2.setRequestHandler(import_types.ListResourcesRequestSchema, async () => {
7944
+ server.setRequestHandler("resources/list", async () => {
7945
7945
  return { resources: RESOURCES };
7946
7946
  });
7947
- server2.setRequestHandler(import_types.ListResourceTemplatesRequestSchema, async () => {
7947
+ server.setRequestHandler("resources/templates/list", async () => {
7948
7948
  return { resourceTemplates: RESOURCE_TEMPLATES };
7949
7949
  });
7950
- server2.setRequestHandler(import_types.ReadResourceRequestSchema, async (request) => {
7950
+ server.setRequestHandler("resources/read", async (request) => {
7951
7951
  return readGovernedResource(
7952
7952
  client2,
7953
7953
  request.params.uri,
@@ -7955,15 +7955,13 @@ function buildMindGraphServer(wiring) {
7955
7955
  wiring.memory
7956
7956
  );
7957
7957
  });
7958
- return server2;
7958
+ return server;
7959
7959
  }
7960
- var import_server, import_webStandardStreamableHttp, import_types;
7960
+ var import_server;
7961
7961
  var init_server = __esm({
7962
7962
  "src/server.ts"() {
7963
7963
  "use strict";
7964
- import_server = require("@modelcontextprotocol/sdk/server/index.js");
7965
- import_webStandardStreamableHttp = require("@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js");
7966
- import_types = require("@modelcontextprotocol/sdk/types.js");
7964
+ import_server = require("@modelcontextprotocol/server");
7967
7965
  init_generated_tools();
7968
7966
  init_governance();
7969
7967
  init_hosted_tools();
@@ -7976,18 +7974,19 @@ var init_server = __esm({
7976
7974
  // src/index.ts
7977
7975
  var src_exports = {};
7978
7976
  async function main() {
7979
- const transport = new import_stdio.StdioServerTransport();
7980
- await server.connect(transport);
7977
+ (0, import_stdio.serveStdio)(buildServer, {
7978
+ onerror: (error2) => console.error("MindGraph MCP transport error:", error2.message)
7979
+ });
7981
7980
  console.error(
7982
- `MindGraph MCP server v${"0.24.0"} running on stdio (${BASE_URL})`
7981
+ `MindGraph MCP server v${"0.25.0"} running on stdio (${BASE_URL})`
7983
7982
  );
7984
7983
  }
7985
- var import_stdio, import_node_path7, API_KEY, BASE_URL, AGENT_ID, ORG_ID, PROFILE, HARNESS, client, INSTRUCTIONS, RUNNER_REFRESH, HOOK_SKEW_NOTE, GOVERNANCE_CONFIG, MEMORY_RUNTIME_CONFIG, server;
7984
+ var import_stdio, import_node_path7, API_KEY, BASE_URL, AGENT_ID, ORG_ID, PROFILE, HARNESS, client, INSTRUCTIONS, RUNNER_REFRESH, HOOK_SKEW_NOTE, GOVERNANCE_CONFIG, MEMORY_RUNTIME_CONFIG, buildServer;
7986
7985
  var init_src = __esm({
7987
7986
  "src/index.ts"() {
7988
7987
  "use strict";
7989
7988
  init_call_ledger();
7990
- import_stdio = require("@modelcontextprotocol/sdk/server/stdio.js");
7989
+ import_stdio = require("@modelcontextprotocol/server/stdio");
7991
7990
  init_dist();
7992
7991
  init_hook_env();
7993
7992
  init_server();
@@ -8092,7 +8091,7 @@ Capture knowledge when the user shares something worth remembering:
8092
8091
  }
8093
8092
  RUNNER_REFRESH = (() => {
8094
8093
  try {
8095
- return refreshHookRunner("0.24.0", import_node_path7.default.join(__dirname, "cli.js"));
8094
+ return refreshHookRunner("0.25.0", import_node_path7.default.join(__dirname, "cli.js"));
8096
8095
  } catch {
8097
8096
  return void 0;
8098
8097
  }
@@ -8106,12 +8105,12 @@ Capture knowledge when the user shares something worth remembering:
8106
8105
  }
8107
8106
  })();
8108
8107
  console.error(
8109
- `[mindgraph-mcp] refreshed pinned hook runner ${RUNNER_REFRESH.runnerVersion ? `v${RUNNER_REFRESH.runnerVersion}` : "(pre-sidecar)"} \u2192 v${"0.24.0"}` + (refreshedSettings.length > 0 ? `; refreshed owned hook entries in ${refreshedSettings.join(", ")}` : "")
8108
+ `[mindgraph-mcp] refreshed pinned hook runner ${RUNNER_REFRESH.runnerVersion ? `v${RUNNER_REFRESH.runnerVersion}` : "(pre-sidecar)"} \u2192 v${"0.25.0"}` + (refreshedSettings.length > 0 ? `; refreshed owned hook entries in ${refreshedSettings.join(", ")}` : "")
8110
8109
  );
8111
8110
  }
8112
8111
  HOOK_SKEW_NOTE = (() => {
8113
8112
  try {
8114
- return versionSkewNote("0.24.0");
8113
+ return versionSkewNote("0.25.0");
8115
8114
  } catch {
8116
8115
  return void 0;
8117
8116
  }
@@ -8132,16 +8131,16 @@ ${HOOK_SKEW_NOTE}`;
8132
8131
  }
8133
8132
  };
8134
8133
  MEMORY_RUNTIME_CONFIG = {
8135
- serverVersion: "0.24.0",
8134
+ serverVersion: "0.25.0",
8136
8135
  baseUrl: BASE_URL,
8137
8136
  profile: PROFILE,
8138
8137
  harness: HARNESS,
8139
8138
  orgId: ORG_ID,
8140
8139
  agentId: AGENT_ID
8141
8140
  };
8142
- server = buildMindGraphServer({
8141
+ buildServer = () => buildMindGraphServer({
8143
8142
  client,
8144
- serverVersion: "0.24.0",
8143
+ serverVersion: "0.25.0",
8145
8144
  instructions: INSTRUCTIONS,
8146
8145
  profile: PROFILE,
8147
8146
  agentId: AGENT_ID,
@@ -10122,7 +10121,7 @@ function latestTranscript(cwd) {
10122
10121
  }
10123
10122
  function finishCodeInstall(apiKey, baseUrl, withHooks, agentId) {
10124
10123
  if (withHooks) {
10125
- const runner = installHookRunner(__filename, void 0, "0.24.0");
10124
+ const runner = installHookRunner(__filename, void 0, "0.25.0");
10126
10125
  console.log(`Installed pinned hook runner at ${runner}`);
10127
10126
  const features = claudeHookFeatures();
10128
10127
  const result = installClaudeHooks("user", void 0, features);
@@ -10450,7 +10449,7 @@ ${total} skill(s) synced.`);
10450
10449
  if (hookHarness !== "claude-code" && hookHarness !== "codex") {
10451
10450
  throw new Error("--harness must be claude-code or codex");
10452
10451
  }
10453
- const runner = installHookRunner(__filename, void 0, "0.24.0");
10452
+ const runner = installHookRunner(__filename, void 0, "0.25.0");
10454
10453
  console.log(`Installed pinned hook runner at ${runner}`);
10455
10454
  const features = hookHarness === "claude-code" ? claudeHookFeatures() : void 0;
10456
10455
  const result = hookHarness === "codex" ? installCodexHooks(scope, projectDir) : installClaudeHooks(scope, projectDir, features);
package/dist/index.js CHANGED
@@ -78,7 +78,7 @@ function resolvePendingCall(toolName, toolInput, options = {}) {
78
78
  }
79
79
 
80
80
  // src/index.ts
81
- var import_stdio = require("@modelcontextprotocol/sdk/server/stdio.js");
81
+ var import_stdio = require("@modelcontextprotocol/server/stdio");
82
82
  var import_mindgraph3 = require("mindgraph");
83
83
 
84
84
  // src/hook-env.ts
@@ -116,9 +116,7 @@ function loadHookEnv(dir) {
116
116
  }
117
117
 
118
118
  // src/server.ts
119
- var import_server = require("@modelcontextprotocol/sdk/server/index.js");
120
- var import_webStandardStreamableHttp = require("@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js");
121
- var import_types = require("@modelcontextprotocol/sdk/types.js");
119
+ var import_server = require("@modelcontextprotocol/server");
122
120
 
123
121
  // src/error-detail.ts
124
122
  var import_mindgraph = require("mindgraph");
@@ -6270,14 +6268,14 @@ async function handleOntology(client2, args) {
6270
6268
  // src/server.ts
6271
6269
  function buildMindGraphServer(wiring) {
6272
6270
  const { client: client2, hosted } = wiring;
6273
- const server2 = new import_server.Server(
6271
+ const server = new import_server.Server(
6274
6272
  { name: "mindgraph", version: wiring.serverVersion },
6275
6273
  {
6276
6274
  capabilities: { tools: {}, resources: {}, prompts: {} },
6277
6275
  instructions: wiring.instructions
6278
6276
  }
6279
6277
  );
6280
- server2.setRequestHandler(import_types.ListToolsRequestSchema, async () => {
6278
+ server.setRequestHandler("tools/list", async () => {
6281
6279
  const generated = await getGeneratedTools(client2, wiring.generatedTools);
6282
6280
  const tools = [...toolsForProfile(wiring.profile), ...generated.tools];
6283
6281
  if (!hosted) return { tools };
@@ -6288,7 +6286,7 @@ function buildMindGraphServer(wiring) {
6288
6286
  ]
6289
6287
  };
6290
6288
  });
6291
- server2.setRequestHandler(import_types.CallToolRequestSchema, async (request) => {
6289
+ server.setRequestHandler("tools/call", async (request) => {
6292
6290
  const { name, arguments: args } = request.params;
6293
6291
  const rawArgs = {
6294
6292
  ...args || {},
@@ -6335,20 +6333,20 @@ function buildMindGraphServer(wiring) {
6335
6333
  }
6336
6334
  return handleTool(client2, name, toolArgs, wiring.memory);
6337
6335
  });
6338
- server2.setRequestHandler(import_types.ListPromptsRequestSchema, async () => {
6336
+ server.setRequestHandler("prompts/list", async () => {
6339
6337
  return { prompts: PROMPTS };
6340
6338
  });
6341
- server2.setRequestHandler(import_types.GetPromptRequestSchema, async (request) => {
6339
+ server.setRequestHandler("prompts/get", async (request) => {
6342
6340
  const { name, arguments: args } = request.params;
6343
6341
  return getPrompt(name, args);
6344
6342
  });
6345
- server2.setRequestHandler(import_types.ListResourcesRequestSchema, async () => {
6343
+ server.setRequestHandler("resources/list", async () => {
6346
6344
  return { resources: RESOURCES };
6347
6345
  });
6348
- server2.setRequestHandler(import_types.ListResourceTemplatesRequestSchema, async () => {
6346
+ server.setRequestHandler("resources/templates/list", async () => {
6349
6347
  return { resourceTemplates: RESOURCE_TEMPLATES };
6350
6348
  });
6351
- server2.setRequestHandler(import_types.ReadResourceRequestSchema, async (request) => {
6349
+ server.setRequestHandler("resources/read", async (request) => {
6352
6350
  return readGovernedResource(
6353
6351
  client2,
6354
6352
  request.params.uri,
@@ -6356,7 +6354,7 @@ function buildMindGraphServer(wiring) {
6356
6354
  wiring.memory
6357
6355
  );
6358
6356
  });
6359
- return server2;
6357
+ return server;
6360
6358
  }
6361
6359
 
6362
6360
  // src/index.ts
@@ -6432,15 +6430,15 @@ function refreshHookRunner(serverVersion, sourceBundle, homeDir) {
6432
6430
  if (!import_node_fs5.default.existsSync(sourceBundle)) {
6433
6431
  return { refreshed: false, reason: "no_source" };
6434
6432
  }
6435
- const server2 = parseSemver(serverVersion);
6436
- if (!server2) return { refreshed: false, reason: "unparseable" };
6433
+ const server = parseSemver(serverVersion);
6434
+ if (!server) return { refreshed: false, reason: "unparseable" };
6437
6435
  const runnerVersion = installedHookRunnerVersion(home);
6438
6436
  if (runnerVersion !== void 0) {
6439
6437
  const pinned = parseSemver(runnerVersion);
6440
6438
  if (!pinned) {
6441
6439
  return { refreshed: false, reason: "unparseable", runnerVersion };
6442
6440
  }
6443
- if (!semverNewer(server2, pinned)) {
6441
+ if (!semverNewer(server, pinned)) {
6444
6442
  return {
6445
6443
  refreshed: false,
6446
6444
  reason: runnerVersion === serverVersion ? "current" : "downgrade",
@@ -6717,7 +6715,7 @@ if (PROFILE === "coding") {
6717
6715
  }
6718
6716
  var RUNNER_REFRESH = (() => {
6719
6717
  try {
6720
- return refreshHookRunner("0.24.0", import_node_path6.default.join(__dirname, "cli.js"));
6718
+ return refreshHookRunner("0.25.0", import_node_path6.default.join(__dirname, "cli.js"));
6721
6719
  } catch {
6722
6720
  return void 0;
6723
6721
  }
@@ -6731,12 +6729,12 @@ if (RUNNER_REFRESH?.refreshed) {
6731
6729
  }
6732
6730
  })();
6733
6731
  console.error(
6734
- `[mindgraph-mcp] refreshed pinned hook runner ${RUNNER_REFRESH.runnerVersion ? `v${RUNNER_REFRESH.runnerVersion}` : "(pre-sidecar)"} \u2192 v${"0.24.0"}` + (refreshedSettings.length > 0 ? `; refreshed owned hook entries in ${refreshedSettings.join(", ")}` : "")
6732
+ `[mindgraph-mcp] refreshed pinned hook runner ${RUNNER_REFRESH.runnerVersion ? `v${RUNNER_REFRESH.runnerVersion}` : "(pre-sidecar)"} \u2192 v${"0.25.0"}` + (refreshedSettings.length > 0 ? `; refreshed owned hook entries in ${refreshedSettings.join(", ")}` : "")
6735
6733
  );
6736
6734
  }
6737
6735
  var HOOK_SKEW_NOTE = (() => {
6738
6736
  try {
6739
- return versionSkewNote("0.24.0");
6737
+ return versionSkewNote("0.25.0");
6740
6738
  } catch {
6741
6739
  return void 0;
6742
6740
  }
@@ -6757,16 +6755,16 @@ var GOVERNANCE_CONFIG = {
6757
6755
  }
6758
6756
  };
6759
6757
  var MEMORY_RUNTIME_CONFIG = {
6760
- serverVersion: "0.24.0",
6758
+ serverVersion: "0.25.0",
6761
6759
  baseUrl: BASE_URL,
6762
6760
  profile: PROFILE,
6763
6761
  harness: HARNESS,
6764
6762
  orgId: ORG_ID,
6765
6763
  agentId: AGENT_ID
6766
6764
  };
6767
- var server = buildMindGraphServer({
6765
+ var buildServer = () => buildMindGraphServer({
6768
6766
  client,
6769
- serverVersion: "0.24.0",
6767
+ serverVersion: "0.25.0",
6770
6768
  instructions: INSTRUCTIONS,
6771
6769
  profile: PROFILE,
6772
6770
  agentId: AGENT_ID,
@@ -6775,10 +6773,11 @@ var server = buildMindGraphServer({
6775
6773
  resolveHookFields: (name, args) => resolvePendingCall(name, args)
6776
6774
  });
6777
6775
  async function main() {
6778
- const transport = new import_stdio.StdioServerTransport();
6779
- await server.connect(transport);
6776
+ (0, import_stdio.serveStdio)(buildServer, {
6777
+ onerror: (error2) => console.error("MindGraph MCP transport error:", error2.message)
6778
+ });
6780
6779
  console.error(
6781
- `MindGraph MCP server v${"0.24.0"} running on stdio (${BASE_URL})`
6780
+ `MindGraph MCP server v${"0.25.0"} running on stdio (${BASE_URL})`
6782
6781
  );
6783
6782
  }
6784
6783
  main().catch((error2) => {
package/dist/server.d.mts CHANGED
@@ -1,6 +1,5 @@
1
- import { Server } from '@modelcontextprotocol/sdk/server/index.js';
1
+ import { Tool, Server } from '@modelcontextprotocol/server';
2
2
  import { MindGraph } from 'mindgraph';
3
- import { Tool } from '@modelcontextprotocol/sdk/types.js';
4
3
 
5
4
  interface GeneratedToolDescriptor {
6
5
  name: string;
@@ -130,7 +129,9 @@ declare function createMindGraphServer(opts: MindGraphServerOptions): Server;
130
129
  /**
131
130
  * Serve one Streamable HTTP request statelessly (D6). The caller has already
132
131
  * verified the bearer and resolved `opts`; this helper owns only the JSON-RPC
133
- * surface: non-POST → 405, unparsable → 400, batches → 400, else the SDK.
132
+ * surface: non-POST → 405, unparsable → 400, batches → 400, else the SDK —
133
+ * the 2026-07-28 path for requests that carry the per-request envelope, the
134
+ * 2025 stateless path for every other client.
134
135
  */
135
136
  declare function handleHostedRequest(request: Request, opts: MindGraphServerOptions): Promise<Response>;
136
137
 
package/dist/server.d.ts CHANGED
@@ -1,6 +1,5 @@
1
- import { Server } from '@modelcontextprotocol/sdk/server/index.js';
1
+ import { Tool, Server } from '@modelcontextprotocol/server';
2
2
  import { MindGraph } from 'mindgraph';
3
- import { Tool } from '@modelcontextprotocol/sdk/types.js';
4
3
 
5
4
  interface GeneratedToolDescriptor {
6
5
  name: string;
@@ -130,7 +129,9 @@ declare function createMindGraphServer(opts: MindGraphServerOptions): Server;
130
129
  /**
131
130
  * Serve one Streamable HTTP request statelessly (D6). The caller has already
132
131
  * verified the bearer and resolved `opts`; this helper owns only the JSON-RPC
133
- * surface: non-POST → 405, unparsable → 400, batches → 400, else the SDK.
132
+ * surface: non-POST → 405, unparsable → 400, batches → 400, else the SDK —
133
+ * the 2026-07-28 path for requests that carry the per-request envelope, the
134
+ * 2025 stateless path for every other client.
134
135
  */
135
136
  declare function handleHostedRequest(request: Request, opts: MindGraphServerOptions): Promise<Response>;
136
137
 
package/dist/server.js CHANGED
@@ -35,9 +35,7 @@ __export(server_exports, {
35
35
  handleHostedRequest: () => handleHostedRequest
36
36
  });
37
37
  module.exports = __toCommonJS(server_exports);
38
- var import_server = require("@modelcontextprotocol/sdk/server/index.js");
39
- var import_webStandardStreamableHttp = require("@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js");
40
- var import_types = require("@modelcontextprotocol/sdk/types.js");
38
+ var import_server = require("@modelcontextprotocol/server");
41
39
 
42
40
  // src/error-detail.ts
43
41
  var import_mindgraph = require("mindgraph");
@@ -6209,7 +6207,7 @@ function buildMindGraphServer(wiring) {
6209
6207
  instructions: wiring.instructions
6210
6208
  }
6211
6209
  );
6212
- server.setRequestHandler(import_types.ListToolsRequestSchema, async () => {
6210
+ server.setRequestHandler("tools/list", async () => {
6213
6211
  const generated = await getGeneratedTools(client, wiring.generatedTools);
6214
6212
  const tools = [...toolsForProfile(wiring.profile), ...generated.tools];
6215
6213
  if (!hosted) return { tools };
@@ -6220,7 +6218,7 @@ function buildMindGraphServer(wiring) {
6220
6218
  ]
6221
6219
  };
6222
6220
  });
6223
- server.setRequestHandler(import_types.CallToolRequestSchema, async (request) => {
6221
+ server.setRequestHandler("tools/call", async (request) => {
6224
6222
  const { name, arguments: args } = request.params;
6225
6223
  const rawArgs = {
6226
6224
  ...args || {},
@@ -6267,20 +6265,20 @@ function buildMindGraphServer(wiring) {
6267
6265
  }
6268
6266
  return handleTool(client, name, toolArgs, wiring.memory);
6269
6267
  });
6270
- server.setRequestHandler(import_types.ListPromptsRequestSchema, async () => {
6268
+ server.setRequestHandler("prompts/list", async () => {
6271
6269
  return { prompts: PROMPTS };
6272
6270
  });
6273
- server.setRequestHandler(import_types.GetPromptRequestSchema, async (request) => {
6271
+ server.setRequestHandler("prompts/get", async (request) => {
6274
6272
  const { name, arguments: args } = request.params;
6275
6273
  return getPrompt(name, args);
6276
6274
  });
6277
- server.setRequestHandler(import_types.ListResourcesRequestSchema, async () => {
6275
+ server.setRequestHandler("resources/list", async () => {
6278
6276
  return { resources: RESOURCES };
6279
6277
  });
6280
- server.setRequestHandler(import_types.ListResourceTemplatesRequestSchema, async () => {
6278
+ server.setRequestHandler("resources/templates/list", async () => {
6281
6279
  return { resourceTemplates: RESOURCE_TEMPLATES };
6282
6280
  });
6283
- server.setRequestHandler(import_types.ReadResourceRequestSchema, async (request) => {
6281
+ server.setRequestHandler("resources/read", async (request) => {
6284
6282
  return readGovernedResource(
6285
6283
  client,
6286
6284
  request.params.uri,
@@ -6346,8 +6344,21 @@ async function handleHostedRequest(request, opts) {
6346
6344
  if (Array.isArray(parsedBody)) {
6347
6345
  return jsonRpcError(400, -32600, "JSON-RPC batches are not accepted");
6348
6346
  }
6347
+ if (!await (0, import_server.isLegacyRequest)(request, parsedBody)) {
6348
+ const modern = (0, import_server.createMcpHandler)(() => createMindGraphServer(opts), {
6349
+ legacy: "reject"
6350
+ // Default response mode: one JSON body unless a handler emits a message
6351
+ // before its result. No tool does today; a tool that starts emitting
6352
+ // progress must also stop this function closing the handler on return.
6353
+ });
6354
+ try {
6355
+ return await modern.fetch(request, { parsedBody });
6356
+ } finally {
6357
+ await modern.close();
6358
+ }
6359
+ }
6349
6360
  const server = createMindGraphServer(opts);
6350
- const transport = new import_webStandardStreamableHttp.WebStandardStreamableHTTPServerTransport({
6361
+ const transport = new import_server.WebStandardStreamableHTTPServerTransport({
6351
6362
  sessionIdGenerator: void 0,
6352
6363
  enableJsonResponse: true
6353
6364
  });
package/dist/server.mjs CHANGED
@@ -1,15 +1,10 @@
1
1
  // src/server.ts
2
- import { Server } from "@modelcontextprotocol/sdk/server/index.js";
3
- import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";
4
2
  import {
5
- CallToolRequestSchema,
6
- GetPromptRequestSchema,
7
- ListPromptsRequestSchema,
8
- ListResourcesRequestSchema,
9
- ListResourceTemplatesRequestSchema,
10
- ListToolsRequestSchema,
11
- ReadResourceRequestSchema
12
- } from "@modelcontextprotocol/sdk/types.js";
3
+ createMcpHandler,
4
+ isLegacyRequest,
5
+ Server,
6
+ WebStandardStreamableHTTPServerTransport
7
+ } from "@modelcontextprotocol/server";
13
8
 
14
9
  // src/error-detail.ts
15
10
  import { MindGraphError } from "mindgraph";
@@ -6196,7 +6191,7 @@ function buildMindGraphServer(wiring) {
6196
6191
  instructions: wiring.instructions
6197
6192
  }
6198
6193
  );
6199
- server.setRequestHandler(ListToolsRequestSchema, async () => {
6194
+ server.setRequestHandler("tools/list", async () => {
6200
6195
  const generated = await getGeneratedTools(client, wiring.generatedTools);
6201
6196
  const tools = [...toolsForProfile(wiring.profile), ...generated.tools];
6202
6197
  if (!hosted) return { tools };
@@ -6207,7 +6202,7 @@ function buildMindGraphServer(wiring) {
6207
6202
  ]
6208
6203
  };
6209
6204
  });
6210
- server.setRequestHandler(CallToolRequestSchema, async (request) => {
6205
+ server.setRequestHandler("tools/call", async (request) => {
6211
6206
  const { name, arguments: args } = request.params;
6212
6207
  const rawArgs = {
6213
6208
  ...args || {},
@@ -6254,20 +6249,20 @@ function buildMindGraphServer(wiring) {
6254
6249
  }
6255
6250
  return handleTool(client, name, toolArgs, wiring.memory);
6256
6251
  });
6257
- server.setRequestHandler(ListPromptsRequestSchema, async () => {
6252
+ server.setRequestHandler("prompts/list", async () => {
6258
6253
  return { prompts: PROMPTS };
6259
6254
  });
6260
- server.setRequestHandler(GetPromptRequestSchema, async (request) => {
6255
+ server.setRequestHandler("prompts/get", async (request) => {
6261
6256
  const { name, arguments: args } = request.params;
6262
6257
  return getPrompt(name, args);
6263
6258
  });
6264
- server.setRequestHandler(ListResourcesRequestSchema, async () => {
6259
+ server.setRequestHandler("resources/list", async () => {
6265
6260
  return { resources: RESOURCES };
6266
6261
  });
6267
- server.setRequestHandler(ListResourceTemplatesRequestSchema, async () => {
6262
+ server.setRequestHandler("resources/templates/list", async () => {
6268
6263
  return { resourceTemplates: RESOURCE_TEMPLATES };
6269
6264
  });
6270
- server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
6265
+ server.setRequestHandler("resources/read", async (request) => {
6271
6266
  return readGovernedResource(
6272
6267
  client,
6273
6268
  request.params.uri,
@@ -6333,6 +6328,19 @@ async function handleHostedRequest(request, opts) {
6333
6328
  if (Array.isArray(parsedBody)) {
6334
6329
  return jsonRpcError(400, -32600, "JSON-RPC batches are not accepted");
6335
6330
  }
6331
+ if (!await isLegacyRequest(request, parsedBody)) {
6332
+ const modern = createMcpHandler(() => createMindGraphServer(opts), {
6333
+ legacy: "reject"
6334
+ // Default response mode: one JSON body unless a handler emits a message
6335
+ // before its result. No tool does today; a tool that starts emitting
6336
+ // progress must also stop this function closing the handler on return.
6337
+ });
6338
+ try {
6339
+ return await modern.fetch(request, { parsedBody });
6340
+ } finally {
6341
+ await modern.close();
6342
+ }
6343
+ }
6336
6344
  const server = createMindGraphServer(opts);
6337
6345
  const transport = new WebStandardStreamableHTTPServerTransport({
6338
6346
  sessionIdGenerator: void 0,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mindgraph-mcp",
3
- "version": "0.24.0",
4
- "description": "MCP server for MindGraph — connect Claude Desktop, Claude Code, and any MCP client to your knowledge graph",
3
+ "version": "0.25.0",
4
+ "description": "MCP server for MindGraph \u2014 connect Claude Desktop, Claude Code, and any MCP client to your knowledge graph",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/shuruheel/mindgraph-mcp.git"
@@ -42,11 +42,15 @@
42
42
  "agent"
43
43
  ],
44
44
  "license": "MIT",
45
+ "engines": {
46
+ "node": ">=20"
47
+ },
45
48
  "dependencies": {
46
- "@modelcontextprotocol/sdk": "^1.25.0",
49
+ "@modelcontextprotocol/server": "^2.4.0",
47
50
  "mindgraph": "^0.17.0"
48
51
  },
49
52
  "devDependencies": {
53
+ "@modelcontextprotocol/client": "^2.4.0",
50
54
  "@types/node": "^22.0.0",
51
55
  "tsup": "^8.0.0",
52
56
  "typescript": "^5.7.0",