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 +3 -0
- package/dist/cli.js +28 -29
- package/dist/index.js +24 -25
- package/dist/server.d.mts +4 -3
- package/dist/server.d.ts +4 -3
- package/dist/server.js +22 -11
- package/dist/server.mjs +25 -17
- package/package.json +7 -3
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
|
|
2732
|
-
if (!
|
|
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(
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
7937
|
+
server.setRequestHandler("prompts/list", async () => {
|
|
7938
7938
|
return { prompts: PROMPTS };
|
|
7939
7939
|
});
|
|
7940
|
-
|
|
7940
|
+
server.setRequestHandler("prompts/get", async (request) => {
|
|
7941
7941
|
const { name, arguments: args } = request.params;
|
|
7942
7942
|
return getPrompt(name, args);
|
|
7943
7943
|
});
|
|
7944
|
-
|
|
7944
|
+
server.setRequestHandler("resources/list", async () => {
|
|
7945
7945
|
return { resources: RESOURCES };
|
|
7946
7946
|
});
|
|
7947
|
-
|
|
7947
|
+
server.setRequestHandler("resources/templates/list", async () => {
|
|
7948
7948
|
return { resourceTemplates: RESOURCE_TEMPLATES };
|
|
7949
7949
|
});
|
|
7950
|
-
|
|
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
|
|
7958
|
+
return server;
|
|
7959
7959
|
}
|
|
7960
|
-
var import_server
|
|
7960
|
+
var import_server;
|
|
7961
7961
|
var init_server = __esm({
|
|
7962
7962
|
"src/server.ts"() {
|
|
7963
7963
|
"use strict";
|
|
7964
|
-
import_server = require("@modelcontextprotocol/
|
|
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
|
-
|
|
7980
|
-
|
|
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.
|
|
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,
|
|
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/
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
8141
|
+
buildServer = () => buildMindGraphServer({
|
|
8143
8142
|
client,
|
|
8144
|
-
serverVersion: "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.
|
|
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.
|
|
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/
|
|
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/
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
6336
|
+
server.setRequestHandler("prompts/list", async () => {
|
|
6339
6337
|
return { prompts: PROMPTS };
|
|
6340
6338
|
});
|
|
6341
|
-
|
|
6339
|
+
server.setRequestHandler("prompts/get", async (request) => {
|
|
6342
6340
|
const { name, arguments: args } = request.params;
|
|
6343
6341
|
return getPrompt(name, args);
|
|
6344
6342
|
});
|
|
6345
|
-
|
|
6343
|
+
server.setRequestHandler("resources/list", async () => {
|
|
6346
6344
|
return { resources: RESOURCES };
|
|
6347
6345
|
});
|
|
6348
|
-
|
|
6346
|
+
server.setRequestHandler("resources/templates/list", async () => {
|
|
6349
6347
|
return { resourceTemplates: RESOURCE_TEMPLATES };
|
|
6350
6348
|
});
|
|
6351
|
-
|
|
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
|
|
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
|
|
6436
|
-
if (!
|
|
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(
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
|
6765
|
+
var buildServer = () => buildMindGraphServer({
|
|
6768
6766
|
client,
|
|
6769
|
-
serverVersion: "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
|
-
|
|
6779
|
-
|
|
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.
|
|
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/
|
|
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/
|
|
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/
|
|
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(
|
|
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(
|
|
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(
|
|
6268
|
+
server.setRequestHandler("prompts/list", async () => {
|
|
6271
6269
|
return { prompts: PROMPTS };
|
|
6272
6270
|
});
|
|
6273
|
-
server.setRequestHandler(
|
|
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(
|
|
6275
|
+
server.setRequestHandler("resources/list", async () => {
|
|
6278
6276
|
return { resources: RESOURCES };
|
|
6279
6277
|
});
|
|
6280
|
-
server.setRequestHandler(
|
|
6278
|
+
server.setRequestHandler("resources/templates/list", async () => {
|
|
6281
6279
|
return { resourceTemplates: RESOURCE_TEMPLATES };
|
|
6282
6280
|
});
|
|
6283
|
-
server.setRequestHandler(
|
|
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
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
6252
|
+
server.setRequestHandler("prompts/list", async () => {
|
|
6258
6253
|
return { prompts: PROMPTS };
|
|
6259
6254
|
});
|
|
6260
|
-
server.setRequestHandler(
|
|
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(
|
|
6259
|
+
server.setRequestHandler("resources/list", async () => {
|
|
6265
6260
|
return { resources: RESOURCES };
|
|
6266
6261
|
});
|
|
6267
|
-
server.setRequestHandler(
|
|
6262
|
+
server.setRequestHandler("resources/templates/list", async () => {
|
|
6268
6263
|
return { resourceTemplates: RESOURCE_TEMPLATES };
|
|
6269
6264
|
});
|
|
6270
|
-
server.setRequestHandler(
|
|
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.
|
|
4
|
-
"description": "MCP server for MindGraph
|
|
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/
|
|
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",
|