MC Source MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MC Source MCP Serverlist unobfuscated versions"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MC Source MCP Server
An MCP server that allows you to explore and decompile Minecraft source code, specifically targeting versions released with unobfuscated mappings (e.g., experimental snapshots like 1.21.11_unobfuscated or 25w45a_unobfuscated).
Features
List Versions: See available Minecraft versions, including special "unobfuscated" releases.
Search Classes: Find class files within a specific version's JAR.
Decompile: Decompile
.classfiles on-the-fly using Vineflower (WASM) to view readable Java source code.Caching: Efficiently caches downloaded JARs and open ZIP file handles for performance.
Related MCP server: Minecraft Dev MCP
Tools
list_versions
Lists available Minecraft versions.
type: Filter byrelease,snapshot, orunobfuscated(recommended).limit: Number of versions to return.
search_classes
Searches for a class in a specific version.
version: The version ID (e.g.,1.21.11_unobfuscated).query: The class name to search for (e.g.,SharedConstants).
decompile_class
Decompiles a specific class.
version: The version ID.className: The full path to the class (e.g.,net/minecraft/SharedConstants).
Setup
npm install
npm run buildUsage
Configure your MCP client to run:
{
"mcpServers": {
"mcsrc": {
"command": "node",
"args": ["/path/to/mcsrc-mcp/dist/index.js"]
}
}
}IDE Access from Windows (via HTTP/SSE)
If your IDE is running on Windows and cannot directly spawn the WSL process, you can run the server in HTTP mode.
Start the server in WSL:
npm run start:httpThis will start an HTTP server on port 3000 (accessible as
localhost:3000from Windows).Configure your MCP Client: Point your client to the Streamable HTTP endpoint:
URL:
http://localhost:3000/mcp
(No arguments needed for the client configuration, just the URL).
Available Tools
3 toolsdecompile_classDecompile ClassB
Decompile a specific Minecraft class
| Name | Required | Description | Default |
|---|---|---|---|
| version | Yes | The Minecraft version ID (e.g. "1.20.4") | |
| className | Yes | The full class path to decompile (e.g. "net/minecraft/ChatFormatting.class" or "net/minecraft/ChatFormatting") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description alone must disclose behavior. It only states the action without explaining what the decompiled output looks like, potential errors, side effects, or permissions required. This is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no unnecessary words. It is appropriately sized for the tool's simplicity, even though it lacks depth in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description should provide more context about the decompilation result and usage. It does not mention how the output is returned or when this tool is appropriate, leaving the agent under-informed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with clear descriptions for both 'version' and 'className', including examples. The description adds no extra meaning beyond the schema, but the schema already does the heavy lifting, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Decompile' and identifies the resource as 'a specific Minecraft class'. This clearly distinguishes it from sibling tools like list_versions and search_classes, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, such as needing to find the class name with search_classes, or any context like supported Minecraft versions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_versionsList VersionsA
List available Minecraft versions
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by version type (release, snapshot, or unobfuscated) | |
| limit | No | Limit the number of versions returned |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'List available Minecraft versions', which essentially restates the tool's name. It does not mention any filtering behavior, ordering, default limits, or what data is returned, leaving the agent without key operational details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly communicates the tool's purpose. Every word earns its place, and there is no redundancy or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool, the description is adequate. The schema covers all parameters, and the absence of an output schema is compensated by the obvious nature of 'List versions' (returns a list of versions). However, there's no mention of return format or ordering, so it falls short of a perfect score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters (type and limit) and includes a default value for limit. The description itself adds no parameter-specific information, so it does not enhance the schema. Baseline 3 is appropriate because the schema fully documents the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List available Minecraft versions' clearly states the verb (List) and resource (Minecraft versions). It is unambiguous and distinct from sibling tools like search_classes and decompile_class, which deal with classes rather than versions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is clear from the description alone: it lists versions. While it doesn't explicitly mention when to use this over alternatives, the sibling tools are evidently unrelated, so the context is sufficient. No exclusions or alternate recommendations are given, but none seem necessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_classesSearch ClassesB
Search for classes in a specific Minecraft version
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The search query for the class name (e.g. "ChatFormatting") | |
| version | Yes | The Minecraft version ID (e.g. "1.20.4") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure, yet it only states the action without mentioning return format, whether it's read-only, or any side effects. This leaves significant gaps for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single clear sentence that immediately states the tool's purpose. It is concise and well-structured, with no extraneous information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema or annotations, the description should clarify what the search returns and any behavioral constraints. It only says 'search for classes,' leaving the result format and broader context unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both 'query' and 'version' have descriptions with examples), so the baseline is 3. The description adds no parameter-level detail, so it neither helps nor harms beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Search') and resource ('classes') with a clear scope ('in a specific Minecraft version'), distinguishing it from sibling tools like list_versions and decompile_class.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. The description simply states its function without mentioning use cases, prerequisites, or exclusions, leaving the agent to infer from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.1.0- First observed
decompile_class - First observed
list_versions - First observed
search_classes
TDQS
Scored across 3 tools
Each tool has a distinct role in the workflow: listing versions, searching classes within a version, and decompiling a specific class. No overlapping purposes.
All tool names follow a consistent verb_noun pattern (list_versions, search_classes, decompile_class), making the API predictable and easy to navigate.
Three tools perfectly cover the core needs of a Minecraft source decompilation server: version discovery, class lookup, and decompilation. No unnecessary extras.
The tool set forms a complete pipeline with no dead ends: pick a version, search for a class, then decompile it. There are no obvious missing operations for the stated purpose.
Maintenance
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
MCP server for developer documentation, generated by doc2mcp.
MCP server for dev documentation, generated by doc2mcp.
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server for intelligently reading Java source code, supporting extraction from Maven dependencies and local projects with dual decompilers.155Apache 2.0
- AlicenseNot gradedqualityAmaintenanceA Model Context Protocol server that gives AI assistants native access to Minecraft mod development tools — decompile, remap, search, and analyze Minecraft source code directly from your AI workflow.44 npm37MIT
- AlicenseAqualityDmaintenanceProvides access to Minecraft mod development documentation (Neoforge) via MCP tools, allowing users to list providers and versions, browse file structures with previews, and retrieve full document content.36Apache 2.0
- FlicenseAqualityDmaintenanceAn MCP server that decompiles and inspects .NET assemblies to C# source, wrapping ILSpy. Enables querying .NET DLLs via natural language to decompile types, list members, and search symbols.7-