Skip to main content
Glama
mazxxy

vencord-mcp

by mazxxy

vencord-mcp

実行中のDiscordクライアントを、プラグイン作成者が読むのと同じ方法で読み取れるMCPサーバーです。ストア、webpackモジュール、パッチ、Reactのprops、そしてゲートウェイトラフィックそのものを対象とします。

--remote-debugging-port 付きで起動した任意のChromiumと通信できるため、VencordやEquicordが注入されたDiscordで動作し、その大部分はminifiedなwebpackバンドルを持つ任意のElectronアプリでも機能します。

なぜこれが存在するのか

この2つの要素は以前から別々に存在していましたが、どちらも単体では役に立ちませんでした。

汎用的なElectronおよびChrome DevToolsのMCPサーバーはいくつか存在します。スクリーンショットを撮り、コンソールを読み、JavaScriptを評価しますが、webpack、Fluxストア、Vencordのパッチについては何も知らないため、これらを使うエージェントは毎回同じボイラープレートを再発見することに時間を費やします。

一方、Vencord Companion はまさに適切なことを熟知しています。webpack findが一意かどうか、パッチのマッチがコンパイルされるかどうかなどです。しかし、これはVSCode拡張機能であり、人間がエディタで読むために作られています。

この2つを結びつけるものは何もありませんでした。これがそれを行います。

Related MCP server: instagit

何が変わるのか

プラグインを作成する通常のループは、devtoolsを開き、minifiedなバンドルを探し回り、正規表現を書いて祈り、コンパイルし、Discordを再起動し、結果を確認するというものです。間違えるたびに再起動が必要です。

これらのツールを使えば、ループは数秒で完結し、さらに重要なのは、エージェントが推測をやめることです。test_patch は「このパッチは実際に実行されるのか」を、何かをビルドする前に答えます。capture_websocket は、インターフェースが示唆するものではなく、サーバーが実際に送信したものを表示します。react_props は、UIが数字しか表示しないエラーの名前を回復します。

インストール

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

findは一意か、マッチはヒットするか、何回ヒットするか、置換によって何が生成されるか

list_stores

どのような状態が存在するか

describe_store

このストアは何を知っていて、そのゲッターは現在何を返すか

read_store

引数を指定して1つのメソッドを呼び出す

find_module

エクスポートされたpropsまたは含まれるコードによってモジュールを検索

search_modules

すべてのモジュールソースを、モジュールIDと周辺コードとともに検索

react_props

DOMノードから遡り、エラーや状態を保持するpropsを読み取る

experiment

サーバーがこのアカウントに対して実験に割り当てたもの

capture_websocket

ゲートウェイおよびボイスフレームを記録、デコード、ハートビートは除外

capture_console

コンソール出力を記録。オプションで最初にリロードして起動時をキャッチ

read_settings

実行中のクライアントが見ているプラグイン設定

write_setting

書き込みあり。 Vencord自身のプロキシを通じて1つの設定を変更

dispatch

書き込みあり。 Fluxアクションを送信。エクスポートされたメソッドがない動作に対して

reload

書き込みあり。 レンダラーをリロード(Ctrl+Rと同じ)

evaluate

上記でカバーされていないものに対する脱出用ハッチ

すべてのツールは port(デフォルト9223)と、複数のページターゲットが開いている場合に使用するオプションの urlHint を受け付けます。

インストールする価値がある3つのツール

test_patch は、Vencordが起動時に実行するのと同じチェックを、実際に実行されているビルドに対して実行します。モジュールにマッチしないfindは、パッチが静かに決して実行されないことを意味し、複数のモジュールにマッチするfindは、Vencordがそれらすべてにパッチを適用することを意味します。どちらも、プラグインが他の原因のように見える誤動作をするまで見えません。

test_patch(find: '"2026-08-video-guard"', match: 'variations:\\{.{0,120}?\\}\\}', replace: 'variations:{}')
-> "find is unique and match hits exactly once"

patch_statustest_patch が答えられない質問に答えます:それは実際に実行されたかどうかです。Vencordは、モジュールがロードされると保留リストからパッチを削除するため、リストに残っているものは決してマッチしなかったものです。これが最も時間を浪費する失敗です。プラグインはロードされ、エラーを報告せず、静かに何もしないからです。all と宣言されたパッチは設計上永遠にリストに残り、壊れていると誤解されないように別途報告されます。

capture_websocket は、Discordのボイスオペコードを名前でデコードします:IDENTIFYREADYSESSION_DESCRIPTIONVIDEOMEDIA_SINK_WANTS。これらを読むことは、「動画が表示されなかった」と「サーバーがssrc 267を提供し、クライアントが最高品質でそれを要求したが、パケットが後続しなかった」の違いを意味し、これらは異なるバグであり、異なる修正が必要です。

注意点:Networkドメインは、作成されたのを確認したソケットのみを記録します。キャプチャ開始時にすでに開いていた接続は (socket opened before capture) として報告されます。フレームはその内容がプロトコルを識別するため依然としてデコードされますが、URLは不明です。ウィンドウ中にクライアントを再接続させてURLを取得してください。

注意点

Discordは eval をブロックする厳格なCSPを配布しています。ここでのすべての評価は allowUnsafeEvalBlockedByCSP を設定しており、これはデバッガーがとにかく実行するための文書化された方法です。これがないと、すべての呼び出しが役に立たない EvalError で失敗します。

各ツール呼び出しは独自のデバッガーセッションを開き、切断します。呼び出し間でセッションを開いたままにすることは、同期が取れなくなる状態を作り出すだけです。

テスト

node test/smoke.js

標準入出力を介して実際のサーバーと実際のプロトコルで通信します:初期化、ツールの一覧表示、そして実行中の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