@cyanheads/brapi-mcp-server 0.3.9 → 0.4.2
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 +3 -2
- package/README.md +1 -1
- package/changelog/0.4.x/0.4.0.md +29 -0
- package/changelog/0.4.x/0.4.1.md +20 -0
- package/changelog/0.4.x/0.4.2.md +23 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-connect.tool.d.ts +11 -0
- package/dist/mcp-server/tools/definitions/brapi-connect.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-find-genotype-calls.tool.d.ts +19 -14
- 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 +24 -13
- 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.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-find-germplasm.tool.js +53 -31
- 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 +16 -16
- 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 +32 -18
- 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.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-find-locations.tool.js +12 -2
- 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 +20 -20
- 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 +40 -21
- 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 +0 -1
- 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 +22 -11
- 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.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-find-variables.tool.js +17 -4
- 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 -3
- 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 +14 -5
- package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-raw-search.tool.d.ts +7 -1
- 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 +19 -0
- package/dist/mcp-server/tools/definitions/brapi-raw-search.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/brapi-server-info.tool.d.ts +11 -0
- package/dist/mcp-server/tools/definitions/brapi-server-info.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/index.d.ts +86 -55
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
- package/dist/mcp-server/tools/shared/find-helpers.d.ts +16 -0
- package/dist/mcp-server/tools/shared/find-helpers.d.ts.map +1 -1
- package/dist/mcp-server/tools/shared/find-helpers.js +25 -0
- package/dist/mcp-server/tools/shared/find-helpers.js.map +1 -1
- package/dist/mcp-server/tools/shared/orientation-envelope.d.ts +22 -0
- package/dist/mcp-server/tools/shared/orientation-envelope.d.ts.map +1 -1
- package/dist/mcp-server/tools/shared/orientation-envelope.js +39 -0
- package/dist/mcp-server/tools/shared/orientation-envelope.js.map +1 -1
- package/dist/services/brapi-dialect/cassavabase-dialect.d.ts +28 -0
- package/dist/services/brapi-dialect/cassavabase-dialect.d.ts.map +1 -0
- package/dist/services/brapi-dialect/cassavabase-dialect.js +196 -0
- package/dist/services/brapi-dialect/cassavabase-dialect.js.map +1 -0
- package/dist/services/brapi-dialect/detect.d.ts +53 -0
- package/dist/services/brapi-dialect/detect.d.ts.map +1 -0
- package/dist/services/brapi-dialect/detect.js +68 -0
- package/dist/services/brapi-dialect/detect.js.map +1 -0
- package/dist/services/brapi-dialect/index.d.ts +29 -0
- package/dist/services/brapi-dialect/index.d.ts.map +1 -0
- package/dist/services/brapi-dialect/index.js +31 -0
- package/dist/services/brapi-dialect/index.js.map +1 -0
- package/dist/services/brapi-dialect/registry.d.ts +25 -0
- package/dist/services/brapi-dialect/registry.d.ts.map +1 -0
- package/dist/services/brapi-dialect/registry.js +39 -0
- package/dist/services/brapi-dialect/registry.js.map +1 -0
- package/dist/services/brapi-dialect/spec-dialect.d.ts +13 -0
- package/dist/services/brapi-dialect/spec-dialect.d.ts.map +1 -0
- package/dist/services/brapi-dialect/spec-dialect.js +17 -0
- package/dist/services/brapi-dialect/spec-dialect.js.map +1 -0
- package/dist/services/brapi-dialect/types.d.ts +58 -0
- package/dist/services/brapi-dialect/types.d.ts.map +1 -0
- package/dist/services/brapi-dialect/types.js +18 -0
- package/dist/services/brapi-dialect/types.js.map +1 -0
- package/package.json +1 -1
- package/server.json +3 -3
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Types for BrAPI dialects — per-server adapters that translate
|
|
3
|
+
* spec-shape filters / payloads into whatever the upstream actually honors.
|
|
4
|
+
* BrAPI v2.1 normalized filter names to plural forms, but real implementations
|
|
5
|
+
* lag the spec by years. CassavaBase, BMS, GERMINATE, T3 each have their own
|
|
6
|
+
* quirks. The dialect interface is the single seam through which we adapt
|
|
7
|
+
* outbound traffic to those servers without bleeding the special cases into
|
|
8
|
+
* tool definitions.
|
|
9
|
+
*
|
|
10
|
+
* Start with one capability — `adaptGetFilters` — and add optional methods
|
|
11
|
+
* (`adaptSearchBody`, `normalizeRow`, etc.) as new quirk classes surface. Any
|
|
12
|
+
* method beyond the required core is optional so new dialects don't have to
|
|
13
|
+
* implement quirks they don't have.
|
|
14
|
+
*
|
|
15
|
+
* @module services/brapi-dialect/types
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Result of adapting a filter map for a specific endpoint. `filters` is the
|
|
19
|
+
* wire-shape map (what gets serialized into the URL); `warnings` are
|
|
20
|
+
* operator-facing notes about lossy conversions (multi-value array downcast,
|
|
21
|
+
* filters dropped because the server doesn't honor them, etc.).
|
|
22
|
+
*/
|
|
23
|
+
export interface DialectAdaptation {
|
|
24
|
+
filters: Record<string, unknown>;
|
|
25
|
+
warnings: string[];
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Per-server filter / payload adapter. Implementations are stateless,
|
|
29
|
+
* registered by id, and selected per-connection via `resolveDialect`. The
|
|
30
|
+
* `id` should be a short, stable token (e.g. `spec`, `cassavabase`). Dialects
|
|
31
|
+
* registered later override earlier ones with the same id.
|
|
32
|
+
*/
|
|
33
|
+
export interface BrapiDialect {
|
|
34
|
+
/**
|
|
35
|
+
* Adapt a merged filter map for a GET list endpoint. `endpoint` is the bare
|
|
36
|
+
* resource segment (e.g. `studies`, `germplasm`) — not the path. Filters
|
|
37
|
+
* are passed as a read-only record; implementations must return a fresh
|
|
38
|
+
* object rather than mutating the input.
|
|
39
|
+
*
|
|
40
|
+
* The default `spec` dialect returns the input untouched. Server-specific
|
|
41
|
+
* dialects translate, drop, or downcast filters so the upstream receives
|
|
42
|
+
* names and shapes it actually honors.
|
|
43
|
+
*/
|
|
44
|
+
adaptGetFilters(endpoint: string, filters: Readonly<Record<string, unknown>>): DialectAdaptation;
|
|
45
|
+
/**
|
|
46
|
+
* POST `/search/{noun}` routes the dialect knows are dead — advertised in
|
|
47
|
+
* `/calls` but in practice unresponsive, broken, or returning malformed
|
|
48
|
+
* envelopes. Tools that would otherwise issue an async-search call should
|
|
49
|
+
* consult this set first and route around (or fail loudly with a recovery
|
|
50
|
+
* hint) rather than hanging or returning garbage. Nouns are bare resource
|
|
51
|
+
* segments (e.g. `germplasm`, `studies`), not full paths.
|
|
52
|
+
*
|
|
53
|
+
* Omit on dialects with no known dead routes (the default `spec` dialect).
|
|
54
|
+
*/
|
|
55
|
+
readonly disabledSearchEndpoints?: ReadonlySet<string>;
|
|
56
|
+
readonly id: string;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/services/brapi-dialect/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B;;;;;;;;;OASG;IACH,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,iBAAiB,CAAC;IACjG;;;;;;;;;OASG;IACH,QAAQ,CAAC,uBAAuB,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;IACvD,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Types for BrAPI dialects — per-server adapters that translate
|
|
3
|
+
* spec-shape filters / payloads into whatever the upstream actually honors.
|
|
4
|
+
* BrAPI v2.1 normalized filter names to plural forms, but real implementations
|
|
5
|
+
* lag the spec by years. CassavaBase, BMS, GERMINATE, T3 each have their own
|
|
6
|
+
* quirks. The dialect interface is the single seam through which we adapt
|
|
7
|
+
* outbound traffic to those servers without bleeding the special cases into
|
|
8
|
+
* tool definitions.
|
|
9
|
+
*
|
|
10
|
+
* Start with one capability — `adaptGetFilters` — and add optional methods
|
|
11
|
+
* (`adaptSearchBody`, `normalizeRow`, etc.) as new quirk classes surface. Any
|
|
12
|
+
* method beyond the required core is optional so new dialects don't have to
|
|
13
|
+
* implement quirks they don't have.
|
|
14
|
+
*
|
|
15
|
+
* @module services/brapi-dialect/types
|
|
16
|
+
*/
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/services/brapi-dialect/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cyanheads/brapi-mcp-server",
|
|
3
3
|
"mcpName": "io.github.cyanheads/brapi-mcp-server",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.4.2",
|
|
5
5
|
"description": "BrAPI v2.1 MCP server — studies, germplasm, observations, genotypes, images, and pedigrees.",
|
|
6
6
|
"author": "Casey Hand @cyanheads (https://github.com/cyanheads/brapi-mcp-server#readme)",
|
|
7
7
|
"type": "module",
|
package/server.json
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
"url": "https://github.com/cyanheads/brapi-mcp-server",
|
|
7
7
|
"source": "github"
|
|
8
8
|
},
|
|
9
|
-
"version": "0.
|
|
9
|
+
"version": "0.4.2",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
14
14
|
"identifier": "@cyanheads/brapi-mcp-server",
|
|
15
15
|
"runtimeHint": "bun",
|
|
16
|
-
"version": "0.
|
|
16
|
+
"version": "0.4.2",
|
|
17
17
|
"packageArguments": [
|
|
18
18
|
{ "type": "positional", "value": "run" },
|
|
19
19
|
{ "type": "positional", "value": "start:stdio" }
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
50
50
|
"identifier": "@cyanheads/brapi-mcp-server",
|
|
51
51
|
"runtimeHint": "bun",
|
|
52
|
-
"version": "0.
|
|
52
|
+
"version": "0.4.2",
|
|
53
53
|
"packageArguments": [
|
|
54
54
|
{ "type": "positional", "value": "run" },
|
|
55
55
|
{ "type": "positional", "value": "start:http" }
|