vencord-mcp
vencord-mcp
MCP-сервер, который позволяет агенту кода читать работающий Discord-клиент так, как его читает автор плагина: хранилища, webpack-модули, патчи, React-пропсы и сам трафик шлюза.
Он общается с любым Chromium, запущенным с флагом --remote-debugging-port, поэтому работает с Discord, в который внедрены Vencord или Equicord, и большая часть функционала работает с любым Electron-приложением, содержащим минифицированный webpack-бандл.
Зачем это нужно
Две половины этого уже существовали по отдельности, и ни одна из них не была полезна сама по себе.
Существует несколько универсальных MCP-серверов для Electron и Chrome DevTools. Они делают скриншоты, читают консоль и выполняют JavaScript, но ничего не знают о webpack, Flux-хранилищах или Vencord-патчах, поэтому агент, использующий их, тратит свой бюджет на повторное открытие одного и того же шаблонного кода в каждой сессии.
С другой стороны, Vencord Companion знает именно то, что нужно: уникален ли webpack-поиск, компилируется ли совпадение патча. Но это расширение для VSCode, созданное для человека, читающего его в редакторе.
Ничто не связывало эти две вещи. Этот проект делает это.
Related MCP server: instagit
Что он меняет
Обычный цикл написания плагина выглядит так: открыть devtools, искать в минифицированном бандле, написать регулярное выражение и надеяться, скомпилировать, перезапустить Discord, проверить. Каждая ошибка стоит перезапуска.
С этими инструментами цикл замыкается за секунды, и, что важнее, агент перестаёт гадать. test_patch отвечает на вопрос «сработает ли этот патч на самом деле» до того, как что-либо собрано. capture_websocket показывает, что сервер действительно отправил, а не то, что подразумевал интерфейс. react_props восстанавливает имя ошибки, чей интерфейс показывает только число.
Установка
npm installЗарегистрируйте его в своём MCP-клиенте. Большинство из них принимают блок конфигурации, подобный этому:
{
"mcpServers": {
"vencord": {
"command": "node",
"args": ["/absolute/path/to/vencord-mcp/src/index.js"]
}
}
}Клиенты, имеющие CLI, обычно предлагают однострочную команду для того же самого, например: mcp add vencord -- node /absolute/path/to/vencord-mcp/src/index.js.
Затем запустите Discord с открытым отладчиком:
Discord.exe --remote-debugging-port=9223Порт слушает только localhost, но это отладчик: всё, что может до него добраться, может прочитать вашу сессию. Когда закончите, закройте и снова откройте Discord обычным способом.
Инструменты
Только для чтения, если не указано иное.
Инструмент | Что отвечает |
| Доступен ли клиент и к какой странице подключиться |
| Какие плагины включены, запущены, пропатчены и какие имеют нативную сторону |
| Какие патчи так и не нашли свой модуль и ничего не делают |
| Уникален ли поиск, срабатывает ли совпадение, сколько раз, что даёт замена |
| Какое состояние вообще существует |
| Что знает это хранилище и что возвращают его геттеры прямо сейчас |
| Вызвать один метод с аргументами |
| Найти модуль по экспортируемым пропсам или по содержащемуся в нём коду |
| Искать во всех исходниках модулей, с идентификаторами модулей и окружающим кодом |
| Подняться от DOM-узла и прочитать пропсы, содержащие ошибку или состояние |
| Что сервер назначил этой учётной записи для эксперимента |
| Записать кадры шлюза и голоса, декодированные, без пульсаций |
| Записать вывод консоли, опционально перезагрузив сначала, чтобы захватить запуск |
| Настройки плагина так, как их видит работающий клиент |
| Запись. Изменить одну настройку через собственный прокси Vencord |
| Запись. Отправить Flux-действие для поведения без экспортированного метода |
| Запись. Перезагрузить рендерер, то же самое, что Ctrl+R |
| Запасной выход для всего, что не охвачено выше |
Каждый инструмент принимает port (по умолчанию 9223) и необязательный urlHint для случаев, когда открыто более одной страницы.
Три инструмента, ради которых стоит установить
test_patch выполняет ту же проверку, что Vencord при запуске, но против реально работающей сборки. Поиск, не соответствующий ни одному модулю, означает, что патч молча никогда не выполняется, а поиск, соответствующий нескольким, означает, что Vencord патчит их все. Оба случая невидимы, пока плагин не начнёт вести себя неправильно так, что это выглядит как что-то другое.
test_patch(find: '"2026-08-video-guard"', match: 'variations:\\{.{0,120}?\\}\\}', replace: 'variations:{}')
-> "find is unique and match hits exactly once"patch_status отвечает на вопрос, на который test_patch не может ответить: сработал ли он на самом деле. Vencord удаляет патч из списка ожидающих, как только его модуль загружается, поэтому всё, что всё ещё в списке, никогда не совпало. Это та ошибка, которая отнимает больше всего времени, потому что плагин загружается, не сообщает об ошибке и молча ничего не делает. Патчи, объявленные как all, остаются в списке навсегда по замыслу и сообщаются отдельно, чтобы не выглядеть как сломанные.
capture_websocket декодирует голосовые опкоды Discord по именам: IDENTIFY, READY, SESSION_DESCRIPTION, VIDEO, MEDIA_SINK_WANTS. Чтение их — это разница между «видео не появилось» и «сервер предложил ssrc 267, клиент запросил его в полном качестве, и пакетов не последовало», а это разные ошибки с разными исправлениями.
Одно предостережение: домен Network записывает только те сокеты, которые он видел при создании. Соединение, которое уже было открыто на момент начала захвата, сообщается как (socket opened before capture) — кадры всё равно декодируются, потому что их содержимое идентифицирует протокол, но URL неизвестен. Заставьте клиента переподключиться в течение окна захвата, чтобы получить его.
Примечания
Discord поставляет строгую CSP, которая блокирует eval. Каждое вычисление здесь устанавливает allowUnsafeEvalBlockedByCSP — это документированный способ для отладчика всё равно выполняться; без него каждый вызов завершается бесполезным EvalError.
Каждый вызов инструмента открывает собственную сессию отладчика и завершает её. Держать одну сессию открытой между вызовами только создавало бы состояние, которое может рассинхронизироваться.
Тесты
node test/smoke.jsОн общается по реальному протоколу с реальным сервером через stdio: инициализация, список инструментов, затем выполнение живого пути против Discord на порту 9223, если он запущен. Сервер, который запускается, — это не то же самое, что сервер, который отвечает.
Лицензия
GPL-3.0-or-later, в соответствии с Vencord.
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 Servers
- AlicenseNot gradedqualityDmaintenanceA Vencord plugin that provides MCP server capabilities for inspecting Discord's internal state, executing JavaScript code, accessing Flux stores, discovering webpack modules, and inspecting DOM elements within Discord's context.1,270MIT
- AlicenseAqualityDmaintenanceAn MCP server that gives coding agents instant insight into any Git repository — no guessing, no hallucination.14618MIT
- AlicenseAqualityDmaintenanceAn MCP server that provides native Discord tools for Claude Code, enabling bidirectional communication with remote agents or humans via the Discord REST API. It allows users to send messages, read channel history, and manage reactions directly from their local environment.6223MIT
- AlicenseAqualityAmaintenanceAn MCP server that empowers AI coding agents to work effectively with Minecraft mod development, providing static analysis of decompiled source code and runtime interaction with a running Minecraft instance.313913MIT
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
Driflyte MCP server which lets AI assistants query topic-specific knowledge from web and GitHub.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
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/mazxxy/vencord-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server