@cyanheads/brapi-mcp-server 0.4.14 → 0.5.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/CLAUDE.md +23 -19
- package/README.md +40 -26
- package/changelog/0.5.x/0.5.0.md +59 -0
- package/dist/config/builtin-aliases.d.ts +1 -1
- package/dist/config/builtin-aliases.js +1 -1
- package/dist/config/server-config.d.ts +3 -3
- package/dist/config/server-config.d.ts.map +1 -1
- package/dist/config/server-config.js +13 -13
- package/dist/config/server-config.js.map +1 -1
- package/dist/index.js +62 -15
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/prompts/definitions/brapi-eda-study.prompt.js +1 -1
- package/dist/mcp-server/prompts/definitions/brapi-eda-study.prompt.js.map +1 -1
- package/dist/mcp-server/prompts/definitions/brapi-meta-analysis.prompt.js +3 -3
- package/dist/mcp-server/prompts/definitions/brapi-meta-analysis.prompt.js.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-dataframe-describe.tool.d.ts +8 -11
- package/dist/mcp-server/tools/definitions/brapi-dataframe-describe.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-dataframe-describe.tool.js +15 -25
- package/dist/mcp-server/tools/definitions/brapi-dataframe-describe.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-dataframe-drop.tool.d.ts +6 -10
- package/dist/mcp-server/tools/definitions/brapi-dataframe-drop.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-dataframe-drop.tool.js +6 -16
- package/dist/mcp-server/tools/definitions/brapi-dataframe-drop.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-dataframe-export.tool.d.ts +69 -0
- package/dist/mcp-server/tools/definitions/brapi-dataframe-export.tool.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/brapi-dataframe-export.tool.js +233 -0
- package/dist/mcp-server/tools/definitions/brapi-dataframe-export.tool.js.map +1 -0
- package/dist/mcp-server/tools/definitions/brapi-dataframe-query.tool.d.ts +19 -11
- package/dist/mcp-server/tools/definitions/brapi-dataframe-query.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-dataframe-query.tool.js +80 -28
- package/dist/mcp-server/tools/definitions/brapi-dataframe-query.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-find-genotype-calls.tool.d.ts +4 -6
- package/dist/mcp-server/tools/definitions/brapi-find-genotype-calls.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-find-genotype-calls.tool.js +28 -36
- package/dist/mcp-server/tools/definitions/brapi-find-genotype-calls.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-find-germplasm.tool.d.ts +3 -5
- package/dist/mcp-server/tools/definitions/brapi-find-germplasm.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-find-germplasm.tool.js +19 -19
- package/dist/mcp-server/tools/definitions/brapi-find-germplasm.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-find-images.tool.d.ts +4 -6
- package/dist/mcp-server/tools/definitions/brapi-find-images.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-find-images.tool.js +16 -16
- package/dist/mcp-server/tools/definitions/brapi-find-images.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-find-locations.tool.d.ts +3 -5
- package/dist/mcp-server/tools/definitions/brapi-find-locations.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-find-locations.tool.js +15 -15
- package/dist/mcp-server/tools/definitions/brapi-find-locations.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-find-observations.tool.d.ts +4 -6
- package/dist/mcp-server/tools/definitions/brapi-find-observations.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-find-observations.tool.js +17 -17
- package/dist/mcp-server/tools/definitions/brapi-find-observations.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-find-studies.tool.d.ts +4 -6
- package/dist/mcp-server/tools/definitions/brapi-find-studies.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-find-studies.tool.js +17 -17
- package/dist/mcp-server/tools/definitions/brapi-find-studies.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-find-variables.tool.d.ts +2 -4
- package/dist/mcp-server/tools/definitions/brapi-find-variables.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-find-variables.tool.js +17 -17
- package/dist/mcp-server/tools/definitions/brapi-find-variables.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.d.ts +3 -5
- package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.js +15 -15
- package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-raw-get.tool.d.ts +17 -2
- package/dist/mcp-server/tools/definitions/brapi-raw-get.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-raw-get.tool.js +51 -7
- package/dist/mcp-server/tools/definitions/brapi-raw-get.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-raw-search.tool.d.ts +16 -2
- package/dist/mcp-server/tools/definitions/brapi-raw-search.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-raw-search.tool.js +51 -5
- package/dist/mcp-server/tools/definitions/brapi-raw-search.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/index.d.ts +141 -165
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/index.js +28 -17
- package/dist/mcp-server/tools/definitions/index.js.map +1 -1
- package/dist/mcp-server/tools/shared/find-helpers.d.ts +52 -41
- package/dist/mcp-server/tools/shared/find-helpers.d.ts.map +1 -1
- package/dist/mcp-server/tools/shared/find-helpers.js +89 -66
- package/dist/mcp-server/tools/shared/find-helpers.js.map +1 -1
- package/dist/mcp-server/tools/shared/raw-routing-hints.d.ts.map +1 -1
- package/dist/mcp-server/tools/shared/raw-routing-hints.js +6 -6
- package/dist/mcp-server/tools/shared/raw-routing-hints.js.map +1 -1
- package/dist/services/canvas-bridge/canvas-bridge.d.ts +69 -44
- package/dist/services/canvas-bridge/canvas-bridge.d.ts.map +1 -1
- package/dist/services/canvas-bridge/canvas-bridge.js +143 -112
- package/dist/services/canvas-bridge/canvas-bridge.js.map +1 -1
- package/dist/services/canvas-bridge/index.d.ts +1 -1
- package/dist/services/canvas-bridge/index.d.ts.map +1 -1
- package/dist/services/canvas-bridge/index.js +1 -1
- package/dist/services/canvas-bridge/index.js.map +1 -1
- package/dist/services/canvas-bridge/types.d.ts +11 -12
- package/dist/services/canvas-bridge/types.d.ts.map +1 -1
- package/dist/services/canvas-bridge/types.js +4 -4
- package/package.json +3 -11
- package/server.json +3 -3
- package/dist/mcp-server/resources/definitions/brapi-dataset.resource.d.ts +0 -13
- package/dist/mcp-server/resources/definitions/brapi-dataset.resource.d.ts.map +0 -1
- package/dist/mcp-server/resources/definitions/brapi-dataset.resource.js +0 -26
- package/dist/mcp-server/resources/definitions/brapi-dataset.resource.js.map +0 -1
- package/dist/mcp-server/tools/definitions/brapi-manage-dataset.tool.d.ts +0 -89
- package/dist/mcp-server/tools/definitions/brapi-manage-dataset.tool.d.ts.map +0 -1
- package/dist/mcp-server/tools/definitions/brapi-manage-dataset.tool.js +0 -306
- package/dist/mcp-server/tools/definitions/brapi-manage-dataset.tool.js.map +0 -1
- package/dist/services/dataset-store/dataset-store.d.ts +0 -44
- package/dist/services/dataset-store/dataset-store.d.ts.map +0 -1
- package/dist/services/dataset-store/dataset-store.js +0 -208
- package/dist/services/dataset-store/dataset-store.js.map +0 -1
- package/dist/services/dataset-store/index.d.ts +0 -8
- package/dist/services/dataset-store/index.d.ts.map +0 -1
- package/dist/services/dataset-store/index.js +0 -7
- package/dist/services/dataset-store/index.js.map +0 -1
- package/dist/services/dataset-store/types.d.ts +0 -72
- package/dist/services/dataset-store/types.d.ts.map +0 -1
- package/dist/services/dataset-store/types.js +0 -8
- package/dist/services/dataset-store/types.js.map +0 -1
|
@@ -1,8 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview `brapi_raw_get` — last-resort passthrough to any BrAPI GET
|
|
3
3
|
* endpoint the goal-shaped tools don't cover (e.g. `/samples`, `/methods`,
|
|
4
|
-
* `/scales`, `/crosses`). Returns the raw upstream envelope
|
|
5
|
-
* nudge when the target endpoint is
|
|
4
|
+
* `/scales`, `/crosses`). Returns the raw upstream envelope plus a routing
|
|
5
|
+
* nudge when the target endpoint is covered by a curated tool, and spills
|
|
6
|
+
* to a canvas dataframe when the upstream advertises more rows than fit
|
|
7
|
+
* in `loadLimit` AND the result is a list shape (`result` array or BrAPI
|
|
8
|
+
* `result.data` envelope). Spillover is skipped when the caller drives
|
|
9
|
+
* paging via `params.page` / `params.pageSize` — they're explicitly walking
|
|
10
|
+
* the result themselves and we don't second-guess.
|
|
6
11
|
*
|
|
7
12
|
* @module mcp-server/tools/definitions/brapi-raw-get.tool
|
|
8
13
|
*/
|
|
@@ -12,6 +17,7 @@ export declare const brapiRawGet: import("@cyanheads/mcp-ts-core").ToolDefinitio
|
|
|
12
17
|
alias: z.ZodOptional<z.ZodString>;
|
|
13
18
|
path: z.ZodString;
|
|
14
19
|
params: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean, z.ZodArray<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>]>>>;
|
|
20
|
+
loadLimit: z.ZodOptional<z.ZodNumber>;
|
|
15
21
|
}, z.core.$strip>, z.ZodObject<{
|
|
16
22
|
alias: z.ZodString;
|
|
17
23
|
url: z.ZodString;
|
|
@@ -26,6 +32,15 @@ export declare const brapiRawGet: import("@cyanheads/mcp-ts-core").ToolDefinitio
|
|
|
26
32
|
}, z.core.$loose>;
|
|
27
33
|
result: z.ZodUnknown;
|
|
28
34
|
suggestion: z.ZodOptional<z.ZodString>;
|
|
35
|
+
dataframe: z.ZodOptional<z.ZodObject<{
|
|
36
|
+
tableName: z.ZodString;
|
|
37
|
+
rowCount: z.ZodNumber;
|
|
38
|
+
columns: z.ZodArray<z.ZodString>;
|
|
39
|
+
createdAt: z.ZodString;
|
|
40
|
+
expiresAt: z.ZodString;
|
|
41
|
+
truncated: z.ZodOptional<z.ZodBoolean>;
|
|
42
|
+
maxRows: z.ZodOptional<z.ZodNumber>;
|
|
43
|
+
}, z.core.$strip>>;
|
|
29
44
|
}, z.core.$strip>, readonly [{
|
|
30
45
|
readonly reason: "cross_origin_path";
|
|
31
46
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brapi-raw-get.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/brapi-raw-get.tool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"brapi-raw-get.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/brapi-raw-get.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAuDjE,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8HtB,CAAC"}
|
|
@@ -1,16 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview `brapi_raw_get` — last-resort passthrough to any BrAPI GET
|
|
3
3
|
* endpoint the goal-shaped tools don't cover (e.g. `/samples`, `/methods`,
|
|
4
|
-
* `/scales`, `/crosses`). Returns the raw upstream envelope
|
|
5
|
-
* nudge when the target endpoint is
|
|
4
|
+
* `/scales`, `/crosses`). Returns the raw upstream envelope plus a routing
|
|
5
|
+
* nudge when the target endpoint is covered by a curated tool, and spills
|
|
6
|
+
* to a canvas dataframe when the upstream advertises more rows than fit
|
|
7
|
+
* in `loadLimit` AND the result is a list shape (`result` array or BrAPI
|
|
8
|
+
* `result.data` envelope). Spillover is skipped when the caller drives
|
|
9
|
+
* paging via `params.page` / `params.pageSize` — they're explicitly walking
|
|
10
|
+
* the result themselves and we don't second-guess.
|
|
6
11
|
*
|
|
7
12
|
* @module mcp-server/tools/definitions/brapi-raw-get.tool
|
|
8
13
|
*/
|
|
9
14
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
10
15
|
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
16
|
+
import { getServerConfig } from '../../../config/server-config.js';
|
|
11
17
|
import { getBrapiClient, } from '../../../services/brapi-client/index.js';
|
|
18
|
+
import { getCanvasBridge } from '../../../services/canvas-bridge/index.js';
|
|
12
19
|
import { DEFAULT_ALIAS, getServerRegistry } from '../../../services/server-registry/index.js';
|
|
13
|
-
import { AliasInput } from '../shared/find-helpers.js';
|
|
20
|
+
import { AliasInput, DataframeHandleSchema, extractListRows, LoadLimitInput, renderDataframeHandle, spillToCanvas, toDataframeHandle, } from '../shared/find-helpers.js';
|
|
14
21
|
import { suggestForGet } from '../shared/raw-routing-hints.js';
|
|
15
22
|
const PaginationSchema = z
|
|
16
23
|
.object({
|
|
@@ -39,9 +46,10 @@ const OutputSchema = z.object({
|
|
|
39
46
|
.string()
|
|
40
47
|
.optional()
|
|
41
48
|
.describe('Emitted when a curated goal-shaped tool covers this endpoint.'),
|
|
49
|
+
dataframe: DataframeHandleSchema.optional().describe('Present when the upstream advertised more rows than `loadLimit` AND the result is a list shape. The inline `result` is unchanged; the dataframe carries the full union of pages — query with brapi_dataframe_query.'),
|
|
42
50
|
});
|
|
43
51
|
export const brapiRawGet = tool('brapi_raw_get', {
|
|
44
|
-
description: 'Passthrough to any BrAPI GET /{path} endpoint. Returns the raw upstream envelope without enrichment or foreign-key resolution. Emits a `suggestion` field when a curated tool exists for the same data.',
|
|
52
|
+
description: 'Passthrough to any BrAPI GET /{path} endpoint. Returns the raw upstream envelope without enrichment or foreign-key resolution. Emits a `suggestion` field when a curated tool exists for the same data. Spills to a canvas dataframe when the upstream advertises more rows than `loadLimit` AND the result is a list shape (`result` array or `result.data` envelope); inline `result` is unchanged. Skips spillover when the caller drives paging via `params.page` / `params.pageSize`.',
|
|
45
53
|
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
46
54
|
errors: [
|
|
47
55
|
{
|
|
@@ -61,11 +69,14 @@ export const brapiRawGet = tool('brapi_raw_get', {
|
|
|
61
69
|
.record(z.string(), z.union([z.string(), z.number(), z.boolean(), z.array(z.union([z.string(), z.number()]))]))
|
|
62
70
|
.optional()
|
|
63
71
|
.describe('Query parameters to append. Arrays are repeated per BrAPI convention.'),
|
|
72
|
+
loadLimit: LoadLimitInput,
|
|
64
73
|
}),
|
|
65
74
|
output: OutputSchema,
|
|
66
75
|
async handler(input, ctx) {
|
|
67
76
|
const registry = getServerRegistry();
|
|
68
77
|
const client = getBrapiClient();
|
|
78
|
+
const bridge = getCanvasBridge();
|
|
79
|
+
const config = getServerConfig();
|
|
69
80
|
const connection = await registry.get(ctx, input.alias ?? DEFAULT_ALIAS);
|
|
70
81
|
// The path is appended to the registered baseUrl; if the caller smuggles a
|
|
71
82
|
// full URL (http://evil/...) `new URL()` would silently hijack the request.
|
|
@@ -76,12 +87,18 @@ export const brapiRawGet = tool('brapi_raw_get', {
|
|
|
76
87
|
});
|
|
77
88
|
}
|
|
78
89
|
const path = normalizePath(input.path);
|
|
90
|
+
const loadLimit = input.loadLimit ?? config.loadLimit;
|
|
91
|
+
// When the caller drives paging themselves, treat the call as a single
|
|
92
|
+
// explicit page fetch and skip spillover. Otherwise align the first call
|
|
93
|
+
// with `loadLimit` so the dataframe walk continues at the same pageSize.
|
|
94
|
+
const userControlsPaging = input.params?.page !== undefined || input.params?.pageSize !== undefined;
|
|
95
|
+
const params = { ...(input.params ?? {}) };
|
|
96
|
+
if (!userControlsPaging)
|
|
97
|
+
params.pageSize = loadLimit;
|
|
79
98
|
const requestOptions = {};
|
|
80
99
|
if (connection.resolvedAuth)
|
|
81
100
|
requestOptions.auth = connection.resolvedAuth;
|
|
82
|
-
|
|
83
|
-
requestOptions.params = input.params;
|
|
84
|
-
}
|
|
101
|
+
requestOptions.params = params;
|
|
85
102
|
const envelope = await client.get(connection.baseUrl, path, ctx, requestOptions);
|
|
86
103
|
const url = buildDisplayUrl(connection.baseUrl, path, input.params);
|
|
87
104
|
const result = {
|
|
@@ -94,6 +111,28 @@ export const brapiRawGet = tool('brapi_raw_get', {
|
|
|
94
111
|
const suggestion = suggestForGet(path);
|
|
95
112
|
if (suggestion)
|
|
96
113
|
result.suggestion = suggestion;
|
|
114
|
+
if (!userControlsPaging) {
|
|
115
|
+
const totalCount = envelope.metadata?.pagination?.totalCount;
|
|
116
|
+
const rows = extractListRows(envelope.result);
|
|
117
|
+
if (rows !== null &&
|
|
118
|
+
rows.length > 0 &&
|
|
119
|
+
typeof totalCount === 'number' &&
|
|
120
|
+
totalCount > loadLimit) {
|
|
121
|
+
const spill = await spillToCanvas({
|
|
122
|
+
bridge,
|
|
123
|
+
client,
|
|
124
|
+
connection,
|
|
125
|
+
ctx,
|
|
126
|
+
firstPage: rows,
|
|
127
|
+
totalCount,
|
|
128
|
+
loadLimit,
|
|
129
|
+
path,
|
|
130
|
+
filters: (input.params ?? {}),
|
|
131
|
+
source: 'raw_get',
|
|
132
|
+
});
|
|
133
|
+
result.dataframe = toDataframeHandle(spill.dataframe);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
97
136
|
return result;
|
|
98
137
|
},
|
|
99
138
|
format: (result) => {
|
|
@@ -110,6 +149,11 @@ export const brapiRawGet = tool('brapi_raw_get', {
|
|
|
110
149
|
lines.push('');
|
|
111
150
|
lines.push(`**Suggestion:** ${result.suggestion}`);
|
|
112
151
|
}
|
|
152
|
+
if (result.dataframe) {
|
|
153
|
+
lines.push('');
|
|
154
|
+
lines.push('## Dataframe');
|
|
155
|
+
lines.push(...renderDataframeHandle(result.dataframe));
|
|
156
|
+
}
|
|
113
157
|
lines.push('');
|
|
114
158
|
lines.push('## Raw result');
|
|
115
159
|
lines.push('```json');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brapi-raw-get.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/brapi-raw-get.tool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"brapi-raw-get.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/brapi-raw-get.tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview `brapi_raw_search` — last-resort passthrough to any BrAPI
|
|
3
3
|
* `POST /search/{noun}` endpoint with async-search polling handled
|
|
4
|
-
* transparently. Returns the raw upstream envelope once the search completes
|
|
5
|
-
*
|
|
4
|
+
* transparently. Returns the raw upstream envelope once the search completes,
|
|
5
|
+
* and spills to a canvas dataframe when the upstream advertises more rows
|
|
6
|
+
* than `loadLimit` AND the result is a list shape. Spillover is skipped
|
|
7
|
+
* when the caller drives paging via `body.page` / `body.pageSize` — they're
|
|
8
|
+
* walking pages explicitly. Emits a routing nudge when a curated goal-shaped
|
|
9
|
+
* tool covers the noun.
|
|
6
10
|
*
|
|
7
11
|
* @module mcp-server/tools/definitions/brapi-raw-search.tool
|
|
8
12
|
*/
|
|
@@ -12,6 +16,7 @@ export declare const brapiRawSearch: import("@cyanheads/mcp-ts-core").ToolDefini
|
|
|
12
16
|
alias: z.ZodOptional<z.ZodString>;
|
|
13
17
|
noun: z.ZodString;
|
|
14
18
|
body: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
19
|
+
loadLimit: z.ZodOptional<z.ZodNumber>;
|
|
15
20
|
}, z.core.$strip>, z.ZodObject<{
|
|
16
21
|
alias: z.ZodString;
|
|
17
22
|
noun: z.ZodString;
|
|
@@ -30,6 +35,15 @@ export declare const brapiRawSearch: import("@cyanheads/mcp-ts-core").ToolDefini
|
|
|
30
35
|
}, z.core.$loose>;
|
|
31
36
|
result: z.ZodUnknown;
|
|
32
37
|
suggestion: z.ZodOptional<z.ZodString>;
|
|
38
|
+
dataframe: z.ZodOptional<z.ZodObject<{
|
|
39
|
+
tableName: z.ZodString;
|
|
40
|
+
rowCount: z.ZodNumber;
|
|
41
|
+
columns: z.ZodArray<z.ZodString>;
|
|
42
|
+
createdAt: z.ZodString;
|
|
43
|
+
expiresAt: z.ZodString;
|
|
44
|
+
truncated: z.ZodOptional<z.ZodBoolean>;
|
|
45
|
+
maxRows: z.ZodOptional<z.ZodNumber>;
|
|
46
|
+
}, z.core.$strip>>;
|
|
33
47
|
}, z.core.$strip>, readonly [{
|
|
34
48
|
readonly reason: "search_endpoint_disabled";
|
|
35
49
|
readonly code: JsonRpcErrorCode.ValidationError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brapi-raw-search.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/brapi-raw-search.tool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"brapi-raw-search.tool.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/brapi-raw-search.tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAQ,CAAC,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AA6DjE,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6JzB,CAAC"}
|
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @fileoverview `brapi_raw_search` — last-resort passthrough to any BrAPI
|
|
3
3
|
* `POST /search/{noun}` endpoint with async-search polling handled
|
|
4
|
-
* transparently. Returns the raw upstream envelope once the search completes
|
|
5
|
-
*
|
|
4
|
+
* transparently. Returns the raw upstream envelope once the search completes,
|
|
5
|
+
* and spills to a canvas dataframe when the upstream advertises more rows
|
|
6
|
+
* than `loadLimit` AND the result is a list shape. Spillover is skipped
|
|
7
|
+
* when the caller drives paging via `body.page` / `body.pageSize` — they're
|
|
8
|
+
* walking pages explicitly. Emits a routing nudge when a curated goal-shaped
|
|
9
|
+
* tool covers the noun.
|
|
6
10
|
*
|
|
7
11
|
* @module mcp-server/tools/definitions/brapi-raw-search.tool
|
|
8
12
|
*/
|
|
9
13
|
import { tool, z } from '@cyanheads/mcp-ts-core';
|
|
10
14
|
import { JsonRpcErrorCode } from '@cyanheads/mcp-ts-core/errors';
|
|
15
|
+
import { getServerConfig } from '../../../config/server-config.js';
|
|
11
16
|
import { getBrapiClient, } from '../../../services/brapi-client/index.js';
|
|
12
17
|
import { resolveDialect } from '../../../services/brapi-dialect/index.js';
|
|
18
|
+
import { getCanvasBridge } from '../../../services/canvas-bridge/index.js';
|
|
13
19
|
import { DEFAULT_ALIAS, getServerRegistry } from '../../../services/server-registry/index.js';
|
|
14
|
-
import { AliasInput, buildRequestOptions } from '../shared/find-helpers.js';
|
|
20
|
+
import { AliasInput, buildRequestOptions, DataframeHandleSchema, extractListRows, LoadLimitInput, renderDataframeHandle, spillToCanvas, toDataframeHandle, } from '../shared/find-helpers.js';
|
|
15
21
|
import { suggestForSearch } from '../shared/raw-routing-hints.js';
|
|
16
22
|
const PaginationSchema = z
|
|
17
23
|
.object({
|
|
@@ -44,9 +50,10 @@ const OutputSchema = z.object({
|
|
|
44
50
|
.string()
|
|
45
51
|
.optional()
|
|
46
52
|
.describe('Emitted when a curated goal-shaped tool covers this search.'),
|
|
53
|
+
dataframe: DataframeHandleSchema.optional().describe('Present when the upstream advertised more rows than `loadLimit` AND the result is a list shape. The inline `result` is unchanged; the dataframe carries the full union of pages — query with brapi_dataframe_query.'),
|
|
47
54
|
});
|
|
48
55
|
export const brapiRawSearch = tool('brapi_raw_search', {
|
|
49
|
-
description: 'Passthrough to any BrAPI POST /search/{noun} endpoint, returning the resolved envelope (async polling resolved upstream).
|
|
56
|
+
description: 'Passthrough to any BrAPI POST /search/{noun} endpoint, returning the resolved envelope (async polling resolved upstream). Spills to a canvas dataframe when the upstream advertises more rows than `loadLimit` AND the result is a list shape; inline `result` is unchanged. Skips spillover when the caller drives paging via `body.page` / `body.pageSize`. No distributions or foreign-key resolution applied.',
|
|
50
57
|
annotations: { readOnlyHint: true, openWorldHint: true },
|
|
51
58
|
errors: [
|
|
52
59
|
{
|
|
@@ -66,11 +73,14 @@ export const brapiRawSearch = tool('brapi_raw_search', {
|
|
|
66
73
|
body: z
|
|
67
74
|
.record(z.string(), z.unknown())
|
|
68
75
|
.describe('Filter body passed verbatim to POST /search/{noun}.'),
|
|
76
|
+
loadLimit: LoadLimitInput,
|
|
69
77
|
}),
|
|
70
78
|
output: OutputSchema,
|
|
71
79
|
async handler(input, ctx) {
|
|
72
80
|
const registry = getServerRegistry();
|
|
73
81
|
const client = getBrapiClient();
|
|
82
|
+
const bridge = getCanvasBridge();
|
|
83
|
+
const config = getServerConfig();
|
|
74
84
|
const connection = await registry.get(ctx, input.alias ?? DEFAULT_ALIAS);
|
|
75
85
|
const requestOptions = {};
|
|
76
86
|
if (connection.resolvedAuth)
|
|
@@ -84,7 +94,10 @@ export const brapiRawSearch = tool('brapi_raw_search', {
|
|
|
84
94
|
...ctx.recoveryFor('search_endpoint_disabled'),
|
|
85
95
|
});
|
|
86
96
|
}
|
|
87
|
-
const
|
|
97
|
+
const loadLimit = input.loadLimit ?? config.loadLimit;
|
|
98
|
+
const userControlsPaging = input.body.page !== undefined || input.body.pageSize !== undefined;
|
|
99
|
+
const body = userControlsPaging ? input.body : { ...input.body, pageSize: loadLimit };
|
|
100
|
+
const response = await client.postSearch(connection.baseUrl, input.noun, body, ctx, requestOptions);
|
|
88
101
|
let envelope;
|
|
89
102
|
let kind;
|
|
90
103
|
let searchResultsDbId;
|
|
@@ -109,6 +122,34 @@ export const brapiRawSearch = tool('brapi_raw_search', {
|
|
|
109
122
|
const suggestion = suggestForSearch(input.noun);
|
|
110
123
|
if (suggestion)
|
|
111
124
|
result.suggestion = suggestion;
|
|
125
|
+
if (!userControlsPaging) {
|
|
126
|
+
const totalCount = envelope.metadata?.pagination?.totalCount;
|
|
127
|
+
const rows = extractListRows(envelope.result);
|
|
128
|
+
if (rows !== null &&
|
|
129
|
+
rows.length > 0 &&
|
|
130
|
+
typeof totalCount === 'number' &&
|
|
131
|
+
totalCount > loadLimit) {
|
|
132
|
+
const spill = await spillToCanvas({
|
|
133
|
+
bridge,
|
|
134
|
+
client,
|
|
135
|
+
connection,
|
|
136
|
+
ctx,
|
|
137
|
+
firstPage: rows,
|
|
138
|
+
totalCount,
|
|
139
|
+
loadLimit,
|
|
140
|
+
path: `/search/${input.noun}`,
|
|
141
|
+
filters: input.body,
|
|
142
|
+
source: 'raw_search',
|
|
143
|
+
route: {
|
|
144
|
+
kind: 'search',
|
|
145
|
+
noun: input.noun,
|
|
146
|
+
service: `search/${input.noun}`,
|
|
147
|
+
searchBody: input.body,
|
|
148
|
+
},
|
|
149
|
+
});
|
|
150
|
+
result.dataframe = toDataframeHandle(spill.dataframe);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
112
153
|
return result;
|
|
113
154
|
},
|
|
114
155
|
format: (result) => {
|
|
@@ -127,6 +168,11 @@ export const brapiRawSearch = tool('brapi_raw_search', {
|
|
|
127
168
|
lines.push('');
|
|
128
169
|
lines.push(`**Suggestion:** ${result.suggestion}`);
|
|
129
170
|
}
|
|
171
|
+
if (result.dataframe) {
|
|
172
|
+
lines.push('');
|
|
173
|
+
lines.push('## Dataframe');
|
|
174
|
+
lines.push(...renderDataframeHandle(result.dataframe));
|
|
175
|
+
}
|
|
130
176
|
lines.push('');
|
|
131
177
|
lines.push('## Raw result');
|
|
132
178
|
lines.push('```json');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"brapi-raw-search.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/brapi-raw-search.tool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"brapi-raw-search.tool.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/definitions/brapi-raw-search.tool.ts"],"names":[],"mappings":"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"}
|