@grackle-ai/mcp 0.67.0 → 0.68.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/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/tools/index.d.ts +0 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +0 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/knowledge.d.ts +2 -10
- package/dist/tools/knowledge.d.ts.map +1 -1
- package/dist/tools/knowledge.js +97 -163
- package/dist/tools/knowledge.js.map +1 -1
- package/package.json +2 -3
package/dist/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export { verifyScopedToken } from "./scoped-token.js";
|
|
|
6
6
|
export { createOAuthAccessToken, verifyOAuthAccessToken } from "./oauth-token.js";
|
|
7
7
|
export { OAUTH_ACCESS_TOKEN_TTL_MS, OAUTH_REFRESH_TOKEN_TTL_MS } from "./oauth-token.js";
|
|
8
8
|
export type { OAuthTokenClaims } from "./oauth-token.js";
|
|
9
|
-
export { createToolRegistry
|
|
9
|
+
export { createToolRegistry } from "./tools/index.js";
|
|
10
10
|
export { ToolRegistry } from "./tool-registry.js";
|
|
11
11
|
export type { ToolDefinition, ToolResult } from "./tool-registry.js";
|
|
12
12
|
export { authenticateMcpRequest } from "./auth-middleware.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AACzF,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACxD,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AACzF,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,7 +3,7 @@ export { createScopedToken, revokeTask } from "./scoped-token.js";
|
|
|
3
3
|
export { verifyScopedToken } from "./scoped-token.js";
|
|
4
4
|
export { createOAuthAccessToken, verifyOAuthAccessToken } from "./oauth-token.js";
|
|
5
5
|
export { OAUTH_ACCESS_TOKEN_TTL_MS, OAUTH_REFRESH_TOKEN_TTL_MS } from "./oauth-token.js";
|
|
6
|
-
export { createToolRegistry
|
|
6
|
+
export { createToolRegistry } from "./tools/index.js";
|
|
7
7
|
export { ToolRegistry } from "./tool-registry.js";
|
|
8
8
|
export { authenticateMcpRequest } from "./auth-middleware.js";
|
|
9
9
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAEzF,OAAO,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAGlD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAClF,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAEzF,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
import { ToolRegistry } from "../tool-registry.js";
|
|
2
2
|
/** Create a ToolRegistry pre-populated with all available MCP tools. */
|
|
3
3
|
export declare function createToolRegistry(): ToolRegistry;
|
|
4
|
-
export { setKnowledgeEmbedder } from "./knowledge.js";
|
|
5
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAenD,wEAAwE;AACxE,wBAAgB,kBAAkB,IAAI,YAAY,CAgBjD
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAenD,wEAAwE;AACxE,wBAAgB,kBAAkB,IAAI,YAAY,CAgBjD"}
|
package/dist/tools/index.js
CHANGED
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,wEAAwE;AACxE,MAAM,UAAU,kBAAkB;IAChC,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACnC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACnC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACnC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IACtC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACrC,OAAO,QAAQ,CAAC;AAClB,CAAC
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD,wEAAwE;AACxE,MAAM,UAAU,kBAAkB;IAChC,MAAM,QAAQ,GAAG,IAAI,YAAY,EAAE,CAAC;IACpC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACnC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACrC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACnC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACnC,QAAQ,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IAChC,QAAQ,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IACtC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC/B,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;IACjC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACrC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -2,20 +2,12 @@
|
|
|
2
2
|
* MCP tools for the Grackle knowledge graph.
|
|
3
3
|
*
|
|
4
4
|
* Exposes high-level operations (search, retrieve, create) to agents.
|
|
5
|
-
* All
|
|
6
|
-
*
|
|
5
|
+
* All calls go through gRPC to the Grackle server — the MCP package
|
|
6
|
+
* does not access knowledge-core or Neo4j directly.
|
|
7
7
|
*
|
|
8
8
|
* @module
|
|
9
9
|
*/
|
|
10
|
-
import { type Embedder } from "@grackle-ai/knowledge";
|
|
11
10
|
import type { ToolDefinition } from "../tool-registry.js";
|
|
12
|
-
/**
|
|
13
|
-
* Set the shared embedder instance for knowledge tools.
|
|
14
|
-
*
|
|
15
|
-
* Called once by the server at startup (before MCP serves requests).
|
|
16
|
-
* Pass `undefined` to clear the embedder (e.g., for testing).
|
|
17
|
-
*/
|
|
18
|
-
export declare function setKnowledgeEmbedder(e: Embedder | undefined): void;
|
|
19
11
|
/** Knowledge graph MCP tools. */
|
|
20
12
|
export declare const knowledgeTools: ToolDefinition[];
|
|
21
13
|
//# sourceMappingURL=knowledge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge.d.ts","sourceRoot":"","sources":["../../src/tools/knowledge.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,
|
|
1
|
+
{"version":3,"file":"knowledge.d.ts","sourceRoot":"","sources":["../../src/tools/knowledge.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAwF1D,iCAAiC;AACjC,eAAO,MAAM,cAAc,EAAE,cAAc,EAmR1C,CAAC"}
|
package/dist/tools/knowledge.js
CHANGED
|
@@ -2,36 +2,13 @@
|
|
|
2
2
|
* MCP tools for the Grackle knowledge graph.
|
|
3
3
|
*
|
|
4
4
|
* Exposes high-level operations (search, retrieve, create) to agents.
|
|
5
|
-
* All
|
|
6
|
-
*
|
|
5
|
+
* All calls go through gRPC to the Grackle server — the MCP package
|
|
6
|
+
* does not access knowledge-core or Neo4j directly.
|
|
7
7
|
*
|
|
8
8
|
* @module
|
|
9
9
|
*/
|
|
10
10
|
import { z } from "zod";
|
|
11
|
-
import { knowledgeSearch, getNode, createNativeNode, createEdge, expandNode, expandResults, NATIVE_CATEGORY, EDGE_TYPE, } from "@grackle-ai/knowledge";
|
|
12
11
|
import { jsonResult } from "../result-helpers.js";
|
|
13
|
-
import { logger } from "@grackle-ai/knowledge";
|
|
14
|
-
// ---------------------------------------------------------------------------
|
|
15
|
-
// Embedder accessor — set by the server at startup
|
|
16
|
-
// ---------------------------------------------------------------------------
|
|
17
|
-
/** Module-level embedder instance, initialized by the server. */
|
|
18
|
-
let embedder;
|
|
19
|
-
/**
|
|
20
|
-
* Set the shared embedder instance for knowledge tools.
|
|
21
|
-
*
|
|
22
|
-
* Called once by the server at startup (before MCP serves requests).
|
|
23
|
-
* Pass `undefined` to clear the embedder (e.g., for testing).
|
|
24
|
-
*/
|
|
25
|
-
export function setKnowledgeEmbedder(e) {
|
|
26
|
-
embedder = e;
|
|
27
|
-
}
|
|
28
|
-
/** Get the shared embedder, throwing if not initialized. */
|
|
29
|
-
function requireEmbedder() {
|
|
30
|
-
if (!embedder) {
|
|
31
|
-
throw new Error("Knowledge graph not available. The embedder has not been initialized.");
|
|
32
|
-
}
|
|
33
|
-
return embedder;
|
|
34
|
-
}
|
|
35
12
|
// ---------------------------------------------------------------------------
|
|
36
13
|
// Constants
|
|
37
14
|
// ---------------------------------------------------------------------------
|
|
@@ -39,10 +16,18 @@ function requireEmbedder() {
|
|
|
39
16
|
const MAX_SEARCH_LIMIT = 50;
|
|
40
17
|
/** Maximum allowed expansion depth. */
|
|
41
18
|
const MAX_EXPAND_DEPTH = 5;
|
|
19
|
+
/** Valid edge type values. */
|
|
20
|
+
const EDGE_TYPES = [
|
|
21
|
+
"RELATES_TO",
|
|
22
|
+
"DEPENDS_ON",
|
|
23
|
+
"DERIVED_FROM",
|
|
24
|
+
"MENTIONS",
|
|
25
|
+
"PART_OF",
|
|
26
|
+
];
|
|
42
27
|
// ---------------------------------------------------------------------------
|
|
43
28
|
// Response formatting — hide internal details from agents
|
|
44
29
|
// ---------------------------------------------------------------------------
|
|
45
|
-
/** Format a node for agent consumption. */
|
|
30
|
+
/** Format a proto node for agent consumption. */
|
|
46
31
|
function formatNode(node) {
|
|
47
32
|
const base = {
|
|
48
33
|
id: node.id,
|
|
@@ -60,24 +45,32 @@ function formatNode(node) {
|
|
|
60
45
|
base.category = node.category;
|
|
61
46
|
base.title = node.title;
|
|
62
47
|
base.content = node.content;
|
|
63
|
-
base.tags = node.tags;
|
|
48
|
+
base.tags = [...node.tags];
|
|
64
49
|
}
|
|
65
50
|
return base;
|
|
66
51
|
}
|
|
67
|
-
/** Format
|
|
52
|
+
/** Format a proto edge for agent consumption. */
|
|
68
53
|
function formatEdge(edge) {
|
|
69
|
-
|
|
54
|
+
const result = {
|
|
70
55
|
fromId: edge.fromId,
|
|
71
56
|
toId: edge.toId,
|
|
72
57
|
type: edge.type,
|
|
73
|
-
...(edge.metadata !== undefined ? { metadata: edge.metadata } : {}),
|
|
74
58
|
};
|
|
59
|
+
if (edge.metadataJson) {
|
|
60
|
+
try {
|
|
61
|
+
result.metadata = JSON.parse(edge.metadataJson);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// ignore malformed metadata
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return result;
|
|
75
68
|
}
|
|
76
69
|
/** Format a search result for agent consumption. */
|
|
77
70
|
function formatSearchResult(result) {
|
|
78
71
|
return {
|
|
79
72
|
score: Math.round(result.score * 1000) / 1000,
|
|
80
|
-
node: formatNode(result.node),
|
|
73
|
+
node: result.node ? formatNode(result.node) : {},
|
|
81
74
|
edges: result.edges.map(formatEdge),
|
|
82
75
|
};
|
|
83
76
|
}
|
|
@@ -131,42 +124,47 @@ export const knowledgeTools = [
|
|
|
131
124
|
idempotentHint: true,
|
|
132
125
|
openWorldHint: false,
|
|
133
126
|
},
|
|
134
|
-
async handler(args) {
|
|
127
|
+
async handler(args, client) {
|
|
135
128
|
const { query, limit, workspaceId, expand, expandDepth, } = args;
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
129
|
+
const safeLimit = clampInt(limit, 1, MAX_SEARCH_LIMIT, 10);
|
|
130
|
+
const response = await client.searchKnowledge({
|
|
131
|
+
query,
|
|
132
|
+
limit: safeLimit,
|
|
133
|
+
workspaceId: workspaceId ?? "",
|
|
134
|
+
});
|
|
135
|
+
const formattedResults = response.results.map(formatSearchResult);
|
|
136
|
+
let neighbors;
|
|
137
|
+
let neighborEdges;
|
|
138
|
+
if (expand && response.results.length > 0) {
|
|
139
|
+
// Expand each result node via gRPC
|
|
140
|
+
const safeDepth = clampInt(expandDepth, 1, MAX_EXPAND_DEPTH, 1);
|
|
141
|
+
const allNeighbors = new Map();
|
|
142
|
+
const allEdges = [];
|
|
143
|
+
const startIds = new Set(response.results.map((r) => r.node?.id ?? "").filter(Boolean));
|
|
144
|
+
for (const result of response.results) {
|
|
145
|
+
if (!result.node) {
|
|
146
|
+
continue;
|
|
147
|
+
}
|
|
148
|
+
const expansion = await client.expandKnowledgeNode({
|
|
149
|
+
id: result.node.id,
|
|
145
150
|
depth: safeDepth,
|
|
146
151
|
});
|
|
147
|
-
|
|
148
|
-
|
|
152
|
+
for (const node of expansion.nodes) {
|
|
153
|
+
if (!startIds.has(node.id)) {
|
|
154
|
+
allNeighbors.set(node.id, formatNode(node));
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
for (const edge of expansion.edges) {
|
|
158
|
+
allEdges.push(formatEdge(edge));
|
|
159
|
+
}
|
|
149
160
|
}
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
...(neighbors !== undefined ? { neighbors, neighborEdges } : {}),
|
|
153
|
-
});
|
|
154
|
-
}
|
|
155
|
-
catch (error) {
|
|
156
|
-
return {
|
|
157
|
-
content: [
|
|
158
|
-
{
|
|
159
|
-
type: "text",
|
|
160
|
-
text: JSON.stringify({
|
|
161
|
-
error: error instanceof Error
|
|
162
|
-
? error.message
|
|
163
|
-
: "Knowledge search failed",
|
|
164
|
-
}, null, 2),
|
|
165
|
-
},
|
|
166
|
-
],
|
|
167
|
-
isError: true,
|
|
168
|
-
};
|
|
161
|
+
neighbors = [...allNeighbors.values()];
|
|
162
|
+
neighborEdges = allEdges;
|
|
169
163
|
}
|
|
164
|
+
return jsonResult({
|
|
165
|
+
results: formattedResults,
|
|
166
|
+
...(neighbors !== undefined ? { neighbors, neighborEdges } : {}),
|
|
167
|
+
});
|
|
170
168
|
},
|
|
171
169
|
},
|
|
172
170
|
{
|
|
@@ -196,50 +194,31 @@ export const knowledgeTools = [
|
|
|
196
194
|
idempotentHint: true,
|
|
197
195
|
openWorldHint: false,
|
|
198
196
|
},
|
|
199
|
-
async handler(args) {
|
|
197
|
+
async handler(args, client) {
|
|
200
198
|
const { id, expand, expandDepth } = args;
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
if (!result) {
|
|
204
|
-
return {
|
|
205
|
-
content: [
|
|
206
|
-
{
|
|
207
|
-
type: "text",
|
|
208
|
-
text: JSON.stringify({ error: `Node not found: ${id}` }, null, 2),
|
|
209
|
-
},
|
|
210
|
-
],
|
|
211
|
-
isError: true,
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
|
-
const response = {
|
|
215
|
-
node: formatNode(result.node),
|
|
216
|
-
edges: result.edges.map(formatEdge),
|
|
217
|
-
};
|
|
218
|
-
if (expand) {
|
|
219
|
-
const safeDepth = clampInt(expandDepth, 1, MAX_EXPAND_DEPTH, 1);
|
|
220
|
-
const expansion = await expandNode(id, {
|
|
221
|
-
depth: safeDepth,
|
|
222
|
-
});
|
|
223
|
-
response.neighbors = expansion.nodes.map(formatNode);
|
|
224
|
-
response.neighborEdges = expansion.edges.map(formatEdge);
|
|
225
|
-
}
|
|
226
|
-
return jsonResult(response);
|
|
227
|
-
}
|
|
228
|
-
catch (error) {
|
|
199
|
+
const response = await client.getKnowledgeNode({ id });
|
|
200
|
+
if (!response.node) {
|
|
229
201
|
return {
|
|
230
202
|
content: [
|
|
231
203
|
{
|
|
232
204
|
type: "text",
|
|
233
|
-
text: JSON.stringify({
|
|
234
|
-
error: error instanceof Error
|
|
235
|
-
? error.message
|
|
236
|
-
: "Failed to retrieve node",
|
|
237
|
-
}, null, 2),
|
|
205
|
+
text: JSON.stringify({ error: `Node not found: ${id}` }, null, 2),
|
|
238
206
|
},
|
|
239
207
|
],
|
|
240
208
|
isError: true,
|
|
241
209
|
};
|
|
242
210
|
}
|
|
211
|
+
const result = {
|
|
212
|
+
node: formatNode(response.node),
|
|
213
|
+
edges: response.edges.map(formatEdge),
|
|
214
|
+
};
|
|
215
|
+
if (expand) {
|
|
216
|
+
const safeDepth = clampInt(expandDepth, 1, MAX_EXPAND_DEPTH, 1);
|
|
217
|
+
const expansion = await client.expandKnowledgeNode({ id, depth: safeDepth });
|
|
218
|
+
result.neighbors = expansion.nodes.map(formatNode);
|
|
219
|
+
result.neighborEdges = expansion.edges.map(formatEdge);
|
|
220
|
+
}
|
|
221
|
+
return jsonResult(result);
|
|
243
222
|
},
|
|
244
223
|
},
|
|
245
224
|
{
|
|
@@ -269,13 +248,7 @@ export const knowledgeTools = [
|
|
|
269
248
|
.array(z.object({
|
|
270
249
|
toId: z.string().describe("ID of the node to link to"),
|
|
271
250
|
type: z
|
|
272
|
-
.enum(
|
|
273
|
-
EDGE_TYPE.RELATES_TO,
|
|
274
|
-
EDGE_TYPE.DEPENDS_ON,
|
|
275
|
-
EDGE_TYPE.DERIVED_FROM,
|
|
276
|
-
EDGE_TYPE.MENTIONS,
|
|
277
|
-
EDGE_TYPE.PART_OF,
|
|
278
|
-
])
|
|
251
|
+
.enum(EDGE_TYPES)
|
|
279
252
|
.describe("Relationship type: RELATES_TO, DEPENDS_ON, DERIVED_FROM, MENTIONS, PART_OF"),
|
|
280
253
|
}))
|
|
281
254
|
.optional()
|
|
@@ -289,66 +262,27 @@ export const knowledgeTools = [
|
|
|
289
262
|
idempotentHint: false,
|
|
290
263
|
openWorldHint: false,
|
|
291
264
|
},
|
|
292
|
-
async handler(args,
|
|
293
|
-
const { title, content, category, tags, workspaceId,
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
for (const edge of edges) {
|
|
314
|
-
try {
|
|
315
|
-
await createEdge(nodeId, edge.toId, edge.type);
|
|
316
|
-
createdEdges.push({ toId: edge.toId, type: edge.type });
|
|
317
|
-
}
|
|
318
|
-
catch (edgeError) {
|
|
319
|
-
logger.warn({ nodeId, toId: edge.toId, type: edge.type, err: edgeError }, "Failed to create edge for knowledge node");
|
|
320
|
-
createdEdges.push({
|
|
321
|
-
toId: edge.toId,
|
|
322
|
-
type: edge.type,
|
|
323
|
-
error: edgeError instanceof Error
|
|
324
|
-
? edgeError.message
|
|
325
|
-
: "Failed to create edge",
|
|
326
|
-
});
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
}
|
|
330
|
-
return jsonResult({
|
|
331
|
-
id: nodeId,
|
|
332
|
-
title,
|
|
333
|
-
category: category ?? NATIVE_CATEGORY.INSIGHT,
|
|
334
|
-
...(createdEdges.length > 0 ? { edges: createdEdges } : {}),
|
|
335
|
-
});
|
|
336
|
-
}
|
|
337
|
-
catch (error) {
|
|
338
|
-
return {
|
|
339
|
-
content: [
|
|
340
|
-
{
|
|
341
|
-
type: "text",
|
|
342
|
-
text: JSON.stringify({
|
|
343
|
-
error: error instanceof Error
|
|
344
|
-
? error.message
|
|
345
|
-
: "Failed to create knowledge entry",
|
|
346
|
-
}, null, 2),
|
|
347
|
-
},
|
|
348
|
-
],
|
|
349
|
-
isError: true,
|
|
350
|
-
};
|
|
351
|
-
}
|
|
265
|
+
async handler(args, client, authContext) {
|
|
266
|
+
const { title, content, category, tags, workspaceId, } = args;
|
|
267
|
+
// For scoped callers, always use the auth context workspace.
|
|
268
|
+
const resolvedWorkspaceId = authContext?.type === "scoped"
|
|
269
|
+
? authContext.workspaceId ?? ""
|
|
270
|
+
: workspaceId ?? "";
|
|
271
|
+
const response = await client.createKnowledgeNode({
|
|
272
|
+
title,
|
|
273
|
+
content,
|
|
274
|
+
category: category ?? "insight",
|
|
275
|
+
tags: tags ?? [],
|
|
276
|
+
workspaceId: resolvedWorkspaceId,
|
|
277
|
+
});
|
|
278
|
+
// Note: edge creation is now handled server-side or as a follow-up.
|
|
279
|
+
// The gRPC CreateKnowledgeNode endpoint creates the node; edges
|
|
280
|
+
// can be added in a future enhancement.
|
|
281
|
+
return jsonResult({
|
|
282
|
+
id: response.id,
|
|
283
|
+
title,
|
|
284
|
+
category: category ?? "insight",
|
|
285
|
+
});
|
|
352
286
|
},
|
|
353
287
|
},
|
|
354
288
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../src/tools/knowledge.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"knowledge.js","sourceRoot":"","sources":["../../src/tools/knowledge.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@grackle-ai/mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.68.0",
|
|
4
4
|
"description": "MCP (Model Context Protocol) server for Grackle — translates MCP tool calls to ConnectRPC",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -33,8 +33,7 @@
|
|
|
33
33
|
"@modelcontextprotocol/sdk": "^1.27.0",
|
|
34
34
|
"pino": "^10.3.1",
|
|
35
35
|
"zod": "^4.0.0",
|
|
36
|
-
"@grackle-ai/common": "0.
|
|
37
|
-
"@grackle-ai/knowledge": "0.67.0"
|
|
36
|
+
"@grackle-ai/common": "0.68.0"
|
|
38
37
|
},
|
|
39
38
|
"devDependencies": {
|
|
40
39
|
"@rushstack/heft": "1.2.4",
|