beyond-mcp
beyond-mcp
MCP-сервер D&D Beyond: листы персонажей, статблоки монстров, списки участников кампаний, живая лента бросков игрового журнала и опциональная запись в листы. Извлечён из roll20-dm-mcp согласно его issue #171, чтобы DDB работал за собственным MCP-стыком — gem dm-whisper и Claude Code выбирают его через конфиг, рядом с взаимозаменяемыми серверами VTT-примитивов (сегодня roll20-dm-mcp, позже forge-mcp/ddb-maps-mcp).
Этот сервер ничего не знает ни о Roll20, ни о каком-либо VTT и никогда не открывает браузер. Чтение всегда вклчено; запись — по выбору (DDB_WRITES=enabled).
Ранее назывался
ddb-mcp; переименован, чтобы избежать коллизии с несвязанным публичным ddb-mcp/ddb-mcp. Старые URL репозитория перенаправляют.
Инструменты
Инструмент | Описание |
| Рукопожатие: |
| Лист персонажа по числовому id — компактный снимок HP/AC/состояний; |
| Монстр из компендиума по имени или id — компактный снимок HP/AC/CR; |
| Все кампании, в которых состоит аккаунт, с ид. |
| Список |
| Подписаться на WebSocket игрового журнала кампании; захватывать выполненные броски костей в ограниченный буфер. По умолчанию пропускает броски, перенесённые через Beyond20 (режим gap-fill). |
| Выгрузка захваченных бросков на оснove курсора (сырое сообщение + однострочная сводка). Потребители зеркалят фактические значения костей — никогда не перебрасывают. |
| Остановить поток / проверить состояние подключения (CONNECTED / RETRYING, количество сбоев, последняя ошибка). |
Имена инструментов и стандатные формы вывода совпадают с тем, что предостavлял roll20-dm-mcp, поэтому сушествующие клиенты мигрируют, просто указав на этот сервер. Поток бросков отличается намеренно: он буферизует вместo публикации в Roll20 — gem вычитывает его и переносит броски через post_roll_as_character из roll20-dm-mcp.
Инструменты записи (по выбору — DDB_WRITES=enabled)
Чтение доступно всегда; эти инструменты изменения регистрируются только когда в развёртывании задано DDB_WRITES=enabled, поэтому установки на этапе подготовки и по умолчанию остаются только для чтения. Они — примитивы: выполняют ровно то изменение, которое запрошено для любого переданного им id персонажа, без какой-либо политики о том, кто владеет листом. Поскольку HP персонажей в DDB также управляется Beyond20 и собственными правками игрока, записи конкурируют с ними (последний записавший выигрывает) и предназначены как намеренные действия Мастера.
Инструмент | Описание |
| Установить текущие и/или временные HP по абсолютному значению (ограничено до |
| Добавить/удалить состояние 5e по имени (для истощения требуется уровень). |
Related MCP server: DM20 Protocol
Аутентификация
Для чтения аутентификация выполняется с помощью cookie CobaltSession от D&D Beyond (обменивается на кратковременный JWT; см. docs/ddb-browserless-protocol.md). Cookie расходуется, а не собирается: передайте DDB_COBALT в переменных окружения или укажите DDB_DATA_DIR на каталог, куда gem записывает ddb-cobalt.json. Отсутствующий или истёкший cookie ⇒ каждая операция чтения громко завершается ошибкой с инструкциями по повторному сбору.
Конфигурация
Переменная окружения | Значение |
| Значение cookie CobaltSession (перекрывает файл данных). |
| Каталог, содержащий |
| Кампания по умолчанию для |
| Установите |
| Только для HTTP-входа (по умолчанию 39210 / 127.0.0.1 / автогенерируется в |
Запуск
npm install
npm run build
npm start # stdio MCP server (Claude Code .mcp.json, gem supervised spawn)
npm run serve # HTTP MCP server on /mcp + rolls SSE on /events (bearer-authed)Claude Code .mcp.json:
{
"mcpServers": {
"ddb": { "command": "node", "args": ["E:/personalProjects/beyond-mcp/dist/index.js"] }
}
}Разработка
npm test # vitest run
npx vitest run src/bridge/ddb-gamelog.test.ts # one file
npm run lint
npm run dev # tsx watch, stdioNode 20+, TypeScript (NodeNext ESM), vitest — те же соглашения, что и в roll20-dm-mcp.
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 Servers
- FlicenseNot gradedqualityAmaintenanceConnects Claude Desktop to Foundry VTT for AI-powered campaign management, enabling natural language interaction with game data including quest creation, character management, compendium searches, and dice rolling. Provides 20 MCP tools for seamless integration between Claude and your tabletop RPG sessions.66
- AlicenseBqualityDmaintenanceA comprehensive MCP server for managing AI-assisted Dungeons & Dragons campaigns, featuring tools for character sheets, combat tracking, and world-building. It enables players and DMs to interact with 5e game mechanics and query personal PDF rulebooks using RAG capabilities.972MIT
- FlicenseNot gradedqualityDmaintenanceAn MCP server that provides Claude direct access to D\&D Beyond accounts to manage characters, campaigns, and sourcebook content. It enables users to search for spells and monsters, retrieve character data, and read owned digital books through an authenticated session.5
- AlicenseAqualityAmaintenanceA Model Context Protocol server that gives Claude direct access to your D\&D Beyond account for characters, campaigns, sourcebooks, spells, monsters, rules, encounters, and treasure.35301MIT
Related MCP Connectors
D&D 5e MCP — wraps the D&D 5th Edition API (free, no auth)
Official remote MCP server for Archivist AI TTRPG campaign memory: characters, sessions, and more.
MCP server for Argo RPG Platform — connects AI assistants to campaign data via OAuth2
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/eschatus/beyond-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server