Skip to main content
Glama
mazxxy

vencord-mcp

by mazxxy

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 обычным способом.

Инструменты

Только для чтения, если не указано иное.

Инструмент

Что отвечает

targets

Доступен ли клиент и к какой странице подключиться

plugins

Какие плагины включены, запущены, пропатчены и какие имеют нативную сторону

patch_status

Какие патчи так и не нашли свой модуль и ничего не делают

test_patch

Уникален ли поиск, срабатывает ли совпадение, сколько раз, что даёт замена

list_stores

Какое состояние вообще существует

describe_store

Что знает это хранилище и что возвращают его геттеры прямо сейчас

read_store

Вызвать один метод с аргументами

find_module

Найти модуль по экспортируемым пропсам или по содержащемуся в нём коду

search_modules

Искать во всех исходниках модулей, с идентификаторами модулей и окружающим кодом

react_props

Подняться от DOM-узла и прочитать пропсы, содержащие ошибку или состояние

experiment

Что сервер назначил этой учётной записи для эксперимента

capture_websocket

Записать кадры шлюза и голоса, декодированные, без пульсаций

capture_console

Записать вывод консоли, опционально перезагрузив сначала, чтобы захватить запуск

read_settings

Настройки плагина так, как их видит работающий клиент

write_setting

Запись. Изменить одну настройку через собственный прокси Vencord

dispatch

Запись. Отправить Flux-действие для поведения без экспортированного метода

reload

Запись. Перезагрузить рендерер, то же самое, что Ctrl+R

evaluate

Запасной выход для всего, что не охвачено выше

Каждый инструмент принимает 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.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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,270
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    An MCP server that gives coding agents instant insight into any Git repository — no guessing, no hallucination.
    1
    46
    18
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    An 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.
    6
    22
    3
    MIT

View all related MCP servers

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

View all MCP Connectors

Latest Blog Posts

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