Skip to main content
Glama
Minecraft Mods MCP

Minecraft Mods MCP

Minecraft Mods MCP

A local MCP server that lets Cursor (or any MCP client) talk to CurseForge Minecraft instances on your machine.

It can create a world profile inside a pack, pick which mods belong to that world, edit configs, diagnose crashes, and reset a world so the next launch uses those changes.

Java mods load when the game starts, not when you click a world. This server stores a profile per world and applies it to the instance on disk before you launch.

What it does

  • List and select CurseForge instances

  • Read-only system check on a new computer (health_check)

  • List, compare, and recommend mods (keeps required dependencies)

  • Create world profiles (which mods are on/off for a named world)

  • Apply a profile on disk before launch (enable/disable jars, patch configs)

  • Read and edit config files

  • Parse crash logs and disable likely culprits after a backup

  • Register a dedicated server folder for compare/diagnose

Profiles live in <instance>/.mcp/worlds/. World backups go to <instance>/.mcp/backups/. Session state (current instance, extra server paths) lives in ~/.minecraft-mcp/state.json.

Related MCP server: mc-host

Requirements

git clone https://github.com/bmidd0170-sys/Minecraft-MCP-.git
cd Minecraft-MCP-
npm install
npm run build
npm run self-test

self-test (and the health_check tool) are read-only. They check Node, the Instances folder, that packs are readable, and whether logs exist. They do not apply profiles or change jars. If the Instances folder is missing, set CURSEFORGE_INSTANCES_DIR (see below).

On a new device, ask Cursor: “Run a system check” (it should call health_check first).

Copy mcp.config.example.json to mcp.config.json only if you want a file-based override. The env var is enough for most people.

Cursor config

Add a server to your MCP config (user-level Cursor settings, or this project’s .cursor/mcp.json). Use your paths, then reload MCP / restart Cursor.

Windows

{
  "mcpServers": {
    "minecraft": {
      "command": "node",
      "args": ["C:\\path\\to\\minecraft-mcp\\dist\\index.js"],
      "env": {
        "CURSEFORGE_INSTANCES_DIR": "C:\\Users\\YOURNAME\\curseforge\\minecraft\\Instances"
      }
    }
  }
}

macOS / Linux

{
  "mcpServers": {
    "minecraft": {
      "command": "node",
      "args": ["/path/to/minecraft-mcp/dist/index.js"],
      "env": {
        "CURSEFORGE_INSTANCES_DIR": "/Users/YOURNAME/curseforge/minecraft/Instances"
      }
    }
  }
}

Typical CurseForge instances folders:

OS

Default path

Windows

%USERPROFILE%\curseforge\minecraft\Instances

macOS

~/curseforge/minecraft/Instances

Linux

~/curseforge/minecraft/Instances

Configuration

Resolution order for the instances folder:

  1. CURSEFORGE_INSTANCES_DIR environment variable

  2. curseforgeInstancesDir in mcp.config.json (next to this README)

  3. ~/curseforge/minecraft/Instances

Optional extra Minecraft server folders:

  • SERVER_PATHS — delimiter-separated absolute paths (: on macOS/Linux, ; on Windows)

  • serverPaths in mcp.config.json

  • register_server at runtime (persisted in ~/.minecraft-mcp/state.json)

Tools

Tool

Purpose

health_check

Read-only setup check on a new computer

list_instances / get_instance / use_instance

Find and select a CurseForge pack

register_server

Remember a dedicated server folder

list_mods / analyze_mods / compare_mods / recommend_mods

Inspect and slim a mod list

list_worlds / create_world / set_world_mods / apply_world / reset_world

World profiles

list_configs / read_config / edit_config

Config files

list_logs / read_log / diagnose / apply_fix

Crashes and safe disable

What to say in chat

  1. New computer: “Run a system check” / “Is this MCP set up on this PC?”

  2. Use a pack: “Use the ATM10 instance.”

  3. Make a world with fewer mods: “Create a world called LiteSky with about 80 mods, keep Create and Mekanism, drop Twilight Forest.”

  4. Change that world’s mods: “On LiteSky, disable the Aether and enable JEI.”

  5. Apply before launch: “Apply the LiteSky world profile.” Then launch that CurseForge instance and open/create a world named LiteSky.

  6. Configs: “In mekanism-common.toml set this ore setting to X and reset LiteSky.”

  7. Crashes: “Diagnose ATM10” then “Apply the fix on LiteSky.”

Switching worlds that use different mod lists: apply the other profile, then relaunch the game.

What it will not do

  • Log into CurseForge

  • Download new mods (install those in the CurseForge app, then they show up here)

  • Delete .jar files (it only renames them to .jar.disabled)

  • Generate terrain offline (you create/open the world in Minecraft once)

Optional: Docker

This server speaks stdio and must read/write your instance folders. Docker is optional. Node (above) is the simpler install.

Published image (built on every push to main):

docker pull ghcr.io/bmidd0170-sys/minecraft-mcp:latest

If pull is denied, the GitHub Package may still be private: on GitHub open Packages for this repo, then set minecraft-mcp to public.

The image runs in a dedicated container named Minecraft-MCP (Docker names cannot contain spaces). Copy .env.example to .env and set your Instances path, then:

docker compose create

That creates the container without starting it. Cursor attaches with docker start -ai Minecraft-MCP. When Cursor disconnects, the container stops but stays in Docker Desktop under that name.

docker compose create
docker compose run --rm minecraft-mcp --self-test

Cursor config (after docker compose create):

{
  "mcpServers": {
    "minecraft": {
      "command": "docker",
      "args": ["start", "-ai", "Minecraft-MCP"]
    }
  }
}

-i / -a are required (stdio). The instances mount must be writable.

To build locally instead of pulling:

docker compose build

Available Tools

21 tools
analyze_modsB

Analyze the current instance for missing deps, duplicate jars, missing files, and incompatibilities.

Inputs: no named parameters.

apply_fixA

Disable crash-culprit mods on a world profile after backup. Optionally reset the world. Always prefer this over deleting jars.

Inputs: world (required), addonIds, resetWorld.

apply_worldA

Apply a world profile to the instance: enable/disable jars and write config patches. Do this before launching.

Inputs: world (required).

compare_modsB

Compare mod jars between two instances, or an instance and a registered/server mods folder.

Inputs: right (required), left.

create_worldB

Create a world profile inside the current instance. Optionally pick a dep-safe subset of ~N mods. Does not generate terrain; you create/open the world in-game after apply.

Inputs: name (required), drop, keep, seed, +4 more.

diagnoseA

Parse latest.log, debug.log, and recent crash reports for missing mods, mixins, and likely culprits.

Inputs: no named parameters.

edit_configA

Change a key in a config file. Worldgen/server configs backup+reset the world by default so the next launch uses the new values.

Inputs: key (required), path (required), value (required), world, +1 more.

get_instanceA

Get a summary of one CurseForge instance. Defaults to the current instance.

Inputs: name.

health_checkA

Read-only system check for a new computer: Node version, CurseForge Instances folder, readable packs, and whether diagnose logs exist. Run this first on a new device. Does not change files.

Inputs: no named parameters.

list_configsB

List config files on the current instance (and a world’s serverconfig if named).

Inputs: query, world.

list_instancesA

List CurseForge Minecraft instances on this PC (name, version, loader, mod counts).

Inputs: no named parameters.

list_logsA

List log and crash-report files on the current instance.

Inputs: no named parameters.

list_modsB

List mods (and optional resource packs) on the current instance.

Inputs: kind, query, enabledOnly.

list_worldsA

List world profiles and save folders on the current instance.

Inputs: no named parameters.

read_configA

Read a config file relative to the current instance root.

Inputs: path (required).

read_logB

Read a log or crash report (tail or search; never dumps the whole huge file).

Inputs: path (required), tail, search.

recommend_modsA

Suggest mods to add or remove for a world (or the whole instance) to hit a target count and keep dependencies.

Inputs: world, targetModCount.

register_serverB

Remember a dedicated Minecraft server folder for compare/diagnose.

Inputs: path (required).

reset_worldA

Backup then delete a world save so the next launch generates it fresh with current configs. Keeps the profile.

Inputs: world (required).

set_world_modsC

Enable or disable specific mods on a world profile. Required dependencies of enabled mods are kept automatically.

Inputs: world (required), apply, enable, disable.

use_instanceA

Select the current CurseForge instance for later world/mod/config tools.

Inputs: name (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 21 tools

    Disambiguation4/5

    Most tools target a distinct resource and action, and descriptions clarify their roles well. Some overlap exists between diagnose and analyze_mods, and apply_world/set_world_mods/apply_fix all modify mod state, but each has a distinct intent.

    Naming Consistency4/5

    The naming is predominantly verb_noun snake_case, which is predictable and easy to scan. Minor deviations like health_check and diagnose break the pattern slightly, but they do not create real confusion.

    Tool Count3/5

    21 tools is on the heavy side for a single server, though each tool does serve a distinct purpose in the instance/world/mod/config/log workflow. The count feels borderline rather than bloated or thin.

    Completeness4/5

    The server covers the main lifecycle well: selecting instances, listing/analyzing mods, managing worlds, editing configs, and diagnosing/fixing issues. Minor gaps like no delete_world, unregister_server, or direct remove_mod tool are workable around with existing disable/reset flows.

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      A simple MCP server to discover and manage MCP servers. Provides tools to find, add, list, and remove MCP server configurations for Cursor.
      21 npm
      8
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables managing a local Minecraft hosting service through MCP, including server creation, start/stop, mod installation, and log retrieval.
      -
    • F
      license
      A
      quality
      D
      maintenance
      MCP server that lets AI agents drive HMCL (Hello Minecraft! Launcher) programmatically to install Minecraft versions, search/download/import modpacks from Modrinth/CurseForge, and launch/stop the game.
      13
      2
      -
    • A
      license
      A
      quality
      B
      maintenance
      Enables creating Minecraft modpack structures, searching Modrinth mods, resolving dependencies, and checking compatibility.
      8
      48 npm
      MIT