@cyanheads/brapi-mcp-server
Herramientas
25 herramientas agrupadas por forma — las herramientas de conexión inician una sesión, las herramientas find_* devuelven una página resumida con distribuciones y vuelcan las filas sobrantes en un dataframe de canvas que los agentes de la misma sesión pueden consultar o transferir por ID, las herramientas get_* obtienen un único registro con recuentos asociados, además de recorrido de pedigrí, un espacio de trabajo SQL integrado sobre filas volcadas (respaldado por DuckDB), exportación de archivos para entrega a humanos, una superficie de escritura aditiva para observaciones y vías de escape de paso directo sin procesar.
Orientar
Herramienta | Descripción |
| Autentica, registra la conexión bajo un alias, almacena en caché el perfil de capacidades y devuelve el sobre de orientación en línea. Una sola llamada orienta completamente al agente. |
| Vuelve a obtener el sobre de orientación para un alias registrado: identidad, autenticación, capacidades, recuentos de contenido, atribución, notas. |
| Catálogo estático de filtros BrAPI v2.1 para cualquier endpoint: impulsa el descubrimiento de |
Recuperar
Herramienta | Descripción |
| Busca estudios por cultivo / tipo de ensayo / temporada / ubicación / programa. Distribuciones + vuelco de dataframe. |
| Obtiene un estudio con las claves foráneas (FK) de programa / ensayo / ubicación resueltas y recuentos asociados (observaciones, unidades, variables). |
| Busca germoplasma por nombre, sinónimo, accesión, PUI, cultivo o texto libre. Distribuciones + vuelco de dataframe. |
| Obtiene un germoplasma con atributos, parentales directos y recuentos asociados (estudios, parentales, descendientes). |
| Recorre la ascendencia / descendencia mediante BFS como un DAG deduplicado con detección de ciclos, límites de profundidad y estadísticas de recorrido. |
| Busca variables de observación por nombre / clase / ontología / texto libre; clasificadas en el cliente mediante |
| Obtiene registros de observación por estudio / germoplasma / variable / temporada / unidad / marca de tiempo. Vuelco de dataframe. |
| Filtra metadatos de imágenes por unidad / estudio / ontología / tipo MIME. Bytes a través de |
| Obtiene los bytes de imagen de hasta 5 imageDbIds en línea como bloques |
| Busca estaciones de investigación por país (código ISO alfa-3, o nombre de país en inglés resuelto en el cliente) / tipo / abreviatura, con filtro bbox opcional en el cliente. |
| Busca registros de variantes por conjunto de variantes, referencia o región genómica (inclusiva / exclusiva, base 1). |
| Obtiene llamadas de genotipo mediante sondeo de búsqueda asíncrona. La extracción ascendente está limitada por |
Analizar
Herramienta | Descripción |
| Empieza aquí después de un vuelco. Lista los dataframes (o describe uno) con esquema de columnas, recuentos de filas y procedencia de la fuente de origen. |
| SQL SELECT sobre dataframes en memoria (respaldado por DuckDB). Las filas |
| Activación opcional mediante |
| Activación opcional mediante |
| Construye una matriz de germoplasma × rasgo a partir de uno o más estudios y la materializa como un dataframe de canvas. Admite formato ancho (pivot) o largo con agregación configurable por celda. |
| Agregados de rendimiento por variable (n, media, mediana, sd, min, max, studyCount) para un único germoplasma en todos los estudios donde tiene observaciones. |
| Exporta las llamadas de genotipo de un conjunto de variantes como un dataframe de canvas de germoplasma × variante; también serializa a texto VCF-lite o PLINK |
Escribir (activación opcional: BRAPI_ENABLE_WRITES=true)
Herramienta | Descripción |
| Escritura de observaciones en dos fases: |
Vías de escape
Herramienta | Descripción |
| Paso directo a cualquier |
| Paso directo a cualquier |
Descubrimiento de alias. Los alias integrados y los configurados por el operador se añaden a la descripción de
brapi_connectal iniciar el servidor, de modo que los agentes ven el inventario entools/list. Reinicia después de cambiar las variables de entorno para actualizarlo.
Related MCP server: Helix MCP Server
Recursos
Espejos direccionables por URI de la superficie de herramientas seleccionadas para clientes que prefieren recursos. Todos los recursos usan la conexión predeterminada; los flujos de trabajo multiservidor se enrutan a través de las herramientas.
Plantilla de URI | Espejos |
|
|
| Perfil de capacidades sin procesar |
|
|
|
|
|
|
| Registro de variable de observación (rasgo, escala, método, ontología) |
Indicaciones
Multi-step BrAPI workflow templates — pure user-message generators, no side effects.
Name | Args | Purpose |
|
| Libro de jugadas de EDA para un estudio: orientación, variables, cobertura, datos faltantes, valores atípicos, pedigrí, informe estructurado. |
|
| Metanálisis entre estudios: resolución de rasgos, descubrimiento de estudios, armonización, resúmenes por germoplasma × por estudio y entre estudios. |
Flujos de trabajo multiagente
El servidor tiene dos capas con estado y dos ejes de alcance:
Layer | Default scope | Why |
Connection state (aliases, exchanged tokens) | Tenant + session | Credenciales y tokens activos. El tenant se delimita por usuario ( |
Dataframes ( | Tenant + session | Dentro de un mismo (tenant, sesión), los agentes comparten por nombre |
Dentro de un mismo (tenant, sesión), los dataframes actúan como un cuaderno compartido que se autolimpia: pasa el nombre df_<uuid> entre agentes paralelos en la misma sesión MCP, consérvalo a lo largo de un flujo de trabajo de varios pasos, y consulta / proyecta / agrega / combina desde cualquier posición. Direccionamiento por nombre, con límite de tiempo y ámbito limitado a esa sesión.
Forma predeterminada (aislada). Con MCP_AUTH_MODE=none + HTTP con estado (el valor predeterminado), cada sesión MCP crea su propio estado de conexión y su propio lienzo. Dos investigadores conectados al mismo host no ven los alias brapi_connect del otro, ni los tokens SGN/OAuth intercambiados, ni las filas df_<uuid> volcadas. Stdio siempre se comporta como una sola sesión (proceso único, sin concurrencia).
Clientes en la revisión MCP 2026-07-28. Esa revisión no tiene sesión en ningún transporte: las solicitudes no llevan Mcp-Session-Id, por lo que ctx.sessionId no está definido y un cliente que la negocia recurre al espacio de trabajo compartido del tenant incluso con MCP_SESSION_MODE=stateful. El aislamiento de sesión se aplica a los clientes de la era 2025; los despliegues que necesiten un límite estricto para clientes de la era 2026 deberían crear tenants con MCP_AUTH_MODE=jwt/oauth.
Forma de espacio de trabajo compartido. Establece BRAPI_SESSION_ISOLATION=false para la colaboración entre sesiones en un mismo tenant: varias sesiones MCP comparten entonces el estado de conexión y un lienzo predeterminado, tal como se comportaban los despliegues anteriores a 0.5.3. Útil cuando los agentes de planificación, análisis y redacción se ejecutan como clientes MCP separados pero operan como un solo investigador con credenciales compartidas de origen.
Sobre datos privilegiados. El nombre df_<uuid> es un token de capacidad dentro de un lienzo, no un control de acceso a nivel de fila. Cualquiera que tenga el nombre dentro del mismo cubo (tenant, sesión) puede leer sus filas. Con el aislamiento predeterminado, ese cubo es una sesión MCP. Con BRAPI_SESSION_ISOLATION=false, el cubo se amplía a todo el tenant (todos los llamadores con auth=none, o las sesiones de un usuario con jwt/oauth). Trata los nombres de dataframe como enlaces de uso compartido autenticados: pásalos dentro del cubo, no externamente. El TTL de 24 h limita el radio de impacto; el rastro de procedencia (herramienta de origen, baseUrl, consulta) respalda la auditoría. Como refuerzo adicional: brapi_dataframe_describe exige un nombre dataframe explícito en HTTP de confianza compartida (sin enumeración de listado completo), y brapi_dataframe_query rechaza lecturas del catálogo del sistema (information_schema, pg_catalog, sqlite_master, duckdb_*), de modo que un llamador sin un nombre df_<uuid> conocido no puede sondear ninguna de las dos superficies.
Funciones específicas de BrAPI
Desbordamiento de dataframes — las herramientas
find_*limitan las filas en contexto aloadLimity materializan uniones más grandes (hasta 50 000 filas / 50 páginas) como dataframes de lienzodf_<uuid>respaldados por DuckDB. Descúbrelos conbrapi_dataframe_describe, consúltalos conbrapi_dataframe_query(paginación SQL medianteLIMIT/OFFSET, proyección, agregación). Aplicación de solo lectura en la puerta SQL; ámbito de sesión por defecto (ámbito de tenant conBRAPI_SESSION_ISOLATION=false) — ver Flujos de trabajo multiagente.Sesión multiservidor —
ServerRegistryasigna alias a conexiones BrAPI activas; una sesión puede abarcar Breedbase, T3 y Sweetpotatobase en paralelo.Registro integrado de servidores conocidos —
bti-cassava,bti-sweetpotato,bti-breedbase-demo,t3-wheat,t3-oat,t3-barleyse resuelven de serie sin variables de entorno; el sobre de orientación incluye la atribución CC-BY.Llamadas conscientes de capacidades —
CapabilityRegistryalmacena en caché/serverinfopor conexión y protege cada llamada de herramienta contra endpoints no admitidos. Recurre a/callscuando/serverinfoes escaso.Adaptación de dialectos — los dialectos
spec/brapi-test/breedbase/cassavabase/bmstraducen las claves de filtro en plural de v2.1 a la forma singular que cada familia de servidores respeta, eliminan filtros que se sabe que están rotos, normalizan las codificaciones de forma dispersa y escalan a POST/search/{noun}cuando GET degradaría silenciosamente los filtros de valores múltiples. Se detecta desde/serverinfo(server-name / organization-name); se fija por alias medianteBRAPI_<ALIAS>_DIALECT. Los recuentos de mapeo verificado frente a inferido aparecen en el sobre de orientación para que los agentes vean de un vistazo el suelo de confianza.DuckDB requerido —
@duckdb/node-apies una dependencia normal; el arranque falla de forma segura cuando el lienzo del framework no está disponible. No es compatible con Cloudflare Workers (no hay binario nativo en ese runtime).Transparencia de búsqueda asíncrona —
brapi_find_genotype_callsybrapi_raw_searchmanejan automáticamente el patrón de reintento 202 dePOST /search/{noun}→GET /search/{noun}/{id}.Recorridos DAG de pedigrí —
brapi_walk_pedigreerecorre en BFS la ascendencia / descendencia con detección de ciclos (BrAPI solo expone una generación por llamada); un límite de seguridad de 1000 nodos acota el recorrido y establecetruncatedal alcanzarlo. Los recorridos mayores queloadLimitvuelcan sus conjuntos de nodos y aristas a dos dataframes de lienzo combinables con JOIN y devuelven una vista previa en línea acotada.Contenido de imagen —
brapi_get_imageobtiene los bytes en línea como bloques MCPtype: image, prefiriendo/images/{id}/imagecontentcon respaldo aimageURL.Clasificación de variables por texto libre —
OntologyResolverpuntúa las variables frente a una consulta (PUI / nombre / sinónimo / clase de rasgo) para quefind_variables text:"..."devuelva candidatos clasificados incluso sin/ontologies.Variantes de autenticación en un solo esquema — la unión etiquetada cubre
none/bearer/api_key/sgn(intercambio de token de sesión) /oauth2(credenciales de cliente).Contratos de error tipados — cada modo de fallo declarado lleva un
data.reasonestable, uncodede estilo HTTP y unrecovery.hintpara que los clientes puedan enrutar de forma determinista.
Construido sobre @cyanheads/mcp-ts-core — definiciones declarativas, manejo de errores unificado, autenticación conectable (none / jwt / oauth), almacenamiento intercambiable, registro estructurado con OTel opcional, transportes STDIO + HTTP Streamable.
Trabajar con dataframes
Cuando el total upstream de una herramienta find_* supera loadLimit, la unión completa se materializa como un dataframe de lienzo y la respuesta incluye un identificador dataframe en línea ({ tableName, rowCount, columns, createdAt, expiresAt, … }). Los nombres de columna upstream que no son identificadores seguros para SQL — palabras reservadas como end, IDs que empiezan por dígitos — se sanean para el dataframe, y un columnLegend en el identificador asigna cada columna renombrada a su clave original. SQL es el idioma de paginación — usa LIMIT/OFFSET para recorrer páginas, proyección (SELECT col1, col2) para recortar columnas y agregación (COUNT, GROUP BY, AVG) para resumir sin materializar cada fila.
Los nombres de dataframe son tokens de capacidad con ámbito de sesión por defecto — pasa tableName a cualquier otro agente en la misma sesión MCP (o a un paso posterior del mismo flujo de trabajo) y consultarán el mismo espacio de trabajo por nombre sin volver a extraer datos del upstream. Las herramientas brapi_dataframe_* ofrecen manipulación SQL y más. Ver Flujos de trabajo multiagente para las reglas entre sesiones / entre tenants.
1. brapi_find_observations { studies: ["s-422"] }
→ first-page rows inline + dataframe.tableName = "df_<uuid>" (when totalCount > loadLimit)
2. brapi_dataframe_describe { dataframe: "df_<uuid>" }
→ schema + provenance (originating tool, baseUrl, query, expiry)
3. brapi_dataframe_query { sql: "SELECT germplasmName, value FROM df_<uuid> WHERE observationVariableDbId = 'V1' LIMIT 100" }
→ typed columns + bounded rows
4. brapi_dataframe_query { sql: "SELECT COUNT(*) AS n, AVG(CAST(value AS DOUBLE)) AS mean FROM df_<uuid> WHERE observationVariableDbId = 'V1'" }
→ aggregate without round-tripping all rowsLos dataframes caducan automáticamente mediante TTL (BRAPI_DATASET_TTL_SECONDS, 24 h por defecto). Establece BRAPI_CANVAS_DROP_ENABLED=true para exponer brapi_dataframe_drop y permitir la limpieza explícita.
Primeros pasos
Añádelo a la configuración de tu cliente MCP — elige un ejecutor:
{
"mcpServers": {
"brapi-mcp-server": {
"type": "stdio",
"command": "bunx",
"args": ["@cyanheads/brapi-mcp-server@latest"],
"env": { "MCP_TRANSPORT_TYPE": "stdio", "MCP_LOG_LEVEL": "info" }
}
}
}Sustituye command/args por npx -y @cyanheads/brapi-mcp-server@latest (sin Bun) o docker run -i --rm -e MCP_TRANSPORT_TYPE=stdio ghcr.io/cyanheads/brapi-mcp-server:latest.
Para Streamable HTTP:
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcpNo se requieren variables de entorno — los seis alias integrados (bti-cassava, bti-sweetpotato, bti-breedbase-demo, t3-wheat, t3-oat, t3-barley) se resuelven de serie, y los agentes pueden conectarse a cualquier otra URL de BrAPI v2 en tiempo de ejecución mediante brapi_connect. Para servidores con credenciales, prefiere las variables de entorno sobre la entrada del agente para que las contraseñas / tokens / claves de API no entren en el contexto del LLM — ver Credenciales por alias.
Requisitos previos: Bun v1.3.11+ o Node.js v24+. @duckdb/node-api es una dependencia obligatoria: compatible con Linux/macOS/Windows × x64, además de Linux/macOS arm64 (no Windows arm64; no Cloudflare Workers).
Configuración
Todas las variables son opcionales.
Variable | Descripción | Predeterminado |
| URL base predeterminada de BrAPI v2 (p. ej. | — |
| Autenticación por token de sesión SGN para la conexión predeterminada. | — |
| Credenciales de cliente OAuth2 para la conexión predeterminada. | — |
| Clave de API estática para la conexión predeterminada. | cabecera |
| Nombres de alias separados por comas (sin distinción de mayúsculas/minúsculas) que se eliminan del registro integrado. | — |
| Límite de filas en contexto devuelto por las herramientas |
|
|
|
|
| Límite de concurrencia por conexión. |
|
| Política de reintentos para 429/5xx con retroceso exponencial. |
|
| Tiempo de espera HTTP por solicitud. |
|
| Tiempo de espera más estricto para enriquecimientos complementarios no críticos (búsquedas de FK, sondeos de recuento). Los complementarios también omiten el presupuesto de reintentos, de modo que un upstream lento aparece como advertencia en lugar de alargar la respuesta. |
|
| Presupuesto de sondeo + intervalo para |
|
| TTL para los metadatos de procedencia del dataframe que se conservan junto con las filas volcadas. |
|
| TTL para la caché de programas / ensayos / ubicaciones / cultivos. |
|
| Permitir destinos RFC 1918 / loopback. Solo desarrollo. |
|
| Adhesión voluntaria para el registro de |
|
| Tope de filas ascendente por invocación de |
|
| Tope de columnas de variantes distintas por matriz de |
|
| Adhesión voluntaria para el registro de |
|
| Directorio para los archivos de salida de | — |
| Tope de filas de respuesta por consulta y tiempo de espera en tiempo real para |
|
| Transporte ( |
|
| Modo de autenticación ( |
|
| Cuando es |
|
Las sobrescrituras por alias siguen el patrón BRAPI_<ALIAS>_*; consulte .env.example para ver cada sobrescritura y los comentarios en línea.
Credenciales por alias
brapi_connect resuelve baseUrl y auth a partir de variables de entorno cuando el agente las omite; las credenciales nunca entran en el contexto del LLM. Cuatro capas de precedencia:
Entrada explícita del agente — siempre gana.
Variables de entorno por alias —
BRAPI_<ALIAS>_*(en mayúsculas, guiones → guiones bajos:my-server→BRAPI_MY_SERVER_*).Registro integrado de servidores conocidos — consulte Alias integrados.
Variables de entorno predeterminadas —
BRAPI_DEFAULT_*, solo cuando el alias difiere dedefault. No se superponen a una URL integrada — los valores predeterminados pertenecen al servidor predeterminado.
Cada alias lleva una familia de credenciales — el modo de autenticación se deriva de qué campos están establecidos:
Variables establecidas |
|
|
|
|
|
|
|
|
|
(ninguna establecida) |
|
Mezclar familias dentro de un alias lanza un ValidationError.
# .env — attach write credentials to the built-in 'bti-cassava' alias
BRAPI_BTI_CASSAVA_USERNAME=alice
BRAPI_BTI_CASSAVA_PASSWORD=...
# (BASE_URL omitted — built-in registry covers it)
# Static API key as alias 'prod'
BRAPI_PROD_BASE_URL=https://my-brapi.example.com/brapi/v2
BRAPI_PROD_API_KEY=...
BRAPI_PROD_API_KEY_HEADER=X-API-KeyEntonces el agente llama a brapi_connect({ alias: 'bti-cassava' }) — sin baseUrl, sin auth, sin secretos en el prompt.
Alias integrados
El servidor incluye un registro curado de endpoints públicos de BrAPI v2. Cada uno se resuelve sin configuración adicional; la envoltura de orientación expone licencia, cita y página de inicio en su bloque attribution bajo Creative Commons Attribution.
Alias | Origen | Alojado por | Cultivo | Notas |
| Boyce Thompson Institute | Yuca | NextGen Cassava | |
| Boyce Thompson Institute | Boniato | ||
| Boyce Thompson Institute | Demo | Solo datos de muestra: incorporación y pruebas. | |
| Triticeae Toolbox (T3) | Trigo | Wheat CAP / IWYP. | |
| Triticeae Toolbox (T3) | Avena | Global Oat Genetics Database. | |
| Triticeae Toolbox (T3) | Cebada | T-CAP / US Wheat & Barley Scab Initiative. |
Establece BRAPI_<ALIAS>_BASE_URL para reapuntar a un espejo de staging o un fork (la variable de entorno prevalece sobre la URL integrada — los guiones del alias se convierten en guiones bajos en la variable de entorno, así t3-wheat → BRAPI_T3_WHEAT_BASE_URL). Establece BRAPI_<ALIAS>_USERNAME, etc. para adjuntar credenciales sobre la URL integrada — cada instancia de Breedbase tiene su propia tabla de usuarios, por lo que el acceso de escritura requiere un registro separado en cada upstream. Usa BRAPI_BUILTIN_ALIASES_DISABLED=bti-cassava,t3-wheat para eliminar entradas específicas.
Cita: los seis alias integrados hacen referencia a Morales et al. 2022, "Breedbase: a digital ecosystem for modern plant breeding." G3 12(7): jkac078. doi:10.1093/g3journal/jkac078.
Ejecutar el servidor
# Hot-reload dev (Bun runs TS directly)
bun --watch src/index.ts
# Production
bun run rebuild
bun run start # transport via MCP_TRANSPORT_TYPE (stdio default)
bun run start:stdio # or pin explicitly
bun run start:http
# Checks
bun run devcheck # lint + format + typecheck + security + changelog sync
bun run test # Vitest
bun run lint:mcp # validate MCP definitionsDocker
docker build -t brapi-mcp-server .
docker run --rm -p 3010:3010 brapi-mcp-serverPor defecto usa transporte HTTP, modo de sesión con estado (activa el ciclo de vida de mcp-session-id — requisito previo para BRAPI_SESSION_ISOLATION=true; la protección contra el secuestro de sesión requiere añadir MCP_AUTH_MODE=jwt|oauth encima), registra en /var/log/brapi-mcp-server. Las dependencias pares de OTel se instalan por defecto — --build-arg OTEL_ENABLED=false para omitirlas.
Formas de despliegue
brapi-mcp-server se ejecuta en tres formas — elige la que coincida con tu dominio de confianza. El factor diferenciador es lo que aísla el estado de conexión (alias registrados, tokens de upstream en caché) y los dataframes: nada, la sesión MCP o el tenant de autenticación.
Forma | Configuración | Aislamiento | Ideal para |
Por sesión (por defecto) |
| Cada sesión MCP crea su propio estado de conexión y lienzo. Los llamadores HTTP concurrentes no ven los alias, los tokens intercambiados ni las filas | Host multiusuario sin SSO. Predeterminado para despliegues institucionales / públicos bajo autenticación de confianza compartida. |
Credenciales por usuario |
| El claim | Host multiusuario con SSO institucional (Shibboleth, Okta, etc.) — la separación más fuerte. |
Espacio de trabajo compartido |
| Todos los llamadores de un tenant comparten el estado de conexión y un único lienzo. Poseer un nombre | Uso individual, laboratorio o alojamiento donde cada llamador es un investigador que ejecuta agentes paralelos con credenciales de upstream compartidas. |
Guía de selección de forma:
HTTP público/institucional multiusuario, sin SSO. Usa el valor predeterminado por sesión. La sesión HTTP con estado de cada investigador está aislada aunque todos resuelvan a
tenantId='default'.Multiusuario con SSO institucional.
MCP_AUTH_MODE=jwt(HS256,MCP_AUTH_SECRET_KEY) uoauth(JWKS,OAUTH_ISSUER_URL+OAUTH_AUDIENCE). El claimtidde cada usuario crea un tenant — el ámbito externo.BRAPI_SESSION_ISOLATION=true(predeterminado) subdivide entonces dentro de cada tenant para usuarios que ejecutan sesiones paralelas, y la vinculación de identidad JWT/OAuth proporciona una protección real contra el secuestro de sesión encima.Un investigador, agentes paralelos. Si varios agentes (planificador, analista, redactor) se conectan como clientes MCP separados pero deben compartir un espacio de trabajo, establece
BRAPI_SESSION_ISOLATION=falsey confía en la confianza compartida. Esta es la forma de espacio de trabajo compartido.Stdio. Siempre hay una sesión; el aislamiento es irrelevante. La opción no tiene efecto.
Clientes en la revisión de MCP 2026-07-28. Sin sesión por protocolo, por lo que aterrizan en el espacio de trabajo del tenant compartido diga lo que diga
BRAPI_SESSION_ISOLATION. Solo la forma de credenciales por usuario los aísla.
Doble seguridad bajo confianza compartida. Incluso con BRAPI_SESSION_ISOLATION=false, brapi_dataframe_describe requiere un nombre dataframe explícito en HTTP (sin enumeración de listado completo), y brapi_dataframe_query rechaza lecturas del catálogo del sistema (information_schema, pg_catalog, sqlite_master, duckdb_*). El nombre del dataframe es el token de capacidad; la posesión lo demuestra.
Desarrollo
Consulta CLAUDE.md para conocer las reglas arquitectónicas completas. Versión resumida:
Los handlers lanzan excepciones, el framework las captura — nada de
try/catchen la lógica de las herramientas.Usa
ctx.logpara el registro,ctx.statepara el almacenamiento — nada deconsole, nada de persistencia directa.Registra nuevas herramientas en el array
toolsdecreateApp()ensrc/index.ts.Envuelve las llamadas upstream: valida el raw → normaliza → devuelve el esquema de salida; nunca inventes campos que falten.
git clone https://github.com/cyanheads/brapi-mcp-server.git
cd brapi-mcp-server
bun install
cp .env.example .env # edit if you need credentials
bun run devcheck && bun run testSe aceptan PRs.
Licencia
Apache-2.0 — consulta LICENSE.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
No tool schema history has been recorded yet.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Query, browse, and automate OmegaAI workspaces from any MCP client. Streamable HTTP with OAuth 2.0.
Create, browse, remix, collaborate on, and run durable AI workflow nodes from MCP hosts.
AI agent registry — search, discover, register, and connect agents via MCP.
- OctopadOAuthapp.octopad
The back-office workspace for your team's AIs: tasks, knowledge and context shared over MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI agents to explore, search, and query API definitions from OpenAPI/Swagger JSON files.59MIT
- FlicenseAqualityCmaintenanceA local-first MCP server providing secure workspace file operations, offline full-text search, and web search/fetch capabilities without requiring API keys.10-
- AlicenseNot gradedqualityCmaintenanceMCP server for querying the GWAS Catalog (EBI/NHGRI), a curated catalog of genome-wide association studies. It enables AI agents to search and retrieve study data via natural language or direct tool calls.7MIT
- AlicenseNot gradedqualityBmaintenanceA vendor-neutral MCP server that lets coding agents search and understand OpenAPI/Swagger documents via stdio tools, without calling real backend APIs.1791MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/cyanheads/brapi-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server