@cyanheads/brapi-mcp-server
Инструменты
25 инструментов, сгруппированных по типу: инструменты подключения инициализируют сессию; инструменты find_* возвращают сводную страницу с распределениями и выгружают избыточные строки в canvas-датафрейм, который агенты той же сессии могут запрашивать или передавать по ID; инструменты get_* получают отдельную запись с сопутствующими счётчиками. Плюс обход родословной, встроенное SQL-рабочее пространство над выгруженными строками (на базе DuckDB), экспорт файлов для передачи человеку, аддитивная поверхность записи наблюдений и прямые обходные каналы (raw passthrough).
Ориентация
Инструмент | Описание |
| Аутентификация, регистрация подключения под псевдонимом, кэширование профиля возможностей и возврат ориентационного конверта инлайн. Один вызов полностью ориентирует агента. |
| Повторное получение ориентационного конверта для зарегистрированного псевдонима: идентичность, аутентификация, возможности, счётчики контента, атрибуция, примечания. |
| Статический каталог фильтров BrAPI v2.1 для любого эндпоинта — обеспечивает обнаружение |
Получение
Инструмент | Описание |
| Поиск исследований по культуре / типу испытания / сезону / местоположению / программе. Распределения + выгрузка в датафрейм. |
| Получение исследования с разрешёнными внешними ключами программы / испытания / местоположения и сопутствующими счётчиками (наблюдения, единицы, переменные). |
| Поиск гермоплазмы по имени, синониму, аксессии, PUI, культуре или произвольному тексту. Распределения + выгрузка в датафрейм. |
| Получение гермоплазмы с атрибутами, непосредственными родителями и сопутствующими счётчиками (исследования, родители, потомки). |
| Обход предков / потомков в ширину (BFS) в виде дедуплицированного DAG с обнаружением циклов, ограничениями глубины и статистикой обхода. |
| Поиск переменных наблюдений по имени / классу / онтологии / произвольному тексту; ранжирование на стороне клиента через |
| Получение записей наблюдений по исследованию / гермоплазме / переменной / сезону / единице / временной метке. Выгрузка в датафрейм. |
| Фильтрация метаданных изображений по единице / исследованию / онтологии / MIME-типу. Байты — через |
| Получение байтов изображения для до 5 imageDbIds инлайн в виде блоков |
| Поиск исследовательских станций по стране (код ISO alpha-3 или английское название страны, разрешаемое на стороне клиента) / типу / аббревиатуре, с опциональным клиентским фильтром по bbox. |
| Поиск записей вариантов по набору вариантов, референсу или геномному региону (с отсчётом от 1, включительно / исключительно). |
| Получение генотип-вызовов через опрос async-search. Объём получаемых данных ограничен |
Анализ
Инструмент | Описание |
| Начните здесь после выгрузки. Перечисляет датафреймы (или описывает один) со схемой колонок, количеством строк и происхождением исходных данных. |
| SQL SELECT по датафреймам в памяти (на базе DuckDB). Выгруженные строки |
| Включается через |
| Включается через |
| Построение матрицы гермоплазма × признак по одному или нескольким исследованиям и материализация её как canvas-датафрейма. Поддерживает широкую (pivot) или длинную форму с настраиваемой агрегацией по ячейкам. |
| Агрегаты производительности по каждой переменной (n, mean, median, sd, min, max, studyCount) для одной гермоплазмы по всем исследованиям, где у неё есть наблюдения. |
| Экспорт генотип-вызовов для набора вариантов в виде canvas-датафрейма гермоплазма × вариант; также сериализует в VCF-lite или текст PLINK |
Запись (включается через BRAPI_ENABLE_WRITES=true)
Инструмент | Описание |
| Двухфазная запись наблюдений: |
Обходные каналы
Инструмент | Описание |
| Прямой проход к любому BrAPI |
| Прямой проход к любому |
Обнаружение псевдонимов. Встроенные и настроенные оператором псевдонимы добавляются к описанию
brapi_connectпри запуске сервера, поэтому агенты видят перечень вtools/list. После изменения переменных окружения перезапустите сервер для обновления.
Related MCP server: Helix MCP Server
Ресурсы
Адресуемые по URI зеркала курируемой поверхности инструментов для клиентов, предпочитающих ресурсы. Все ресурсы используют подключение по умолчанию — мультисерверные сценарии маршрутизируются через инструменты.
Шаблон URI | Зеркала |
|
|
| Сырой профиль возможностей |
|
|
|
|
|
|
| Запись переменной наблюдения (признак, шкала, метод, онтология) |
Промпты
Multi-step BrAPI workflow templates — pure user-message generators, no side effects.
Name | Args | Purpose |
|
| EDA playbook for one study — orient, variables, coverage, missing data, outliers, pedigree, structured report. |
|
| Cross-study meta-analysis — trait resolution, study discovery, harmonization, per-germplasm × per-study and across-study summaries. |
Multi-agent workflows
The server has two stateful layers and two scoping axes:
Layer | Default scope | Why |
Connection state (aliases, exchanged tokens) | Tenant + session | Credentials and live tokens. Tenant gates by user ( |
Dataframes ( | Tenant + session | Within one (tenant, session), agents share by |
Within one (tenant, session), dataframes act as a self-cleaning shared notebook: hand the df_<uuid> name between parallel agents on the same MCP session, persist it across a multi-step workflow, query / project / aggregate / join from any position. Address-by-name, time-bounded, scoped to that session.
Default (isolated) shape. Under MCP_AUTH_MODE=none + HTTP stateful (the default), each MCP session carves its own connection state and its own canvas. Two researchers connected to the same host don't see each other's brapi_connect aliases, exchanged SGN/OAuth tokens, or spilled df_<uuid> rows. Stdio always behaves as one session (single-process, no concurrency).
Clients on MCP revision 2026-07-28. That revision is session-less on every transport — requests carry no Mcp-Session-Id — so ctx.sessionId is undefined and a client negotiating it falls back to the shared tenant workspace even under MCP_SESSION_MODE=stateful. Session isolation applies to 2025-era clients; deployments that need a hard boundary for 2026-era clients should carve tenants with MCP_AUTH_MODE=jwt/oauth.
Shared-workspace shape. Set BRAPI_SESSION_ISOLATION=false for cross-session collaboration in one tenant — multiple MCP sessions then share connection state and one default canvas, the way pre-0.5.3 deployments behaved. Useful when planning, analysis, and writeup agents run as separate MCP clients but operate as one researcher on shared upstream credentials.
On privileged data. The df_<uuid> name is a capability token within a canvas — not row-level access control. Anyone holding the name within the same (tenant, session) bucket can read its rows. Under default isolation, that bucket is one MCP session. Under BRAPI_SESSION_ISOLATION=false, the bucket widens to the whole tenant (all callers under auth=none, or one user's sessions under jwt/oauth). Treat dataframe names like authenticated share links — pass within the bucket, not externally. The 24h TTL caps blast radius; the provenance trail (originating tool, baseUrl, query) supports audit. Belt-and-braces: brapi_dataframe_describe requires an explicit dataframe name on shared-trust HTTP (no list-all enumeration), and brapi_dataframe_query rejects system-catalog reads (information_schema, pg_catalog, sqlite_master, duckdb_*) — so a caller without a known df_<uuid> name can't fish through either surface.
BrAPI-specific features
Dataframe spillover —
find_*tools cap in-context rows atloadLimitand materialize larger unions (up to 50k rows / 50 pages) as DuckDB-backeddf_<uuid>canvas dataframes. Discover withbrapi_dataframe_describe, query withbrapi_dataframe_query(SQL paging viaLIMIT/OFFSET, projection, aggregation). Read-only enforcement at the SQL gate; session-scoped by default (tenant-scoped underBRAPI_SESSION_ISOLATION=false) — see Multi-agent workflows.Multi-server session —
ServerRegistrymaps aliases to live BrAPI connections; one session can span Breedbase, T3, and Sweetpotatobase in parallel.Built-in known-server registry —
bti-cassava,bti-sweetpotato,bti-breedbase-demo,t3-wheat,t3-oat,t3-barleyresolve out-of-the-box without env vars; orientation envelope carries CC-BY attribution.Capability-aware calls —
CapabilityRegistrycaches/serverinfoper connection and guards every tool call against unsupported endpoints. Falls back to/callswhen/serverinfois sparse.Dialect adaptation —
spec/brapi-test/breedbase/cassavabase/bmsdialects translate v2.1 plural filter keys to the singular form each server family honors, drop filters known to be broken, normalize sparse-shape encodings, and escalate to POST/search/{noun}when GET would silently downcast multi-value filters. Detected from/serverinfo(server-name / organization-name); pin per-alias viaBRAPI_<ALIAS>_DIALECT. Verified-vs-inferred mapping counts surface on the orientation envelope so agents see the confidence floor at a glance.DuckDB required —
@duckdb/node-apiis a regular dependency; startup fails closed when the framework canvas is unavailable. Not supported on Cloudflare Workers (no native binary in that runtime).Async-search transparency —
brapi_find_genotype_callsandbrapi_raw_searchhandle thePOST /search/{noun}→GET /search/{noun}/{id}202-retry pattern automatically.Pedigree DAG walks —
brapi_walk_pedigreeBFS-traverses ancestry / descendancy with cycle detection (BrAPI only exposes one generation per call); a 1,000-node safety cap bounds the walk and setstruncatedwhen reached. Walks larger thanloadLimitspill their node and edge sets to two JOINable canvas dataframes and return a bounded inline preview.Image content —
brapi_get_imagefetches bytes inline as MCPtype: imageblocks, preferring/images/{id}/imagecontentwithimageURLfallback.Free-text variable ranking —
OntologyResolverscores variables against a query (PUI / name / synonym / trait-class) sofind_variables text:"..."returns ranked candidates even without/ontologies.Auth variants in one schema — tagged-union covers
none/bearer/api_key/sgn(session-token exchange) /oauth2(client-credentials).Typed error contracts — every declared failure mode carries a stable
data.reason, an HTTP-stylecode, and arecovery.hintso clients can route deterministically.
Built on @cyanheads/mcp-ts-core — declarative definitions, unified error handling, pluggable auth (none / jwt / oauth), swappable storage, structured logging with optional OTel, STDIO + Streamable HTTP transports.
Working with dataframes
When a find_* tool's upstream total exceeds loadLimit, the full union materializes as a canvas dataframe and the response carries an inline dataframe handle ({ tableName, rowCount, columns, createdAt, expiresAt, … }). Upstream column names that aren't SQL-safe identifiers — reserved words like end, digit-leading IDs — are sanitized for the dataframe, and a columnLegend on the handle maps each renamed column back to its original key. SQL is the paging idiom — use LIMIT/OFFSET to walk pages, projection (SELECT col1, col2) to trim columns, and aggregation (COUNT, GROUP BY, AVG) to summarize without materializing every row.
Dataframe names are session-scoped capability tokens by default — pass tableName to any other agent on the same MCP session (or a downstream step in the same workflow) and they query the same workspace by name without re-pulling from the upstream. The brapi_dataframe_* tools offer SQL manipulation and more. See Multi-agent workflows for cross-session / cross-tenant rules.
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 rowsDataframes auto-expire via TTL (BRAPI_DATASET_TTL_SECONDS, default 24h). Set BRAPI_CANVAS_DROP_ENABLED=true to expose brapi_dataframe_drop for explicit cleanup.
Getting started
Add to your MCP client config — pick one runner:
{
"mcpServers": {
"brapi-mcp-server": {
"type": "stdio",
"command": "bunx",
"args": ["@cyanheads/brapi-mcp-server@latest"],
"env": { "MCP_TRANSPORT_TYPE": "stdio", "MCP_LOG_LEVEL": "info" }
}
}
}Swap command/args for npx -y @cyanheads/brapi-mcp-server@latest (no Bun) or docker run -i --rm -e MCP_TRANSPORT_TYPE=stdio ghcr.io/cyanheads/brapi-mcp-server:latest.
For Streamable HTTP:
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcpNo env vars are required — the six built-in aliases (bti-cassava, bti-sweetpotato, bti-breedbase-demo, t3-wheat, t3-oat, t3-barley) resolve out-of-the-box, and agents can connect to any other BrAPI v2 URL at runtime via brapi_connect. For credentialed servers, prefer env vars over agent input so passwords / tokens / API keys stay out of the LLM context — see Per-alias credentials.
Prerequisites: Bun v1.3.11+ or Node.js v24+. @duckdb/node-api is a required dependency — supported on Linux/macOS/Windows × x64 plus Linux/macOS arm64 (no Windows arm64; no Cloudflare Workers).
Configuration
Every variable is optional.
Переменная | Описание | По умолчанию |
| Базовый URL BrAPI v2 по умолчанию (например, | — |
| SGN-аутентификация по session-token для подключения по умолчанию. | — |
| OAuth2 client-credentials для подключения по умолчанию. | — |
| Статический API-ключ для подключения по умолчанию. | заголовок |
| Разделённые запятыми имена алиасов (без учёта регистра) для удаления из встроенного реестра. | — |
| Максимальное число строк в контексте, возвращаемое инструментами |
|
| Внешний |
|
| Предел одновременных запросов на подключение. |
|
| Политика повторов для кодов 429/5xx с экспоненциальной задержкой. |
|
| Тайм-аут HTTP на запрос. |
|
| Более жёсткий тайм-аут для некритичных сопутствующих обогащений (FK-запросы, проверки количества). Сопутствующие запросы также не учитываются в бюджете повторов, поэтому медленный внешний сервер проявляется как предупреждение, а не растягивает ответ. |
|
| Бюджет опроса асинхронного |
|
| TTL для метаданных происхождения dataframe, сохраняемых вместе со сброшенными строками. |
|
| TTL для кэша программ / испытаний / местоположений / культур. |
|
| Разрешить цели RFC 1918 / loopback. Только для разработки. |
|
| Opt-in для регистрации |
|
| Верхний предел строк от внешнего сервера на один вызов |
|
| Верхний предел числа столбцов уникальных вариантов для матрицы |
|
| Opt-in для регистрации |
|
| Каталог для выходных файлов | — |
| Максимальное число строк ответа на запрос и тайм-аут по реальному времени для |
|
| Транспорт ( |
|
| Режим аутентификации ( |
|
| Если |
|
Переопределения для отдельных алиасов следуют шаблону BRAPI_<ALIAS>_* — см. .env.example для всех переопределений и встроенных комментариев.
Учётные данные для отдельных алиасов
brapi_connect берёт baseUrl и auth из переменных окружения, когда агент их не указывает, — учётные данные никогда не попадают в контекст LLM. Четыре уровня приоритета:
Явный ввод агента — всегда имеет приоритет.
Переменные окружения для отдельных алиасов —
BRAPI_<ALIAS>_*(в верхнем регистре, дефисы → подчёркивания:my-server→BRAPI_MY_SERVER_*).Встроенный реестр известных серверов — см. Встроенные алиасы.
Переменные окружения по умолчанию —
BRAPI_DEFAULT_*, только когда алиас отличается отdefault. Не наслаиваются поверх встроенного URL — значения по умолчанию относятся к серверу по умолчанию.
Каждый алиас несёт одно семейство учётных данных — режим аутентификации определяется тем, какие поля заданы:
Установленные переменные | Итоговый |
|
|
|
|
|
|
|
|
(ничего не задано) |
|
Смешение семейств в рамках одного алиаса вызывает 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-KeyЗатем агент вызывает brapi_connect({ alias: 'bti-cassava' }) — без baseUrl, без auth, без секретов в промпте.
Встроенные алиасы
Сервер поставляется с курируемым реестром публичных BrAPI v2 эндпоинтов. Каждый из них работает из коробки; ориентационная оболочка выводит лицензию, цитирование и домашнюю страницу в своём блоке attribution под лицензией Creative Commons Attribution.
Алиас | Апстрим | Хостинг | Культура | Примечания |
| Boyce Thompson Institute | Маниок | NextGen Cassava | |
| Boyce Thompson Institute | Батат | ||
| Boyce Thompson Institute | Демо | Только пример данных — онбординг и тесты. | |
| Triticeae Toolbox (T3) | Пшеница | Wheat CAP / IWYP. | |
| Triticeae Toolbox (T3) | Овёс | Global Oat Genetics Database. | |
| Triticeae Toolbox (T3) | Ячмень | T-CAP / US Wheat & Barley Scab Initiative. |
Установите BRAPI_<ALIAS>_BASE_URL, чтобы перенаправить на staging-зеркало или форк (переменные окружения имеют приоритет над встроенным URL — дефисы в алиасе становятся подчёркиваниями в переменной окружения, так что t3-wheat → BRAPI_T3_WHEAT_BASE_URL). Установите BRAPI_<ALIAS>_USERNAME и т.д., чтобы добавить учётные данные поверх встроенного URL — у каждого экземпляра Breedbase своя таблица пользователей, поэтому для доступа на запись требуется отдельная регистрация в каждом апстриме. Используйте BRAPI_BUILTIN_ALIASES_DISABLED=bti-cassava,t3-wheat, чтобы удалить конкретные записи.
Цитирование: все шесть встроенных алиасов ссылаются на Morales et al. 2022, "Breedbase: a digital ecosystem for modern plant breeding." G3 12(7): jkac078. doi:10.1093/g3journal/jkac078.
Запуск сервера
# 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-serverПо умолчанию используется HTTP-транспорт, режим сессий с сохранением состояния (задействует жизненный цикл mcp-session-id — обязательное условие для BRAPI_SESSION_ISOLATION=true; защита от перехвата требует добавления MCP_AUTH_MODE=jwt|oauth поверх), логи пишутся в /var/log/brapi-mcp-server. OTel peer-зависимости устанавливаются по умолчанию — --build-arg OTEL_ENABLED=false, чтобы исключить их.
Формы развёртывания
brapi-mcp-server работает в трёх формах — выберите ту, которая соответствует вашему домену доверия. Отличие заключается в том, что изолирует состояние соединений (зарегистрированные алиасы, кэшированные токены апстрима) и датафреймы: ничего, MCP-сессия или тенант аутентификации.
Форма | Настройки | Изоляция | Для чего подходит |
На сессию (по умолчанию) |
| Каждая MCP-сессия выделяет собственное состояние соединений и собственную рабочую область. Параллельные HTTP-вызывающие не видят алиасы, обменянные токены или строки | Многопользовательский хост без SSO. По умолчанию для институционального / публичного развёртывания при аутентификации с общей доверенностью. |
Учётные данные на пользователя |
| JWT-утверждение | Многопользовательский хост с институциональным SSO (Shibboleth, Okta и т.д.) — максимальное разделение. |
Общее рабочее пространство |
| Все вызывающие в одном тенанте разделяют состояние соединений и одну рабочую область. Обладание именем | Соло, лаборатория или хостинг, где каждый вызывающий — один исследователь, запускающий параллельных агентов с общими учётными данными апстрима. |
Руководство по выбору формы:
Многопользовательский публичный/институциональный HTTP без SSO. Используйте вариант по умолчанию — на сессию. Stateful HTTP-сессия каждого исследователя изолирована, даже если все они разрешаются в
tenantId='default'.Многопользовательский режим с институциональным SSO.
MCP_AUTH_MODE=jwt(HS256,MCP_AUTH_SECRET_KEY) илиoauth(JWKS,OAUTH_ISSUER_URL+OAUTH_AUDIENCE). JWT-утверждениеtidкаждого пользователя выделяет тенант — внешнюю область.BRAPI_SESSION_ISOLATION=true(по умолчанию) затем дополнительно ограничивает сессии внутри каждого тенанта для пользователей, запускающих параллельные сессии, а привязка идентичности JWT/OAuth даёт настоящую защиту от перехвата сессий поверх.Один исследователь, параллельные агенты. Если несколько агентов (планировщик, аналитик, оформитель) подключаются как отдельные MCP-клиенты, но должны использовать одно рабочее пространство, установите
BRAPI_SESSION_ISOLATION=falseи полагайтесь на общую доверенность. Это и есть форма общего рабочего пространства.Stdio. Всегда одна сессия; изоляция не имеет значения. Флаг не влияет.
Клиенты на MCP-ревизии 2026-07-28. По протоколу они не используют сессии, поэтому попадают в общее рабочее пространство тенанта независимо от значения
BRAPI_SESSION_ISOLATION. Изолировать их может только форма с учётными данными на пользователя.
Подстраховка при общей доверенности. Даже с BRAPI_SESSION_ISOLATION=false brapi_dataframe_describe требует явное имя dataframe на HTTP (без перечисления всех), а brapi_dataframe_query отклоняет чтение системных каталогов (information_schema, pg_catalog, sqlite_master, duckdb_*). Имя датафрейма — это токен возможности; обладание им доказывает право.
Разработка
Полные архитектурные правила см. в CLAUDE.md. Краткая версия:
Обработчики выбрасывают исключения, фреймворк перехватывает их — никаких
try/catchв логике инструментовИспользуйте
ctx.logдля логирования иctx.stateдля хранения — никакогоconsole, никакого прямого сохраненияРегистрируйте новые инструменты в массиве
toolsвcreateApp()вsrc/index.tsОборачивайте вызовы апстрима: проверяйте сырые данные → нормализуйте → возвращайте выходную схему; никогда не выдумывайте отсутствующие поля
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 testPR приветствуются.
Лицензия
Apache-2.0 — см. 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