@cyanheads/brapi-mcp-server 0.3.6 → 0.3.7
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 +1 -1
- package/README.md +5 -2
- package/changelog/0.3.x/0.3.7.md +18 -0
- package/dist/config/server-config.d.ts +4 -0
- package/dist/config/server-config.d.ts.map +1 -1
- package/dist/config/server-config.js +6 -0
- package/dist/config/server-config.js.map +1 -1
- package/dist/index.js +6 -41
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/index.d.ts +1030 -0
- package/dist/mcp-server/tools/definitions/index.d.ts.map +1 -0
- package/dist/mcp-server/tools/definitions/index.js +50 -0
- package/dist/mcp-server/tools/definitions/index.js.map +1 -0
- package/package.json +1 -1
- package/server.json +17 -3
package/CLAUDE.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Agent Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** brapi-mcp-server
|
|
4
|
-
**Version:** 0.3.
|
|
4
|
+
**Version:** 0.3.7
|
|
5
5
|
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)
|
|
6
6
|
|
|
7
7
|
> **Read the framework docs first:** `node_modules/@cyanheads/mcp-ts-core/CLAUDE.md` contains the full API reference — builders, Context, error codes, exports, patterns. This file covers server-specific conventions only.
|
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
<div align="center">
|
|
9
9
|
|
|
10
|
-
[](https://www.npmjs.com/package/@cyanheads/brapi-mcp-server) [](https://www.npmjs.com/package/@cyanheads/brapi-mcp-server) [](./CHANGELOG.md) [](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) [](https://modelcontextprotocol.io/)
|
|
11
11
|
|
|
12
12
|
[](./LICENSE) [](https://www.typescriptlang.org/) [](https://bun.sh/) [](./CHANGELOG.md)
|
|
13
13
|
|
|
@@ -54,7 +54,7 @@ Nineteen tools grouped by shape — connection tools bootstrap a session, `find_
|
|
|
54
54
|
|
|
55
55
|
| Tool Name | Description |
|
|
56
56
|
|:----------|:------------|
|
|
57
|
-
| `brapi_submit_observations` | Submit new (POST) or updated (PUT) observation rows for a study. Default `mode: preview` validates only; `mode: apply` elicits confirmation, fans POST + PUT in parallel, and reports the post-write count. Additive — no observation is destroyed. |
|
|
57
|
+
| `brapi_submit_observations` | Submit new (POST) or updated (PUT) observation rows for a study. Default `mode: preview` validates only; `mode: apply` elicits confirmation, fans POST + PUT in parallel, and reports the post-write count. Additive — no observation is destroyed. **Opt-in via `BRAPI_ENABLE_WRITES=true`** — omitted from `tools/list` otherwise. |
|
|
58
58
|
|
|
59
59
|
### Escape hatches
|
|
60
60
|
|
|
@@ -253,6 +253,8 @@ Last-resort passthrough to any BrAPI `POST /search/{noun}`. Handles the 202 / as
|
|
|
253
253
|
|
|
254
254
|
Two-phase write for observation rows. Default `mode: preview` validates rows against the study's variables and returns a routing breakdown; `mode: apply` elicits user confirmation when the client supports it, then POSTs new rows and PUTs rows carrying `observationDbId` in parallel.
|
|
255
255
|
|
|
256
|
+
> **Off by default.** Registered only when the operator sets `BRAPI_ENABLE_WRITES=true`; omitted from the surface otherwise. Operator-level deploy-time consent for the only mutation tool — the in-tool preview default, `ctx.elicit` confirmation, `force: true` bypass, and `brapi:write:observations` auth scope all continue to apply when registration is on.
|
|
257
|
+
|
|
256
258
|
- POST/PUT routing keyed on per-row `observationDbId` presence — mixed batches in one call
|
|
257
259
|
- Pre-flight pulls `/studies/{id}/observationvariables` to flag rows whose variable isn't exposed by the study (warning, not rejection — the upstream is the source of truth)
|
|
258
260
|
- Apply mode requires `ctx.elicit` confirmation OR an explicit `force: true` flag (rejected with `Forbidden` otherwise)
|
|
@@ -443,6 +445,7 @@ Every variable is optional — agents can configure connections entirely at runt
|
|
|
443
445
|
| `BRAPI_DATASET_STORE_DIR` | Filesystem path for `DatasetStore` payloads when filesystem storage is active. | — |
|
|
444
446
|
| `BRAPI_REFERENCE_CACHE_TTL_SECONDS` | TTL for reference-data cache entries (programs, trials, locations, crops). | `3600` |
|
|
445
447
|
| `BRAPI_ALLOW_PRIVATE_IPS` | Allow connecting to RFC 1918 / loopback targets. Dev-only. | `false` |
|
|
448
|
+
| `BRAPI_ENABLE_WRITES` | Opt-in flag for the write surface (`brapi_submit_observations`). Off by default — the tool is omitted from `tools/list` unless the operator opts in for this deployment. | `false` |
|
|
446
449
|
| `MCP_TRANSPORT_TYPE` | Transport: `stdio` or `http`. | `stdio` |
|
|
447
450
|
| `MCP_HTTP_PORT` | Port for HTTP server. | `3010` |
|
|
448
451
|
| `MCP_AUTH_MODE` | Auth mode: `none`, `jwt`, or `oauth`. | `none` |
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Add `BRAPI_ENABLE_WRITES` env-var gate for the write surface — `brapi_submit_observations` is omitted from `tools/list` unless the operator opts in for the deployment. Mirrors obsidian-mcp-server's `OBSIDIAN_ENABLE_COMMANDS` pattern."
|
|
3
|
+
breaking: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 0.3.7 — 2026-04-29
|
|
7
|
+
|
|
8
|
+
A consent-layer release with no behavior change for opted-in deployments. The only mutation tool (`brapi_submit_observations`) is now gated behind an explicit deploy-time env flag, so a hosted instance never exposes writes unless the operator deliberately turns them on. The in-tool preview default, `ctx.elicit` confirmation, `force: true` bypass, and `brapi:write:observations` auth scope all continue to apply when the gate is open. Closes [#2](https://github.com/cyanheads/brapi-mcp-server/issues/2).
|
|
9
|
+
|
|
10
|
+
## Added
|
|
11
|
+
|
|
12
|
+
- **`BRAPI_ENABLE_WRITES` env var (default `false`)** — opt-in flag for the write surface. When unset or `false`, `brapi_submit_observations` is **not registered** on `createApp()` — it doesn't appear in `tools/list`, agents never see the description, the apply path is structurally unreachable. When `true`, it registers normally and existing in-tool gating layers stay in place. Surfaces as a configured env var on both `stdio` and `streamable-http` packages in `server.json` so the registry shows the flag to operators.
|
|
13
|
+
- **`src/mcp-server/tools/definitions/index.ts`** — new barrel exporting `readOnlyToolDefinitions` (18 tools) and `writeToolDefinitions` (`[brapiSubmitObservations]`). Pure exports — no eager `getServerConfig()` call, so reflective tooling (lint script, future tests) can import the arrays without env-parsing side effects.
|
|
14
|
+
- **`tests/registration-gate.test.ts`** — verifies `readOnlyToolDefinitions` excludes `brapi_submit_observations`, `writeToolDefinitions` contains exactly that tool, the env var parses to the right `enableWrites` value across stub variants, and the entry-point composition produces the expected tool list at both flag positions.
|
|
15
|
+
|
|
16
|
+
## Changed
|
|
17
|
+
|
|
18
|
+
- **`src/index.ts` registers tools via conditional spread** — `serverConfig.enableWrites ? [...readOnlyToolDefinitions, ...writeToolDefinitions] : readOnlyToolDefinitions`. All other call sites untouched. The 18 individual `import` lines for tools are gone — they live in the new barrel now.
|
|
@@ -30,6 +30,10 @@ declare const ServerConfigSchema: z.ZodObject<{
|
|
|
30
30
|
true: "true";
|
|
31
31
|
false: "false";
|
|
32
32
|
}>>, z.ZodTransform<boolean, "true" | "false">>;
|
|
33
|
+
enableWrites: z.ZodPipe<z.ZodDefault<z.ZodEnum<{
|
|
34
|
+
true: "true";
|
|
35
|
+
false: "false";
|
|
36
|
+
}>>, z.ZodTransform<boolean, "true" | "false">>;
|
|
33
37
|
}, z.core.$strip>;
|
|
34
38
|
export type ServerConfig = z.infer<typeof ServerConfigSchema>;
|
|
35
39
|
export declare function getServerConfig(): ServerConfig;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAG3C,QAAA,MAAM,kBAAkB
|
|
1
|
+
{"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAG3C,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiGtB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D,wBAAgB,eAAe,IAAI,YAAY,CAuB9C;AAED,uDAAuD;AACvD,wBAAgB,iBAAiB,IAAI,IAAI,CAExC"}
|
|
@@ -96,6 +96,11 @@ const ServerConfigSchema = z.object({
|
|
|
96
96
|
.default('false')
|
|
97
97
|
.transform((v) => v === 'true')
|
|
98
98
|
.describe('Allow connecting to RFC 1918 / loopback targets. Dev-only.'),
|
|
99
|
+
enableWrites: z
|
|
100
|
+
.enum(['true', 'false'])
|
|
101
|
+
.default('false')
|
|
102
|
+
.transform((v) => v === 'true')
|
|
103
|
+
.describe('Opt-in flag for the write surface (`brapi_submit_observations`). Off by default — the tool is omitted from `tools/list` unless the operator opts in for this deployment.'),
|
|
99
104
|
});
|
|
100
105
|
let _config;
|
|
101
106
|
export function getServerConfig() {
|
|
@@ -118,6 +123,7 @@ export function getServerConfig() {
|
|
|
118
123
|
searchPollTimeoutMs: 'BRAPI_SEARCH_POLL_TIMEOUT_MS',
|
|
119
124
|
searchPollIntervalMs: 'BRAPI_SEARCH_POLL_INTERVAL_MS',
|
|
120
125
|
allowPrivateIps: 'BRAPI_ALLOW_PRIVATE_IPS',
|
|
126
|
+
enableWrites: 'BRAPI_ENABLE_WRITES',
|
|
121
127
|
});
|
|
122
128
|
return _config;
|
|
123
129
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -22,47 +22,13 @@ import { brapiFiltersResource } from './mcp-server/resources/definitions/brapi-f
|
|
|
22
22
|
import { brapiGermplasmResource } from './mcp-server/resources/definitions/brapi-germplasm.resource.js';
|
|
23
23
|
import { brapiServerInfoResource } from './mcp-server/resources/definitions/brapi-server-info.resource.js';
|
|
24
24
|
import { brapiStudyResource } from './mcp-server/resources/definitions/brapi-study.resource.js';
|
|
25
|
-
import {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
import { brapiFindLocations } from './mcp-server/tools/definitions/brapi-find-locations.tool.js';
|
|
31
|
-
import { brapiFindObservations } from './mcp-server/tools/definitions/brapi-find-observations.tool.js';
|
|
32
|
-
import { brapiFindStudies } from './mcp-server/tools/definitions/brapi-find-studies.tool.js';
|
|
33
|
-
import { brapiFindVariables } from './mcp-server/tools/definitions/brapi-find-variables.tool.js';
|
|
34
|
-
import { brapiFindVariants } from './mcp-server/tools/definitions/brapi-find-variants.tool.js';
|
|
35
|
-
import { brapiGetGermplasm } from './mcp-server/tools/definitions/brapi-get-germplasm.tool.js';
|
|
36
|
-
import { brapiGetImage } from './mcp-server/tools/definitions/brapi-get-image.tool.js';
|
|
37
|
-
import { brapiGetStudy } from './mcp-server/tools/definitions/brapi-get-study.tool.js';
|
|
38
|
-
import { brapiManageDataset } from './mcp-server/tools/definitions/brapi-manage-dataset.tool.js';
|
|
39
|
-
import { brapiRawGet } from './mcp-server/tools/definitions/brapi-raw-get.tool.js';
|
|
40
|
-
import { brapiRawSearch } from './mcp-server/tools/definitions/brapi-raw-search.tool.js';
|
|
41
|
-
import { brapiServerInfo } from './mcp-server/tools/definitions/brapi-server-info.tool.js';
|
|
42
|
-
import { brapiSubmitObservations } from './mcp-server/tools/definitions/brapi-submit-observations.tool.js';
|
|
43
|
-
import { brapiWalkPedigree } from './mcp-server/tools/definitions/brapi-walk-pedigree.tool.js';
|
|
25
|
+
import { readOnlyToolDefinitions, writeToolDefinitions, } from './mcp-server/tools/definitions/index.js';
|
|
26
|
+
const serverConfig = getServerConfig();
|
|
27
|
+
const tools = serverConfig.enableWrites
|
|
28
|
+
? [...readOnlyToolDefinitions, ...writeToolDefinitions]
|
|
29
|
+
: readOnlyToolDefinitions;
|
|
44
30
|
await createApp({
|
|
45
|
-
tools
|
|
46
|
-
brapiConnect,
|
|
47
|
-
brapiServerInfo,
|
|
48
|
-
brapiDescribeFilters,
|
|
49
|
-
brapiFindStudies,
|
|
50
|
-
brapiGetStudy,
|
|
51
|
-
brapiFindGermplasm,
|
|
52
|
-
brapiGetGermplasm,
|
|
53
|
-
brapiWalkPedigree,
|
|
54
|
-
brapiFindVariables,
|
|
55
|
-
brapiFindObservations,
|
|
56
|
-
brapiFindImages,
|
|
57
|
-
brapiGetImage,
|
|
58
|
-
brapiFindLocations,
|
|
59
|
-
brapiFindVariants,
|
|
60
|
-
brapiFindGenotypeCalls,
|
|
61
|
-
brapiManageDataset,
|
|
62
|
-
brapiSubmitObservations,
|
|
63
|
-
brapiRawGet,
|
|
64
|
-
brapiRawSearch,
|
|
65
|
-
],
|
|
31
|
+
tools,
|
|
66
32
|
resources: [
|
|
67
33
|
brapiServerInfoResource,
|
|
68
34
|
brapiCallsResource,
|
|
@@ -73,7 +39,6 @@ await createApp({
|
|
|
73
39
|
],
|
|
74
40
|
prompts: [brapiEdaStudy, brapiMetaAnalysis],
|
|
75
41
|
setup() {
|
|
76
|
-
const serverConfig = getServerConfig();
|
|
77
42
|
initBrapiClient(serverConfig);
|
|
78
43
|
initCapabilityRegistry(serverConfig);
|
|
79
44
|
initReferenceDataCache(serverConfig);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,4DAA4D,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gEAAgE,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,4DAA4D,CAAC;AAChG,OAAO,EAAE,oBAAoB,EAAE,MAAM,8DAA8D,CAAC;AACpG,OAAO,EAAE,oBAAoB,EAAE,MAAM,8DAA8D,CAAC;AACpG,OAAO,EAAE,sBAAsB,EAAE,MAAM,gEAAgE,CAAC;AACxG,OAAO,EAAE,uBAAuB,EAAE,MAAM,kEAAkE,CAAC;AAC3G,OAAO,EAAE,kBAAkB,EAAE,MAAM,4DAA4D,CAAC;AAChG,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AACnE,OAAO,EAAE,sBAAsB,EAAE,MAAM,yCAAyC,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,uCAAuC,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,aAAa,EAAE,MAAM,4DAA4D,CAAC;AAC3F,OAAO,EAAE,iBAAiB,EAAE,MAAM,gEAAgE,CAAC;AACnG,OAAO,EAAE,kBAAkB,EAAE,MAAM,4DAA4D,CAAC;AAChG,OAAO,EAAE,oBAAoB,EAAE,MAAM,8DAA8D,CAAC;AACpG,OAAO,EAAE,oBAAoB,EAAE,MAAM,8DAA8D,CAAC;AACpG,OAAO,EAAE,sBAAsB,EAAE,MAAM,gEAAgE,CAAC;AACxG,OAAO,EAAE,uBAAuB,EAAE,MAAM,kEAAkE,CAAC;AAC3G,OAAO,EAAE,kBAAkB,EAAE,MAAM,4DAA4D,CAAC;AAChG,OAAO,EACL,uBAAuB,EACvB,oBAAoB,GACrB,MAAM,yCAAyC,CAAC;AAEjD,MAAM,YAAY,GAAG,eAAe,EAAE,CAAC;AAEvC,MAAM,KAAK,GAAG,YAAY,CAAC,YAAY;IACrC,CAAC,CAAC,CAAC,GAAG,uBAAuB,EAAE,GAAG,oBAAoB,CAAC;IACvD,CAAC,CAAC,uBAAuB,CAAC;AAE5B,MAAM,SAAS,CAAC;IACd,KAAK;IACL,SAAS,EAAE;QACT,uBAAuB;QACvB,kBAAkB;QAClB,kBAAkB;QAClB,sBAAsB;QACtB,oBAAoB;QACpB,oBAAoB;KACrB;IACD,OAAO,EAAE,CAAC,aAAa,EAAE,iBAAiB,CAAC;IAC3C,KAAK;QACH,eAAe,CAAC,YAAY,CAAC,CAAC;QAC9B,sBAAsB,CAAC,YAAY,CAAC,CAAC;QACrC,sBAAsB,CAAC,YAAY,CAAC,CAAC;QACrC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAC/B,kBAAkB,CAAC,YAAY,CAAC,CAAC;QACjC,oBAAoB,EAAE,CAAC;IACzB,CAAC;CACF,CAAC,CAAC"}
|