An MCP server for connecting to BrAPI v2.1 servers and querying breeding data such as studies, germplasm, variables, observations, images, locations, variants, and genotype calls. It also provides a DuckDB-backed dataframe workspace for spilled query results, export/query tools, and optional write support for submitting observations.
From the registry: Collaborative BrAPI v2.1 MCP workspace — studies, germplasm, genotypes across Breedbase, T3, more.
Please install the `brapi-mcp-server` MCP server into my current AI client (that's you).
Optional prerequisites:
- Install Node.js or Bun — Install Node.js v24+ or Bun v1.3.11+ to run the server. Prefer Node.js if using the npx runner. (https://bun.sh/)
- Native DuckDB support — The server depends on @duckdb/node-api, which requires a supported platform/runtime. Supported on Linux/macOS/Windows x64 plus Linux/macOS arm64; not supported on Windows arm64 or Cloudflare Workers. (https://www.npmjs.com/package/@duckdb/node-api)
Canonical MCP server config (stdio transport):
- command: `npx`
- args: ["-y","@cyanheads/brapi-mcp-server@latest"]
- optional environment variables:
- `MCP_TRANSPORT_TYPE`: Transport type. For MCP client stdio configuration, set this to stdio. (example: `stdio`)
- `MCP_LOG_LEVEL`: Log verbosity. (example: `info`)
- `BRAPI_DEFAULT_BASE_URL`: Default BrAPI v2 base URL for the default connection. (example: `<your-brapi-base-url>`)
- `BRAPI_DEFAULT_USERNAME`: Username for SGN session-token auth on the default connection. (example: `<your-username>`)
- `BRAPI_DEFAULT_PASSWORD`: Password for SGN session-token auth on the default connection. (example: `<your-password>`)
- `BRAPI_DEFAULT_OAUTH_CLIENT_ID`: OAuth2 client ID for the default connection. (example: `<your-oauth-client-id>`)
- `BRAPI_DEFAULT_OAUTH_CLIENT_SECRET`: OAuth2 client secret for the default connection. (example: `<your-oauth-client-secret>`)
- `BRAPI_DEFAULT_API_KEY`: Static API key for the default connection. (example: `<your-api-key>`)
- `BRAPI_DEFAULT_API_KEY_HEADER`: Header name for the default API key. Defaults to Authorization. (example: `<your-api-key-header>`)
- `BRAPI_BUILTIN_ALIASES_DISABLED`: Comma-separated built-in alias names to disable. (example: `<alias1>,<alias2>`)
- `BRAPI_LOAD_LIMIT`: In-context row cap before find_* results spill to a dataframe. (example: `<row-limit>`)
- `BRAPI_MAX_CONCURRENT_REQUESTS`: Per-connection concurrency cap. (example: `<max-concurrent-requests>`)
- `BRAPI_RETRY_MAX_ATTEMPTS`: Maximum retry attempts for 429/5xx responses. (example: `<retry-attempts>`)
- `BRAPI_RETRY_BASE_DELAY_MS`: Base delay in milliseconds for exponential backoff. (example: `<retry-delay-ms>`)
- `BRAPI_REQUEST_TIMEOUT_MS`: Per-request HTTP timeout in milliseconds. (example: `<timeout-ms>`)
- `BRAPI_COMPANION_TIMEOUT_MS`: Timeout in milliseconds for non-critical companion enrichments. (example: `<companion-timeout-ms>`)
- `BRAPI_SEARCH_POLL_TIMEOUT_MS`: Total timeout in milliseconds for async /search polling. (example: `<search-poll-timeout-ms>`)
- `BRAPI_SEARCH_POLL_INTERVAL_MS`: Polling interval in milliseconds for async /search. (example: `<search-poll-interval-ms>`)
- `BRAPI_DATASET_TTL_SECONDS`: TTL in seconds for dataframe provenance metadata. (example: `<dataset-ttl-seconds>`)
- `BRAPI_REFERENCE_CACHE_TTL_SECONDS`: TTL in seconds for cached reference data such as programs, trials, locations, and crops. (example: `<reference-cache-ttl-seconds>`)
- `BRAPI_ALLOW_PRIVATE_IPS`: Allow RFC 1918 or loopback targets. Intended for development only. (example: `<true-or-false>`)
- `BRAPI_ENABLE_WRITES`: Enable the brapi_submit_observations write tool. (example: `<true-or-false>`)
- `BRAPI_GENOTYPE_CALLS_MAX_PULL`: Maximum upstream rows per brapi_find_genotype_calls invocation. (example: `<max-pull-rows>`)
- `BRAPI_CANVAS_DROP_ENABLED`: Enable the brapi_dataframe_drop tool. (example: `<true-or-false>`)
- `BRAPI_EXPORT_DIR`: Directory for brapi_dataframe_export output files. Setting this path enables the export tool; stdio-only. (example: `<your-export-directory>`)
- `BRAPI_CANVAS_MAX_ROWS`: Maximum rows returned per dataframe query. (example: `<max-query-rows>`)
- `BRAPI_CANVAS_QUERY_TIMEOUT_MS`: Wall-clock timeout in milliseconds for dataframe queries. (example: `<canvas-query-timeout-ms>`)
- `MCP_HTTP_PORT`: HTTP port used when running the server in HTTP mode. (example: `<http-port>`)
- `MCP_SESSION_MODE`: Session mode: stateful, stateless, or auto. (example: `<stateful-or-stateless-or-auto>`)
- `MCP_AUTH_MODE`: Authentication mode: none, jwt, or oauth. (example: `<none-or-jwt-or-oauth>`)
- `STORAGE_PROVIDER_TYPE`: Storage backend type. (example: `<storage-provider-type>`)
- `OTEL_ENABLED`: Enable OpenTelemetry instrumentation. (example: `<true-or-false>`)
- `BRAPI_SESSION_ISOLATION`: When true, isolates connection state and dataframe canvas by HTTP session. No effect on stdio. (example: `<true-or-false>`)
Note: Preferred portable install path is npx. No environment variables are required for basic use: built-in aliases work out of the box, and agents can connect to other BrAPI v2 servers at runtime. The README also documents per-alias environment variables following the pattern BRAPI_<ALIAS>_* (for example BRAPI_<ALIAS>_BASE_URL, _USERNAME, _PASSWORD, _BEARER_TOKEN, _API_KEY, _API_KEY_HEADER, _OAUTH_CLIENT_ID, _OAUTH_CLIENT_SECRET, _OAUTH_TOKEN_URL), where <ALIAS> is uppercased and hyphens become underscores. The server also supports HTTP transport, but the simplest client config shown is stdio.
Add this MCP server to my current client's config in the correct format for you. If you need secrets or credentials I haven't provided, ASK me — do not invent values or leave raw placeholders. After adding it, tell me how to verify the server is connected.BRAPI_GENOTYPE_CALLS_MAX_PULLBounds how many genotype calls are pulled upstream, defaulting to 100k and capped at 500k.BRAPI_CANVAS_DROP_ENABLEDEnables dropping dataframes via brapi_dataframe_drop.BRAPI_EXPORT_DIREnables exporting dataframes to disk and sets the output directory.BRAPI_ENABLE_WRITESEnables observation write tools such as brapi_submit_observations.BRAPI_SESSION_ISOLATIONControls whether connection state and dataframes are isolated per session or shared across sessions in a tenant.Trending hip-hop artist momentum scores across four cultural dimensions.
Official PostHog MCP Server for product analytics, feature flags, experiments, and more.
Official OpenMetadata MCP: governed context and business semantics for AI assistants and agents.