Skip to main content
Glama
dcd887
by dcd887

mc-mod-config-mcp

MCP server for Minecraft mod configuration file management. Reads, validates, compares, and cleans up .cfg, .toml, and .json config files from modpacks.

Tools

Tool

Description

read_mod_config

Parse a single config file (.cfg, .toml, .json) and return structured data with any issues

list_mod_configs

Recursively scan a config directory and list all configs with mod ID, format, and size

validate_mod_configs

Validate all configs for common issues: empty values, invalid numbers, parse errors, oversized strings

compare_mod_configs

Diff two config directories (before/after modpack update) and report added/removed/changed files

find_orphaned_configs

Find config files whose mod JAR is no longer present in the mods/ directory

get_mod_default_config

Return known default/baseline config for popular mods (Sodium, OptiFine, Phosphor, Lithium, Fabric API)

Related MCP server: Datapack MCP Server

Supported Config Formats

Format

Extension

Loader

Forge INI-style

.cfg

Forge

Fabric TOML

.toml

Fabric

JSON

.json

Any

Features

  • Multi-format parsing — handles Forge .cfg, Fabric .toml, and .json configs natively

  • Validation engine — detects empty values, invalid numbers, parse errors, and oversized strings

  • Config comparison — key-level diff for tracking changes across modpack updates

  • Orphan detection — matches config files against installed mod JARs plus a built-in known-mods database

  • Default configs — bundled known-good defaults for popular performance mods

  • Fully offline — no network calls; all data is local or built-in

Installation

Prerequisites

  • Node.js 18+

  • npm

Build

cd mc-mod-config-mcp
npm install
npm run build

Run as standalone MCP server

node dist/index.js

The server communicates via stdio (JSON-RPC 2.0). It can be consumed by any MCP-compatible client.

Configuration for MCP clients

Add to your MCP client config:

{
  "mcpServers": {
    "mc-mod-config": {
      "command": "node",
      "args": ["${MC_MOD_CONFIG_ROOT}/dist/index.js"]
    }
  }
}

Path note: Replace ${MC_MOD_CONFIG_ROOT} with the absolute path to this project's root directory. On Windows, use forward slashes: ["C:/path/to/mc-mod-config-mcp/dist/index.js"](把 C:/path/to/ 替换成你的实际路径)。 Alternatively, set an environment variable MC_MOD_CONFIG_ROOT pointing to the project root and use the variable in the config.

Configuration

本工具零配置即可用(内置默认值,任何环境开箱即用)。以下项目可通过环境变量或项目根目录 .env 文件覆盖(复制 .env.example.env):

变量

默认值

说明

MOD_CONFIG_EXTENSIONS

cfg,toml,json

支持扫描/解析的配置文件扩展名(逗号分隔,可扩展自定义扩展名)

MOD_CONFIG_MAX_FILE_MB

50

单个配置文件大小上限(MB),超过则跳过

MOD_CONFIG_MAX_STRING_LEN

500

校验时字符串值长度告警阈值

扩展已知模组默认配置库:编辑 src/mod-defaults.json(构建后为 dist/mod-defaults.json),在 defaults 下新增/覆盖模组即可,无需改代码。例如新增 "iris": { "name": "Iris", "fallbackConfig": { "enableShaders": true } }

优先级:环境变量 > .env 文件 > 内置默认值。改动后重启 MCP server 生效。

Usage Examples

Read a config file

{
  "name": "read_mod_config",
  "arguments": {
    "configPath": "/path/to/mods/sodium/sodium.toml"
  }
}

List all configs in a modpack

{
  "name": "list_mod_configs",
  "arguments": {
    "configDir": "/path/to/modpack/config"
  }
}

Validate configs for issues

{
  "name": "validate_mod_configs",
  "arguments": {
    "configDir": "/path/to/modpack/config"
  }
}

Compare configs before and after an update

{
  "name": "compare_mod_configs",
  "arguments": {
    "oldConfigDir": "/path/to/old-modpack/config",
    "newConfigDir": "/path/to/new-modpack/config"
  }
}

Find orphaned configs

{
  "name": "find_orphaned_configs",
  "arguments": {
    "modsDir": "/path/to/modpack/mods",
    "configDir": "/path/to/modpack/config"
  }
}

Get default config for a mod

{
  "name": "get_mod_default_config",
  "arguments": {
    "modId": "sodium"
  }
}

Architecture

mc-mod-config-mcp/
├── src/
│   └── index.ts        # MCP server + all tool implementations
├── dist/               # Compiled JavaScript (output of tsc)
├── skills/
│   └── mc-mod-config-helper.md  # Trae Work skill for config management
├── __tests__/
│   └── unit.test.ts    # Unit tests (fully offline)
├── package.json        # Node.js dependencies (@modelcontextprotocol/sdk, zod)
├── tsconfig.json       # TypeScript config (CommonJS output)
└── .gitignore

The MCP uses the official @modelcontextprotocol/sdk v1.x with McpServer and StdioServerTransport.

Testing

npm run build
npm test

All unit tests are fully offline and do not require a Minecraft installation.

Platform Compatibility

Tool

Windows

macOS

Linux

read_mod_config

list_mod_configs

validate_mod_configs

compare_mod_configs

find_orphaned_configs

get_mod_default_config

All tools use cross-platform Node.js fs and path APIs. All paths are resolved as absolute paths before processing. The Forge .cfg parser handles sections, type detection, and quoted values; the Fabric .toml parser handles nested tables and arrays.

License

MIT

Available Tools

6 tools
compare_mod_configsA

Compare two config directories (e.g. before/after a modpack update). Reports added, removed, changed, and unchanged config files with key-level diff info.

ParametersJSON Schema
NameRequiredDescriptionDefault
newConfigDirYesPath to the new config/ directory
oldConfigDirYesPath to the old config/ directory

TDQS

A4/5.0
Behavior3/5

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. The description states the tool reports added, removed, changed, and unchanged files with key-level diff info, which gives a good sense of the output. However, it does not disclose potential side effects (e.g., whether it modifies anything), performance implications, or error conditions. Since it's a read-only comparison tool, the lack of explicit 'read-only' statement is a minor gap, but the description does convey the core behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded: it states the primary action ('Compare two config directories') and the key output ('Reports added, removed, changed, and unchanged config files with key-level diff info') in two sentences. Every word earns its place, and the example in parentheses adds useful context without bloat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (two parameters, no output schema, no annotations), the description is fairly complete. It explains the purpose, the output categories, and the diff granularity. The only missing piece is explicit guidance on error handling or edge cases (e.g., what happens if directories don't exist), but for a comparison tool, the description is sufficient for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters (oldConfigDir and newConfigDir) with clear descriptions. The tool description adds the context that these are directories to compare, but does not add additional semantics beyond what the schema provides. The baseline of 3 is appropriate since the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: comparing two config directories and reporting added, removed, changed, and unchanged files with key-level diff info. It uses a specific verb ('Compare') and resource ('config directories'), and the example 'before/after a modpack update' clarifies the use case. It distinguishes itself from siblings like read_mod_config (which reads a single config) and list_mod_configs (which lists configs) by focusing on comparison.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: comparing two config directories, e.g., before/after a modpack update. It implies the use case but does not explicitly state when not to use it or mention alternatives. However, the sibling tools are distinct enough that an agent can infer the appropriate choice. The description could be improved by explicitly noting that this is for directory-level comparison, not single-file comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_orphaned_configsA

Find config files whose mod JAR is no longer present in the mods/ directory. Useful after removing mods.

ParametersJSON Schema
NameRequiredDescriptionDefault
modsDirYesPath to the mods/ directory
configDirYesPath to the config/ directory

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must fully disclose behavior. It states 'find config files' which implies a read-only operation, but it never explicitly says it is read-only, whether it returns file paths or names, whether it recurses into subdirectories, or any edge cases (e.g., configs with no mod JAR mapping). The absence of output schema and side-effect disclosure leaves the agent underinformed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, no fluff. The first sentence states the action and condition; the second gives usage context. Perfectly structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

While the purpose is clear and the two params are self-explanatory, the lack of output details and explicit read-only confirmation makes it incomplete for an agent. For a find operation, the return type (file paths, list, count) and any potential side effects (none expected) should be stated, especially given there are no annotations to carry that burden.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 100% of parameters with clear descriptions ('Path to the mods/ directory,' 'Path to the config/ directory'). The description adds no extra semantics beyond what the schema already provides, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool finds config files whose mod JAR is missing, distinguishing it from siblings like list_mod_configs (lists all) and validate_mod_configs (validates). The specific verb 'find' plus the condition 'JAR no longer present' leaves no ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear trigger context: 'Useful after removing mods.' This indicates when to call it, though it does not mention when *not* to use it or alternatives like read_mod_config to inspect a single config.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_mod_default_configA

Get the known default/baseline config for a specific mod. Supports Sodium, OptiFine, Phosphor, Lithium, Fabric API.

ParametersJSON Schema
NameRequiredDescriptionDefault
modIdYesMod ID (e.g. 'sodium', 'optifine', 'phosphor')

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose side effects or permissions. It doesn't mention read-only nature or error behavior for unsupported mods, though the phrase 'known' hints at potential failure. Lacks explicit disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, using only two sentences to convey purpose and supported mods. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

As a simple getter tool, the description is adequately complete. It doesn't specify the return format, but for a default config retrieval, the structure is likely standard. Without an output schema, slight ambiguity remains, but it's acceptable for this type of tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter modId is fully described with examples in the schema. The description also specifies supported mods, adding context beyond the schema. Parameter semantics are clear.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves the default config for a specific mod, with a list of supported mods. This distinguishes it from sibling tools like read_mod_config, which presumably handles current configs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a default/baseline config is needed, contrasting with reading the current config. It doesn't explicitly state when not to use it, but the distinction is clear enough for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_mod_configsA

List all mod config files in a config directory (recursively). Returns file path, mod ID, format, and size.

ParametersJSON Schema
NameRequiredDescriptionDefault
configDirYesPath to the config/ directory of a Minecraft instance or modpack

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations present, the description carries the full burden — and it does add value by stating the returned fields (file path, mod ID, format, size), which tells a caller what to expect. Still, the description doesn't disclose anything about recursion depth, error behavior on bad directories, sorting, or whether this is a pure read (obvious for 'list' but not stated). Adding return-field semantics is useful, but the missing behavioral detail and absence of any mention of file count limits or permission requirements keeps it at the baseline.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, minimal words, no filler or repetition. The core action is front-loaded ('List all mod config files...'), and the return contract follows immediately in the second sentence. Every word carries meaning without verbosity or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a straightforward read-only list tool with one well-documented parameter, the description covers both the input (config directory) and output (path, mod ID, format, size), which is the complete contract a caller needs. It misses only minor niceties like error behavior for invalid paths or what 'format' specifically refers to, but these are edge concerns that don't impede correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (single configDir parameter is described), meeting the baseline of 3. The description reinforces the parameter's purpose by defining the scope ('in a config directory'), but adds no additional semantic details about the parameter beyond that. The parameter is simple and adequately documented — no penalty, but the description doesn't exceed the schema's coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Uses a specific verb+resource combination: 'List all mod config files in a config directory (recursively)' — the 'all' + 'recursively' specifies scope beyond a simple list, and the returned fields (path, mod ID, format, size) clarify what is returned. It stands apart from siblings like find_orphaned_configs (different task) and read_mod_config (singular vs. collection), though it doesn't explicitly name the sibling it is not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The usage context is implied: an agent can infer this is the tool to call when it needs an inventory of config files before reading/validating them. However, there is no explicit statement of when NOT to use it or which sibling to choose instead, so the guidance is implicit in the purpose rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_mod_configA

Read and parse a mod config file (.cfg for Forge, .toml for Fabric, .json for any). Returns the parsed config tree.

ParametersJSON Schema
NameRequiredDescriptionDefault
configPathYesPath to the config file (.cfg, .toml, or .json)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It states that the tool reads and parses and returns a parsed config tree, implying a read-only operation, but it does not disclose error behavior on missing or malformed files, nor the exact structure of the returned tree.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences deliver the core action, format constraints, and return type without redundancy. The most important information is front-loaded, and every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a simple one-parameter tool, but there is no output schema or annotations to fill in the gaps. The phrase 'parsed config tree' is vague about the actual return shape, and error conditions are not covered, leaving some ambiguity for an agent deciding how to handle failures.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for the single configPath parameter, so the baseline is 3. The description adds meaningful format-to-loader mapping (.cfg for Forge, .toml for Fabric, .json for any) that goes beyond the schema's generic path description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pair ('Read and parse a mod config file') and specifies supported formats (.cfg for Forge, .toml for Fabric, .json for any). This clearly distinguishes it from sibling tools like list_mod_configs or validate_mod_configs, which have different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by naming when each format applies, but it does not explicitly state when to choose this tool over alternatives. It does not mention exclusions or refer to sibling tools such as get_mod_default_config or compare_mod_configs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

validate_mod_configsB

Validate all mod config files in a directory for common issues: empty values, invalid numbers, parse errors, oversized strings.

ParametersJSON Schema
NameRequiredDescriptionDefault
configDirYesPath to the config/ directory

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden of behavioral disclosure. It does not state whether validation is read-only or if it modifies anything, whether it reports errors via return values or side effects, or any side effects like writing logs. The description lists checks but does not disclose the output format or how failures are surfaced. For a tool named 'validate' with no annotation safety profile, this gap is significant.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that front-loads the action and resource, then enumerates the specific checks. Every phrase is informative with no fluff. It is concise and structured effectively.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's validation action and no output schema, the description should clarify what constitutes a successful validation, what the response format is (e.g., a list of issues), and whether it is a read-only operation. The description lists issue categories but does not describe the return value or side effects. This is insufficient for an agent to know what to expect when invoking it. Sibling tools have varied purposes, so more contextual detail on the validation outcome would help.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% since the single parameter configDir is described as 'Path to the config/ directory'. The description adds a bit of context by implying the directory contains mod config files, but does not clarify if it should be a relative/absolute path or any naming conventions. Since the schema already documents the parameter clearly, the description adds minimal extra value, so a baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Validate' and the resource 'mod config files in a directory', and lists specific checks (empty values, invalid numbers, parse errors, oversized strings). It distinguishes from siblings by specifying a directory-level validation action, whereas read_mod_config and list_mod_configs operate individually or list, and compare/find-orphaned have different purposes. The purpose is clear but not fully explicit about the output or success/failure criteria, so not a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for validating config files, but does not state when to use it over alternatives. Siblings like read_mod_config or compare_mod_configs might be preferable for specific tasks, but no exclusions or alternative conditions are given. The context of validating for 'common issues' provides some guidance, but it lacks explicit when-not or comparison to other tools.

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. Dates show when Glama detected each change.

  1. 6 tool updatesv1.0.0
    • First observedcompare_mod_configs
    • First observedfind_orphaned_configs
    • First observedget_mod_default_config
    • First observedlist_mod_configs
    • First observedread_mod_config
    • First observedvalidate_mod_configs

TDQS

A4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: read, list, validate, compare, find orphans, and get defaults. No overlapping or ambiguous responsibilities.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (read_, list_, validate_, compare_, find_, get_), making them predictable and easy to understand.

Tool Count5/5

With 6 tools, the set is well-scoped for managing Minecraft mod configs—covering essential operations without redundancy or bloat.

Completeness4/5

The surface covers reading, listing, validating, comparing, and finding orphaned configs, plus retrieving defaults. Editing or writing configs is not included, but may be outside the server's intended purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/dcd887/mc-mod-config-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server