mcpbeat Sign in

Brapi MCP Server

answering

Brapi MCP Server is answering right now. Last checked moments ago. 260 installs a week from npm. It exposes 22 tools. Last commit 19 Sep 2026.

Collaborative BrAPI v2.1 MCP workspace — studies, germplasm, genotypes across Breedbase, T3, more.

Installs per day peak 204 · avg 49 · +445% w/w
a month agotoday
Uptime history 53 hours of history · worst hour 50%
53 hours agonow
98.9%
Uptime 24h
90 of 91 checks
22
Tools
read from the server
325 ms
Response time
average over 24h
260
Installs / week
npm and PyPI

Brapi MCP Server does not always answer

Over the last week it answered 96.0% of our checks. We check every 15 minutes, so you hear about the next outage within the hour — not from your users.

Three servers free · no card

Connect this server

Endpoint below is the one we actually reach during checks — not the one copied from a README. Last verified 0 min ago.

run in your terminal
claude mcp add brapi-mcp-server --transport http https://brapi.caseyjhand.com/mcp
~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "brapi-mcp-server": {
      "url": "https://brapi.caseyjhand.com/mcp"
    }
  }
}
~/.codex/config.toml
[mcp_servers.brapi-mcp-server]
url = "https://brapi.caseyjhand.com/mcp"
.cursor/mcp.json
{
  "mcpServers": {
    "brapi-mcp-server": {
      "url": "https://brapi.caseyjhand.com/mcp"
    }
  }
}
.vscode/mcp.json
{
  "mcpServers": {
    "brapi-mcp-server": {
      "url": "https://brapi.caseyjhand.com/mcp"
    }
  }
}

This one needs environment variables set before it will start: BRAPI_DEFAULT_BASE_URL (Default BrAPI v2 base URL. Optional — connections can be opened at runtime via the brapi_connect tool instead.), 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.), BRAPI_PAGE_SIZE (Upstream pageSize used during canvas spillover walks (decoupled from BRAPI_LOAD_LIMIT). Dataframe ceiling = pageSize × 50 pages.), MCP_HTTP_HOST (The hostname for the HTTP server.), MCP_HTTP_PORT (The port to run the HTTP server on.), MCP_HTTP_ENDPOINT_PATH (The endpoint path for the MCP server.), MCP_AUTH_MODE (Authentication mode to use: 'none', 'jwt', or 'oauth'.), MCP_LOG_LEVEL (Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').). The author declared them in the registry entry; get the values from the project itself.

Available tools 22

Read directly from the server with tools/list, grouped by what they act on. If a tool disappears, we record the date.

brapi
brapi_build_phenotype_matrix
Pull observations across one or more studies and pivot them into a germplasm × trait matrix materialized as a canvas dataframe. Returns a dataframe handle (query with brapi_dataframe_query) plus a summary of dimensions and aggregate method. Long-form output is suitable for downstream GROUP BY analysis by study, germplasm, or variable.
brapi_connect
Open a connection to a BrAPI v2 server, authenticate, and return the full orientation envelope (server identity, capability profile, content summary). Required handshake before other BrAPI tools. Supports multiple concurrent connections via named aliases. Credentials can be configured server-side and omitted from this call. Built-in known servers (callable with no `baseUrl` or `auth` — public BrAPI v2 endpoints): `bti-breedbase-demo`, `bti-cassava`, `bti-sweetpotato`, `t3-barley`, `t3-oat`, `t3-wheat`. Operator-configured aliases on this deployment (credentials and/or baseUrl read from server env vars): `default`, `cassava`. Aliases are shortcuts only; any other BrAPI v2 server is reachable by passing `baseUrl` directly.
brapi_dataframe_describe
Start here after a spillover. Lists dataframes (or describes one) with columns, row counts, and originating-source provenance. The dataframe name appears inline on every find_* response that spilled (`result.dataframe.tableName`) — pass it as `dataframe` to inspect schema and provenance before writing the first brapi_dataframe_query. Listing without a name is unavailable when this server runs as a shared HTTP endpoint without per-caller auth; pass a known name instead.
brapi_dataframe_query
Run SQL across in-memory dataframes. Dataframes auto-populate when find_* tools spill (named `df_<uuid>`) — the dataframe name appears inline on every find_* response that spilled (`result.dataframe.tableName`), so the typical flow is find_* → read the name → query here. Use brapi_dataframe_describe to inspect schema and provenance for a known name. SELECT only — writes/DDL/COPY/PRAGMA/ATTACH/file-reads are rejected. Use SQL as the paging idiom: `LIMIT/OFFSET` to walk results, projection to trim columns, aggregation to summarize. Use `registerAs` to chain — the result lands as a new dataframe.
brapi_describe_filters
List the valid filter names for a BrAPI endpoint (studies, germplasm, observations, variables, images, variants, locations) — companion lookup for the `extraFilters` passthrough on any `find_*` tool. Entries reflect the BrAPI v2.1 spec; individual servers may implement subsets.
brapi_export_genotype_matrix
Pull genotype calls for a germplasm × variant set and pivot them into a matrix. `format` controls the output: `matrix-json` registers a wide germplasm × variant canvas dataframe for SQL analysis; `vcf-lite` returns VCF-subset text (in the `vcf` field) and also registers the dataframe; `plink` returns .ped/.map text (in the `ped`/`map` fields) and also registers the dataframe. vcf-lite/plink pull /variants metadata for CHROM/POS/REF/ALT (`.`/`0` when the server lacks them). Column names are SQL-safe identifiers; `variantColumnLegend` maps them back to original variant IDs.
brapi_find_genotype_calls
Pull genotype calls for a germplasm × variant set. Filter to bound cost — at minimum, set `variantSetDbId` or `germplasmDbIds`. The upstream pull is capped by deployment policy; when the pull is truncated, narrow the filters or query the spilled dataframe. `loadLimit` bounds the rows returned inline; the full collected set is materialized as a dataframe — query it with brapi_dataframe_query (SQL) instead of paging row-by-row.
brapi_find_germplasm
Find germplasm by name, synonym, accession number, PUI, crop, or free-text query. Matches across registered synonyms. When the upstream total exceeds loadLimit, the full result set is materialized as a dataframe — query it with brapi_dataframe_query (SQL) instead of paging row-by-row.
brapi_find_images
Filter images by observation unit, observation, study, descriptive ontology term, file name, or MIME type. Returns metadata only — use brapi_get_image to fetch bytes inline. When the upstream total exceeds loadLimit, the full result set is materialized as a dataframe — query it with brapi_dataframe_query (SQL).
brapi_find_locations
Find research stations / field sites by country, abbreviation, type, location ID, or free-text. Countries filter by ISO 3166-1 alpha-3 code via countryCodes, or by free-form English country name via countryNames (resolved client-side to alpha-3 — "Uganda" → "UGA"). Optional bbox parameter restricts rows to a latitude/longitude window. When the spec-correct GeoJSON [lon, lat, alt] reading produces zero matches and at least one row carries a Point geometry, the bbox filter retries once with axes swapped (handles non-conformant servers that store [lat, lon, alt]) and surfaces a warning + `coordinateAxisOrder: "swapped"`. When the upstream total exceeds loadLimit, the full result set is materialized as a dataframe — query it with brapi_dataframe_query (SQL).
brapi_find_observations
Pull observation records filtered by study, germplasm, variable, season, or observation unit. When the upstream total exceeds loadLimit, the full result set is materialized as a dataframe — query it with brapi_dataframe_query (SQL).
brapi_find_studies
Locate studies matching crop, trial type, season, location, or program. Enriches results with program/trial/location context in one call. When the upstream total exceeds loadLimit, the full result set is materialized as a dataframe — query it with brapi_dataframe_query (SQL).
brapi_find_variables
Find observation variables (traits) by name, trait class, ontology term, or free-text query. Free-text queries are ranked against the returned set and may resolve to ontology URIs when the server advertises them. When the upstream total exceeds loadLimit, the full result set is materialized as a dataframe — query it with brapi_dataframe_query (SQL).
brapi_find_variants
Find variant records by variant set, reference sequence, or genomic region (start/end, 1-based inclusive / exclusive). When the upstream total exceeds loadLimit, the full result set is materialized as a dataframe — query it with brapi_dataframe_query (SQL).
brapi_germplasm_performance
Aggregate a single germplasm's observations across every study it appears in, returning per-variable summary statistics (n, mean, median, sd, min, max), the contributing studies, and seasons. Study-anchored: discovers the germplasm's studies first (with a dialect-honor cross-check, capped at 200 studies), then pulls observations per study — avoids the unanchored germplasm-only pull that stalls on SGN/Breedbase. Pass an explicit studyDbIds set to skip discovery and its 200-study cap — e.g. process a chunk of the full study list retrieved via brapi_find_studies with extraFilters.germplasmDbIds. For the underlying observation matrix, use brapi_build_phenotype_matrix.
brapi_get_germplasm
Fetch a single germplasm by DbId with attributes and direct parents. Response companions report study count, direct parent count, and direct descendant count — signals for pedigree depth and observation coverage.
brapi_get_image
Fetch image bytes for up to 5 imageDbIds and return them inline as `type: image` content blocks. Falls back to the metadata `imageURL` when the server lacks dedicated image-content delivery. No filesystem side-effects.
brapi_get_study
Fetch a single study by DbId with program, trial, and location fully resolved. Response includes cheap observation/observation-unit/variable counts as drill-down signals.
brapi_raw_get
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`.
brapi_raw_search
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.
brapi_server_info
Return the full orientation envelope for a registered BrAPI connection — server identity, capabilities, content counts, and notes. Re-running refreshes the cached capability scan; pass an alias to read a non-default connection.
brapi_walk_pedigree
Walk germplasm ancestry or descendancy as a deduplicated DAG, with multi-generation traversal, cycle detection, and depth limits. Returns nodes + edges plus traversal stats (depthReached, rootCount, leafCount, cycleCount, deadEndCount).

Endpoints

URLTransportStateLatencyChecked
https://brapi.caseyjhand.com/mcp streamable-http answering 213 ms 0 min ago

Alternatives to Brapi MCP Server

same job, measured the same way
Inkbloc
by epsteinj

Collaborative document workspace with interactive AI blocks

25 installs/wk local only
Smithery Notion
by smithery

A Notion workspace is a collaborative environment where teams can organize work, manage projects,…

answering
MCP fork of Google Workspace CLI
by shigechika

MCP fork of Google Workspace CLI (Gmail, Drive, Calendar, and more)

local only
Letswork
by saicharanrajoju

Real-time collaborative coding via MCP — two developers, one codebase

128 installs/wk local only
Zoom Workspace
by zoom

Zoom workspace server for meetings, chat, docs, recordings, and AI-generated collaboration content.

answering
Docspace
by onlyoffice

A room-based collaborative platform

127 installs/wk answering
Google Tag Manager MCP
by a1-x-tech

MCP server for the Google Tag Manager API v2: containers, workspaces, tags, triggers, publishing.

220 installs/wk local only
Anytype MCP
by anyproto

Official MCP server for Anytype API - your encrypted, local and collaborative wiki.

2 628 installs/wk local only

Brapi MCP Server — questions

Answers built from our own checks of this server.

What can Brapi MCP Server do?
It exposes 22 tools, read directly from the server on our last check. Among them: brapi_build_phenotype_matrix, brapi_connect, brapi_dataframe_describe, brapi_dataframe_query, brapi_describe_filters, brapi_export_genotype_matrix and 16 more. The full list with descriptions is on this page — we take it from the server itself via tools/list, not from a README. How MCP servers expose tools in the first place →
Is Brapi MCP Server working right now?
We send a real MCP handshake every 15 minutes. Over the last 24 hours 90 of 91 checks got a reply (98.9%), average response time 325 ms. The bar chart above shows every period we have measured.
How do I connect Brapi MCP Server?
Copy the ready config from this page — we generate it for Claude Code, Claude Desktop, Codex, Cursor and VS Code, each with the file path that client actually reads. It is a remote server, so there is nothing to install — the client connects to the address.
Does Brapi MCP Server need an API key?
No. Brapi MCP Server completed a full MCP handshake with us as an anonymous client and listed its tools without asking for anything. All 22 of them are readable on this page. This is what we observed, not what the docs claim.
How fast is Brapi MCP Server?
It answers our handshake in 325 ms on average, which is faster than 49% of all working MCP servers we measure. The comparison comes from our own checks across the whole registry, every 15 minutes.
How many people use Brapi MCP Server?
The npm package @cyanheads/brapi-mcp-server was installed 260 times in the last week. Week over week that is +445%. We show installs rather than GitHub stars on purpose: a star is a bookmark, an install is someone actually running it.
Is Brapi MCP Server open source?
Yes — it is published under the Apache-2.0 licence, written in TypeScript, 4 stars on GitHub and 8 open issues. The source link is on this page, so you can read exactly what it does with your data before you connect it.