@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.
Files changed (80) hide show
  1. package/CLAUDE.md +3 -2
  2. package/README.md +1 -1
  3. package/changelog/0.4.x/0.4.0.md +29 -0
  4. package/changelog/0.4.x/0.4.1.md +20 -0
  5. package/changelog/0.4.x/0.4.2.md +23 -0
  6. package/dist/index.js +2 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/mcp-server/tools/definitions/brapi-connect.tool.d.ts +11 -0
  9. package/dist/mcp-server/tools/definitions/brapi-connect.tool.d.ts.map +1 -1
  10. package/dist/mcp-server/tools/definitions/brapi-find-genotype-calls.tool.d.ts +19 -14
  11. package/dist/mcp-server/tools/definitions/brapi-find-genotype-calls.tool.d.ts.map +1 -1
  12. package/dist/mcp-server/tools/definitions/brapi-find-genotype-calls.tool.js +24 -13
  13. package/dist/mcp-server/tools/definitions/brapi-find-genotype-calls.tool.js.map +1 -1
  14. package/dist/mcp-server/tools/definitions/brapi-find-germplasm.tool.d.ts.map +1 -1
  15. package/dist/mcp-server/tools/definitions/brapi-find-germplasm.tool.js +53 -31
  16. package/dist/mcp-server/tools/definitions/brapi-find-germplasm.tool.js.map +1 -1
  17. package/dist/mcp-server/tools/definitions/brapi-find-images.tool.d.ts +16 -16
  18. package/dist/mcp-server/tools/definitions/brapi-find-images.tool.d.ts.map +1 -1
  19. package/dist/mcp-server/tools/definitions/brapi-find-images.tool.js +32 -18
  20. package/dist/mcp-server/tools/definitions/brapi-find-images.tool.js.map +1 -1
  21. package/dist/mcp-server/tools/definitions/brapi-find-locations.tool.d.ts.map +1 -1
  22. package/dist/mcp-server/tools/definitions/brapi-find-locations.tool.js +12 -2
  23. package/dist/mcp-server/tools/definitions/brapi-find-locations.tool.js.map +1 -1
  24. package/dist/mcp-server/tools/definitions/brapi-find-observations.tool.d.ts +20 -20
  25. package/dist/mcp-server/tools/definitions/brapi-find-observations.tool.d.ts.map +1 -1
  26. package/dist/mcp-server/tools/definitions/brapi-find-observations.tool.js +40 -21
  27. package/dist/mcp-server/tools/definitions/brapi-find-observations.tool.js.map +1 -1
  28. package/dist/mcp-server/tools/definitions/brapi-find-studies.tool.d.ts +0 -1
  29. package/dist/mcp-server/tools/definitions/brapi-find-studies.tool.d.ts.map +1 -1
  30. package/dist/mcp-server/tools/definitions/brapi-find-studies.tool.js +22 -11
  31. package/dist/mcp-server/tools/definitions/brapi-find-studies.tool.js.map +1 -1
  32. package/dist/mcp-server/tools/definitions/brapi-find-variables.tool.d.ts.map +1 -1
  33. package/dist/mcp-server/tools/definitions/brapi-find-variables.tool.js +17 -4
  34. package/dist/mcp-server/tools/definitions/brapi-find-variables.tool.js.map +1 -1
  35. package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.d.ts +3 -3
  36. package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.d.ts.map +1 -1
  37. package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.js +14 -5
  38. package/dist/mcp-server/tools/definitions/brapi-find-variants.tool.js.map +1 -1
  39. package/dist/mcp-server/tools/definitions/brapi-raw-search.tool.d.ts +7 -1
  40. package/dist/mcp-server/tools/definitions/brapi-raw-search.tool.d.ts.map +1 -1
  41. package/dist/mcp-server/tools/definitions/brapi-raw-search.tool.js +19 -0
  42. package/dist/mcp-server/tools/definitions/brapi-raw-search.tool.js.map +1 -1
  43. package/dist/mcp-server/tools/definitions/brapi-server-info.tool.d.ts +11 -0
  44. package/dist/mcp-server/tools/definitions/brapi-server-info.tool.d.ts.map +1 -1
  45. package/dist/mcp-server/tools/definitions/index.d.ts +86 -55
  46. package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -1
  47. package/dist/mcp-server/tools/shared/find-helpers.d.ts +16 -0
  48. package/dist/mcp-server/tools/shared/find-helpers.d.ts.map +1 -1
  49. package/dist/mcp-server/tools/shared/find-helpers.js +25 -0
  50. package/dist/mcp-server/tools/shared/find-helpers.js.map +1 -1
  51. package/dist/mcp-server/tools/shared/orientation-envelope.d.ts +22 -0
  52. package/dist/mcp-server/tools/shared/orientation-envelope.d.ts.map +1 -1
  53. package/dist/mcp-server/tools/shared/orientation-envelope.js +39 -0
  54. package/dist/mcp-server/tools/shared/orientation-envelope.js.map +1 -1
  55. package/dist/services/brapi-dialect/cassavabase-dialect.d.ts +28 -0
  56. package/dist/services/brapi-dialect/cassavabase-dialect.d.ts.map +1 -0
  57. package/dist/services/brapi-dialect/cassavabase-dialect.js +196 -0
  58. package/dist/services/brapi-dialect/cassavabase-dialect.js.map +1 -0
  59. package/dist/services/brapi-dialect/detect.d.ts +53 -0
  60. package/dist/services/brapi-dialect/detect.d.ts.map +1 -0
  61. package/dist/services/brapi-dialect/detect.js +68 -0
  62. package/dist/services/brapi-dialect/detect.js.map +1 -0
  63. package/dist/services/brapi-dialect/index.d.ts +29 -0
  64. package/dist/services/brapi-dialect/index.d.ts.map +1 -0
  65. package/dist/services/brapi-dialect/index.js +31 -0
  66. package/dist/services/brapi-dialect/index.js.map +1 -0
  67. package/dist/services/brapi-dialect/registry.d.ts +25 -0
  68. package/dist/services/brapi-dialect/registry.d.ts.map +1 -0
  69. package/dist/services/brapi-dialect/registry.js +39 -0
  70. package/dist/services/brapi-dialect/registry.js.map +1 -0
  71. package/dist/services/brapi-dialect/spec-dialect.d.ts +13 -0
  72. package/dist/services/brapi-dialect/spec-dialect.d.ts.map +1 -0
  73. package/dist/services/brapi-dialect/spec-dialect.js +17 -0
  74. package/dist/services/brapi-dialect/spec-dialect.js.map +1 -0
  75. package/dist/services/brapi-dialect/types.d.ts +58 -0
  76. package/dist/services/brapi-dialect/types.d.ts.map +1 -0
  77. package/dist/services/brapi-dialect/types.js +18 -0
  78. package/dist/services/brapi-dialect/types.js.map +1 -0
  79. package/package.json +1 -1
  80. 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.3.9",
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.3.9",
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.3.9",
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.3.9",
52
+ "version": "0.4.2",
53
53
  "packageArguments": [
54
54
  { "type": "positional", "value": "run" },
55
55
  { "type": "positional", "value": "start:http" }