Provides tools for inspecting Discord's internal state, including executing JavaScript code in Discord's context, accessing Flux stores, discovering webpack modules, and inspecting DOM elements with detailed metadata.
DiscordMCP
A Vencord plugin that provides an MCP (Model Context Protocol) server for inspecting Discord and running JavaScript code.
Features
MCP Server: Provides an HTTP-based MCP server that can be connected to by MCP clients
JavaScript Execution: Execute JavaScript code in Discord's context
Store Inspection: Access and inspect Discord's Flux stores
Webpack Module Discovery: Find webpack modules by properties
Variable Discovery: Recursively search for variables in document.* by name (case-insensitive)
Element Inspection: Inspect DOM elements with detailed metadata including XPath, attributes, computed styles, children/parent info, and position data
Installation
Enable the plugin in Vencord's settings
Configure the port (default: 8787)
The MCP server will start automatically when the plugin is enabled
Configuration
Port: The port the MCP server listens on (default: 8787)
Enabled: Toggle to enable/disable the MCP server
MCP Tools
evaluate_javascript
Execute JavaScript code in Discord's context.
Parameters:
code(string, required): JavaScript code to execute
Example:
get_store
Get information about a Discord Flux store.
Parameters:
storeName(string, required): Name of the store (e.g., "UserStore", "GuildStore")
get_store_method
Call a method on a Discord store.
Parameters:
storeName(string, required): Name of the storemethodName(string, required): Name of the method to callargs(array, optional): Arguments to pass to the method
Example:
find_webpack_module
Find a webpack module by properties.
Parameters:
props(array, optional): Property names to search forcode(string, optional): Code string to search for (not fully implemented)
find_variable
Recursively search for a variable name (case-insensitive partial match) in document.*.
Parameters:
name(string, required): Part of variable name to search for (case-insensitive)maxDepth(number, optional): Maximum recursion depth (default: 5)
Example:
This will find all properties in document.* whose names contain "query" (case-insensitive), such as document.querySelector, document.querySelectorAll, etc.
inspect_element
Inspect a DOM element using a CSS selector (like querySelector) and return detailed metadata about the element.
Parameters:
selector(string, required): CSS selector string to find the element (e.g.,"#myId",".myClass","div > button", etc.)
Returns:
The tool returns comprehensive metadata about the element including:
Basic Info: Tag name, ID, class name, text content, innerHTML
XPath: Full XPath expression to locate the element
Attributes: All HTML attributes as key-value pairs
Bounding Rectangle: Position and size information (x, y, width, height, top, left, bottom, right)
Computed Styles: Important CSS properties (display, visibility, position, colors, fonts, spacing, etc.)
Parent Info: Tag name, ID, and class of the parent element
Children Info: Count of children, first 50 child elements with their tag names, IDs, and classes
Visibility: Whether the element is visible and if it's in the viewport
Scroll Info: Scroll position and scroll dimensions
Dimensions: Offset width and height
Example:
This will return detailed information about the element with ID app-mount, including its XPath, all attributes, computed styles, children, parent information, and more.
Usage with MCP Clients
The server implements the MCP protocol over HTTP. Connect to it using an MCP client configured to use HTTP transport.
Server URL: http://127.0.0.1:8787 (or your configured port)
Security Warning
⚠️ WARNING: This plugin allows arbitrary JavaScript execution in Discord's context. Only use this plugin if you trust the MCP clients connecting to it. Do not expose the server to untrusted networks.
AI Disclaimer
This plugin was developed with assistance from Cursor.AI (Cursor's AI coding assistant). The AI was used to help with code generation, debugging, documentation, and implementation. While AI assistance was utilized, all code and features were reviewed and tested to ensure quality and functionality.
License
Unlicense