Minecraft 1.21.1 Forge/NeoForge 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., "@Minecraft 1.21.1 Forge/NeoForge MCP Serversearch for Block class in Forge API"
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.
Minecraft 1.21.1 Forge/NeoForge MCP Server
一个 MCP (Model Context Protocol) 服务器,提供 MC 1.21.1 Forge (52.0.x) 和 NeoForge (21.1.x) API 文档浏览、代码生成与审查能力。
特性
20 个 MCP 工具:搜索 / 浏览 / 详情 / 事件 / 代码生成 / 代码审查
双 Loader 支持:Forge 与 NeoForge 的 API / 事件 / 模板均独立处理
智能搜索引擎:7 层搜索策略(精确匹配 → 类名 → 事件 → 前缀 → 子串 → CamelCase → 模糊)
代码生成:Mod 项目 / 方块 / 物品 / 实体 / 事件处理器 / 网络包 / 数据生成器模板
代码审查:16+ 规则检查常见 Modding 反模式
知识库:10 个核心主题(延迟注册、事件系统、客户端/服务端分离等)
Related MCP server: mcmodding-mcp
快速开始
1. 安装依赖
npm install2. 生成文档(可选但推荐)
文档生成需要 Gradle 缓存中的反编译源码。只要你曾经构建过一个 NeoForge/Forge mod 项目(./gradlew build),源码就已经在缓存里了。
npm run generate-docs生成器会自动搜索以下位置:
Loader | Gradle 缓存路径 |
NeoForge |
|
NeoForge sources JAR |
|
Forge |
|
Forge sources JAR |
|
也可以手动指定源码路径:
MC_SOURCE_JAR=/path/to/sources.jar npm run generate-docs3. 构建
npm run build4. 在 VS Code 中配置
在 VS Code 的 settings.json 或 .vscode/mcp.json 中添加:
{
"mcpServers": {
"mc-1.21.1": {
"command": "node",
"args": ["c:/Users/你的用户名/Desktop/1-21-1-modmcp/dist/src/index.js"],
"env": {
"MC_DOCS_DIR": "c:/Users/你的用户名/Desktop/1-21-1-modmcp/docs"
}
}
}
}工具列表
搜索
工具 | 描述 |
| 全文模糊搜索 API 文档 |
| 按类名 / 分类 / 加载器过滤的结构化搜索 |
API 详情
工具 | 描述 |
| 获取 API 或类的完整文档 |
| 获取指定路径的文档 |
| 获取文档中的特定章节 |
事件
工具 | 描述 |
| 搜索 Forge/NeoForge 事件 |
| 获取事件详细信息及用法示例 |
浏览
工具 | 描述 |
| 浏览 API 分类列表 |
| 列出所有可用文档 |
| 获取注册表信息 |
代码生成
工具 | 描述 |
| 生成 Mod 项目骨架 |
| 生成自定义方块 |
| 生成自定义物品 |
| 生成自定义实体 |
| 生成事件处理器 |
| 生成网络数据包 |
| 生成数据生成器 |
其他
工具 | 描述 |
| 审查 Mod 代码并提供改进建议 |
| 获取特定主题的 Modding 知识 |
| 列出所有知识库主题 |
知识库主题
deferred-register — 延迟注册系统
event-system — 事件总线与订阅
client-server-separation — 客户端/服务端分离
datagen — 数据生成器
networking — 网络通信
capabilities — 能力系统 (Forge) / 附件系统 (NeoForge)
creative-tabs — 创造模式标签页
block-entity — 方块实体
access-transformers — AT 访问转换器
mod-config — Mod 配置
mixins — Mixin 注入
关于 Mojang 映射
MC 1.21.1 仍然使用混淆发布,但通过 Mojang 官方映射表 (Official Mappings) 反混淆后,源码即为人类可读的名称。Parchment 在此基础上补充了方法参数名。
只要你曾构建过 NeoForge/Forge mod 项目,反编译源码就已经在 Gradle 缓存中了。
技术栈
TypeScript + Node.js (ESM)
@modelcontextprotocol/sdk— MCP 协议 SDKzod— 参数校验adm-zip— 读取源码 JAR/ZIP
License
MIT
Available Tools
20 toolsbrowse_api_categoryA
Browse API categories and their contents. Call with no arguments to list all categories, or specify a category to see its classes.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Category to browse (e.g. blocks, items, entities). Omit to list all categories. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral transparency burden. It does explain the behavior of both argument modes and what the user should see ('list all categories' vs 'see its classes'). However, it does not disclose details like return structure, error handling, or whether the operation is strictly read-only, so it is only minimally transparent.
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 two sentences with no filler. The main purpose is stated first, and the usage branches are given economically. Every sentence earns its place.
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 one-parameter tool the description is reasonably complete, but there is no output schema and no annotations, so the description should explain return value shape more concretely. Saying 'see its classes' is vague and does not describe what information about each class will be returned, nor how invalid category names are handled.
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?
The schema already documents the single optional 'category' parameter fully, including examples and the 'Omit to list all categories' note. The description mirrors this information without adding new semantic detail, 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb and resource: 'Browse API categories and their contents.' It also distinguishes two operating modes: no arguments lists all categories, and with a category shows its classes. It does not explicitly contrast itself with sibling tools like search_api or get_api_detail, so it stops short of a 5.
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 description gives explicit invocation guidance: 'Call with no arguments to list all categories, or specify a category to see its classes.' This provides clear context for when to use the tool, though it does not mention when to prefer search_api or get_api_detail instead, so it lacks exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_blockB
Generate block code with optional BlockEntity and BlockState properties.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Block name in PascalCase (e.g. MyCustomBlock) | |
| modId | Yes | Mod ID | |
| loader | Yes | Target mod loader | |
| hasState | No | Generate BlockState properties | |
| material | No | Base block to copy properties from (e.g. Blocks.STONE) | |
| packageName | Yes | Java package | |
| hasBlockEntity | No | Generate matching BlockEntity |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral disclosure burden, but it only says 'Generate block code' without detailing side effects such as file creation, overwriting behavior, or required environment. The term 'Generate' hints at a write operation, but the description fails to specify permissions, reversibility, or output characteristics.
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 filler; every word earns its place. It efficiently states the core function and the optional parameters without redundancy.
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 code generation tool with 7 parameters, no annotations, and no output schema, the description is too sparse to be fully actionable: it does not state what the generated code looks like, what the tool returns, or whether it writes files. Combined with the schema it covers parameter semantics, but behavioral and usage context remain missing.
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?
The input schema describes all 7 parameters with 100% coverage, so the baseline is 3. The description's mention of optional BlockEntity and BlockState properties loosely maps to the hasBlockEntity and hasState parameters, but it does not add meaning beyond what the schema descriptions already provide.
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 'Generate' with the resource 'block code' and explicitly mentions optional BlockEntity and BlockState properties, distinguishing it from sibling tools like generate_item and generate_entity. This is a precise verb+resource combination that immediately clarifies the tool's role.
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 description provides no explicit guidance on when to use this tool versus alternatives, nor does it state when not to use it. While the name and 'block code' imply use for block generation, there are no prerequisites, exclusions, or comparisons to sibling generation tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_data_providerB
Generate DataGen provider code (recipe, loot, tag, model, language).
| Name | Required | Description | Default |
|---|---|---|---|
| type | Yes | Provider type | |
| modId | Yes | Mod ID | |
| loader | Yes | Target mod loader | |
| packageName | Yes | Java package |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral burden. It only says 'Generate ... code' and does not disclose whether the tool writes files, returns code snippets, requires an existing project, or has side effects on the workspace.
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 sentence, front-loaded with the verb and resource, contains no filler or repeated schema content. It earns its place despite being minimal.
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 annotations and no output schema, the description should clarify what the generated output looks like and whether it mutates the project. It is adequate for basic intent but incomplete for safe invocation: an agent cannot tell if this returns code text or creates files.
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% and each parameter (type, modId, loader, packageName) is already described in the schema. The description's parenthetical list repeats the type enum, adding no meaning beyond the schema; baseline 3 applies.
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 ('Generate') and resource ('DataGen provider code') and enumerates five provider types in parentheses. This makes it immediately distinguishable from sibling generators like generate_block, generate_item, and generate_event_handler.
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?
There is no statement about when to choose this tool or when to prefer a sibling/alternative. It implies the use case via the name and parenthetical, but does not provide exclusions or prerequisites such as an existing mod project or intended placement within a DataGen pipeline.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_entityB
Generate entity code (LivingEntity, Projectile, or misc).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Entity name in PascalCase | |
| type | Yes | Entity type base class | |
| modId | Yes | Mod ID | |
| loader | Yes | Target mod loader | |
| packageName | Yes | Java package |
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 the tool 'generates' code, but does not explain whether files are written, if the project is modified, whether prerequisites like an existing mod project exist, or what the output looks like. For a generative, mutating tool this is a significant transparency 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 concise sentence with no filler, and the core resource and categories are front-loaded. It is efficient, though slightly minimal; a touch more structure, such as separating behavior from output, would improve it, but it is already well-sized.
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 annotations, no output schema, and a five-parameter generator tool, the description is too thin. It omits return value, side effects, project state requirements, and how it fits with sibling tools like generate_mod_project, leaving the agent without critical execution context.
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?
All five parameters have inline descriptions and enums in the input schema, so schema coverage is high. The description adds no parameter-specific meaning beyond restating the type enum in friendlier language; the schema already handles the heavy lifting, so baseline 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 states the specific verb 'Generate' and resource 'entity code', and explicitly enumerates the supported categories (LivingEntity, Projectile, misc), which clearly differentiates it from sibling code generators like generate_block and generate_item. Even without naming a sibling, the type list makes the target resource unambiguous.
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 description implies the tool is for entity code generation based on the named resource and types, but it does not state when to prefer it over alternatives or any exclusions. Sibling tool names provide external context, but the description itself offers only implied usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_event_handlerB
Generate an event handler class for a specific event.
| Name | Required | Description | Default |
|---|---|---|---|
| bus | No | Event bus (MOD for lifecycle events, GAME/FORGE for gameplay events) | GAME |
| modId | Yes | Mod ID | |
| loader | Yes | Target mod loader | |
| eventClass | Yes | Full event class name (e.g. net.minecraftforge.event.level.BlockEvent.BreakEvent) | |
| packageName | Yes | Java package |
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 disclosing side effects. It only says 'Generate' with no mention of whether the tool writes a file, returns code, requires existing project context, or overwrites existing files. This is minimal behavioral disclosure for a code-generation tool.
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 focused sentence with no filler, and the core verb 'Generate' plus resource type appear immediately. It is appropriately sized for the information it conveys.
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 tool with five parameters, no output schema, and no annotations, the description is too thin. It does not explain what the generated handler will contain, where it will be written, how bus selection affects the result, or what the agent should expect as a return value.
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%, so the schema already documents all parameters including the bus enum meanings and eventClass format. The description adds no extra parameter nuance beyond the schema, which matches the baseline for full coverage.
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 states a specific verb ('Generate'), a clear resource ('event handler class'), and a scoping condition ('for a specific event'). This distinguishes it from sibling generators such as generate_block, generate_item, and generate_entity,all of which target different artifact types.
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 description implies use when an event handler class is needed, and the sibling list contains search_events and get_event_detail for research versus generate_event_handler for creation. However, it provides no explicit guidance on when to choose this tool over other generate_* tools or when to use search/API tools first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_itemB
Generate item code with optional food properties.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Item name in PascalCase (e.g. MyCustomItem) | |
| modId | Yes | Mod ID | |
| isFood | No | Generate food properties | |
| loader | Yes | Target mod loader | |
| packageName | Yes | Java package | |
| maxStackSize | No | Max stack size |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits such as file writes, project requirements, or output format. It only says 'Generate item code,' which implies producing code but does not state whether files are created, whether an existing mod project is required, or what side effects occur.
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 filler or redundant phrasing. It could be slightly more informative, but as a concise structure it is effective.
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?
The schema documents all six parameters, but there is no output schema and the description does not explain what 'generating item code' entails in practice, such as whether it writes into an existing project, what files are produced, or whether a prior generate_mod_project invocation is required. For a code-generation tool with side effects, this is an incomplete picture.
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%, so the baseline of 3 applies. The description's phrase 'optional food properties' maps to isFood but adds no detail beyond the schema's own description. No paramater semantics beyond the schema are provided.
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 'Generate' with a clear resource 'item code', and calls out the optional food-property behavior associated with isFood. It is easily distinguished from sibling generators like generate_block and generate_entity by the resource name.
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 description gives no guidance on when to use this tool versus alternatives, and no exclusions or prerequisites are stated. Sibling tools like generate_mod_project and generate_block suggest a shared code-generation context, but the agent is left to infer whether this tool should be used first, after project generation, or instead of another generator.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_mod_projectA
Scaffold a complete Forge or NeoForge mod project — build.gradle, main class, mods.toml/neoforge.mods.toml.
| Name | Required | Description | Default |
|---|---|---|---|
| modId | Yes | Mod ID (lowercase, underscores) | |
| author | No | Author name | |
| loader | Yes | Target mod loader | |
| modName | Yes | Human-readable mod name | |
| description | No | Mod description | |
| packageName | Yes | Java package (e.g. com.example.mymod) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the generated artifacts (build.gradle, main class, mods.toml), which is useful, but it does not mention side effects such as directory creation, overwriting existing files, or output location.
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 sentence that immediately states the tool's purpose and lists the key outputs. No filler, no redundancy.
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 scaffolding tool that likely writes multiple files, the description lacks details about output directory behavior and integration with existing projects. It is adequate for a high-level understanding but incomplete for an agent needing to predict the tool's full effect.
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%, so the schema already fully documents all six parameters. The description adds no additional parameter-level meaning, but it does not need to, given the high schema coverage.
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 states a specific verb ('scaffold') and resource ('complete Forge or NeoForge mod project'), and lists concrete artifacts. This clearly distinguishes it from sibling tools that generate individual components like blocks or items.
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 word 'complete' implies this tool is for whole-project scaffolding, while siblings like generate_block, generate_item, and generate_entity cover individual pieces. However, it does not explicitly state when not to use it or name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_network_packetC
Generate network packet code for client-server communication.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Packet name in PascalCase | |
| modId | Yes | Mod ID | |
| fields | Yes | Packet fields | |
| loader | Yes | Target mod loader | |
| direction | Yes | Packet direction | |
| packageName | Yes | Java package |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full behavioral burden. It says the tool 'generates' code, but does not clarify whether it writes files, returns code snippets, requires an existing mod project, or has side effects. This is insufficient for a code-generation tool.
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 filler. It efficiently conveys the core purpose without unnecessary verbosity.
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 annotations, no output schema, and six required parameters, the description is too thin. It omits important context like what the generated code looks like, how it integrates, and what side effects occur. An agent would need to infer too much before invoking it.
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%: all six parameters have meaningful descriptions in the input schema. The description itself adds minimal parameter context, but the schema already carries that weight.
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 clearly states a specific verb and resource: 'Generate network packet code for client-server communication.' This distinguishes it from sibling generators like generate_block, generate_item, and generate_event_handler, though it could more explicitly mention the Minecraft modding context.
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?
There is no guidance about when to use this tool versus the many sibling generator tools. The description does not state prerequisites, exclusions, or mention that this is for network packet code specifically versus other mod components.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_api_detailA
Get full documentation for a specific class — method signatures, JavaDoc, annotations, parameters. Pass full class name (e.g. net.minecraft.world.level.block.Block) or simple name (e.g. Block).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Full class name (e.g. net.minecraft.world.level.block.Block) or simple name (e.g. Block) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It correctly frames the tool as a read-only documentation lookup and lists the content returned, but it does not disclose behavior for unknown classes, ambiguous simple names, or potential errors. This is acceptable for a simple lookup but not richly transparent.
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?
Two efficient sentences: the first states the purpose and return content, the second gives exact invocation guidance. There is no filler, repetition, 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 single-parameter read-only lookup, the description is largely complete: it tells the agent what to pass and what to expect back. It lacks only explicit routing guidance against sibling tools and behavior for ambiguous simple names, but those are minor gaps given the tool's simplicity.
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?
The input schema already describes the parameter fully, including the full and simple class name examples. The description mostly restates the schema rather than adding new meaning, so the baseline score of 3 applies.
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 names a specific verb ('Get'), resource ('full documentation for a specific class'), and enumerates the returned content: method signatures, JavaDoc, annotations, parameters. It is clear about what the tool does, though it does not explicitly differentiate it from siblings like get_document or search_api.
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 description explains how to invoke the tool by passing a full or simple class name, which implies it should be used when you already know a target class. However, it never states when to prefer this over search_api, browse_api_category, or get_document, so the usage guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_documentA
Read a complete Markdown documentation page. Use list_documents to find available pages.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Document path relative to docs root (e.g. blocks/Block.md) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It transparently communicates that the operation is a read, that the output is a complete Markdown page, and that it does not return partial sections. This is sufficient for a simple, non-destructive documentation access tool.
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?
Two short sentences with no filler. The main purpose is stated first, and the prerequisite discovery command is provided second. Every word earns its place.
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 one-parameter read tool, the description covers the purpose, output format, and how to find valid inputs. It could be slightly more complete by explicitly routing section-level reads to get_document_section, but the word 'complete' already does most of that work.
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?
The input schema already describes the path parameter at 100% coverage, including a relative-path example. The description adds the useful hint that list_documents can be used to discover available pages, but it does not add further detail about path formatting or constraints beyond what the schema provides.
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 states a specific action ('Read') and a precise object ('a complete Markdown documentation page'), which clearly distinguishes this tool from get_document_section. It also names list_documents as the discovery mechanism, making the tool's role in the docs workflow easy to identify.
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 description gives clear context: use this to read an entire documentation page, and use list_documents first to find valid paths. It does not explicitly mention when to prefer get_document_section, but the word 'complete' plus the sibling's name makes the distinction reasonably inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_document_sectionA
Read a specific section of a documentation page by heading title.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Document path relative to docs root | |
| section | Yes | Section heading to extract (partial match supported) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The word 'Read' indicates a non-destructive operation, and 'by heading title' explains the selection mechanism. However, with no annotations, the description leaves behavioral context unstated, such as behavior when the heading is missing, whether partial matches are allowed in practice, or any access limitations.
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 filler. Every word contributes to understanding the tool's purpose and lookup mechanism.
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 read operation with two well-documented parameters, the description is mostly sufficient. However, it does not clarify how this differs from the closely related get_document, and with no output schema, the description does not indicate what form the returned section content takes.
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%, so the schema already documents both parameters well. The description's phrase 'by heading title' aligns with the section parameter but does not add significant meaning beyond what the schema already provides.
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 states a specific verb ('Read') and resource ('a specific section of a documentation page') with a clear lookup mechanism ('by heading title'). This distinguishes it from the sibling get_document, which reads a whole page, even without naming the alternative.
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?
There is no guidance on when to use this tool versus related siblings such as get_document, search_docs, or list_documents. The description only states what the tool does, not when it should be chosen or when a sibling would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_event_detailA
Get full details of a specific event — fields, bus, cancellability, and usage example code.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Event name (e.g. BlockEvent.BreakEvent or PlayerEvent.ItemPickupEvent) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool returns full event details including fields, bus, cancellability, and usage example code, which helps an agent anticipate the response. It is a read-style operation, and there are no side-effect or safety concerns suggested.
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 concise sentence that front-loads the main purpose and then lists the detail categories. No filler or redundant wording.
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 one-parameter read tool, the schema covers the input and the description covers the output categories sufficiently. The only real gap is the lack of explicit guidance about when to choose this tool over search_events, but the tool's purpose is still inferable.
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?
The input schema already fully documents the only parameter (name) with type and examples, so the description does not need to add much. The description's mention of 'specific event' aligns with the name parameter but does not add new semantic detail 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 clear verb (Get), a specific resource (a specific event), and enumerates the detail categories (fields, bus, cancellability, usage example). It is distinguishable from search_events by emphasizing full details rather than searching, but it does not explicitly name or contrast any sibling tool.
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 description implies when the tool should be used: when full details of a known event are needed. It does not provide explicit when-to-use vs. search_events or other alternatives, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_modding_knowledgeB
Get best practices and patterns for a specific modding topic. Covers both Forge and NeoForge patterns.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | Topic to look up (e.g. deferred-register, event-system, networking, capabilities, datagen, mixins) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only states the tool retrieves best practices. It does not describe the return format, whether unsupported topics cause errors, the size/nature of the output, or any side effects. The "Covers both Forge and NeoForge" note adds scope but not behavioral transparency.
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 two sentences with no filler. It front-loads the action and resource, then adds the cross-platform scope in the second sentence. Every element is useful.
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 one-parameter tool, the description covers the core input and scope, but does not explain what the agent should expect in the response or how it relates to list_knowledge_topics. There is no output schema to compensate, so the missing return-value context leaves a modest gap.
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%, so the schema already documents the sole parameter with examples. The description adds little beyond restating that the topic should be "specific," which is minimal added value. Baseline 3 is appropriate because the schema does the heavy lifting.
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 ("Get") and resource ("best practices and patterns for a specific modding topic"), making the core purpose clear. It also distinguishes from siblings like get_api_detail or get_document by focusing on patterns rather than signatures or raw content, though it doesn't explicitly reference a sibling.
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 description implies this is for retrieving best practices, but offers no explicit guidance on when to use it versus related tools such as list_knowledge_topics, search_docs, or get_api_detail. There is no exclusion condition or pointer to alternatives, leaving the agent to infer the correct choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_registry_infoC
Get information about Minecraft/Forge/NeoForge registries (Block, Item, EntityType, etc.).
| Name | Required | Description | Default |
|---|---|---|---|
| registryType | Yes | Registry type to query (e.g. Block, Item, EntityType, Biome, Enchantment) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden of behavioral disclosure. It states 'Get information,' which reasonably implies a read-only operation, but it does not disclose what shape the information takes, how invalid registryType values are handled, or any error/edge-case behavior.
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, front-loaded sentence with no filler. It states the action and the resource, then gives clarifying examples. Efficient, though it could have used the saved space for behavioral 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 one-parameter query tool, the description plus schema cover the basics: what it does and what the parameter means. However, there is no output schema and no description of the return value, so an agent cannot predict what kind of 'information' will be returned or how to interpret it.
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% — the registryType parameter is already documented with examples (Block, Item, EntityType, Biome, Enchantment). The description adds a slight redundancy by listing similar examples but contributes no new semantic meaning 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 names a specific verb ('Get') and resource ('Minecraft/Forge/NeoForge registries') with concrete examples (Block, Item, EntityType), making the tool's scope clear. It is implicitly distinct from sibling tools like get_document and get_api_detail, though it does not explicitly name a differentiating sibling.
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 given about when to use this tool versus alternatives such as search_api or get_api_detail. The description implies the use case (querying registry information) but provides no conditions, exclusions, or sibling routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_documentsA
List all documentation pages in a category, or list all categories if no category specified.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Category to list documents for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining behavior. It clearly conveys that this is a read-only listing operation and discloses the important no-category fallback. It does not mention pagination, ordering, or output format, but for a simple list tool the core behavior is transparent enough.
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 filler. Every word earns its place, and the conditional behavior is stated compactly.
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 tool with one optional parameter and no output schema, this is a reasonably complete description. It covers both invocation modes and the resource scope, though it could optionally clarify the returned item shape or how it differs from list_knowledge_topics.
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?
The schema already describes the category parameter, so the baseline is 3. The description adds value by explaining that omitting the category changes the result to a category list, which clarifies the parameter's optional role beyond the schema's simple definition.
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 states a clear action ('List') on a specific resource ('documentation pages in a category') and also covers the no-argument fallback ('or list all categories'). This makes the tool's dual behavior immediately distinguishable from siblings like get_document, search_docs, and list_knowledge_topics.
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 description gives a clear condition for the two usage modes: provide a category to list its pages, or omit it to list categories. It does not explicitly name alternatives or when-not-to-use scenarios, but the conditional guidance is enough to route an agent in most cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_knowledge_topicsA
List all available knowledge base topics with descriptions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden, and it does: 'List all' clearly signals a read-only operation, and 'with descriptions' hints at the response content. For a simple list operation, no deeper behavioral disclosure appears necessary.
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 filler. Every word contributes to understanding the tool's purpose and output.
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 parameterless listing tool with no output schema, the description conveys the main return value ('topics with descriptions') and is sufficiently complete. It does not specify pagination or response format, but these are likely unnecessary for a simple list-all operation.
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?
The tool has zero parameters, so the empty schema already fully defines the input surface. The description appropriately does not add parameter details, and the baseline of 4 applies.
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 ('List') and a clear resource ('knowledge base topics') and states the scope explicitly ('all available ... with descriptions'). This distinguishes it from sibling tools like list_documents and get_modding_knowledge, which target different resources or actions.
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 such as search_docs or get_modding_knowledge. The description implies general listing usage but does not mention exclusions or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
review_mod_codeA
Review Java code for common Forge/NeoForge modding mistakes. Detects 15+ patterns including registration errors, event bus issues, client/server mixing, and more.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Java source code to review | |
| loader | No | Target mod loader for loader-specific checks |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It does state the tool 'Detects 15+ patterns', suggesting a static-analysis/report behavior, but it does not disclose whether the tool is read-only, what the response format is, or any limits like analyzing only a single file at a time. This is a meaningful but incomplete disclosure.
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 effective first sentence stating the core purpose, followed by a second sentence that adds capability detail. It is front-loaded, contains no filler, and every word contributes to the agent's understanding.
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?
Given no output schema and no annotations, the description omits any idea of what the tool returns (e.g., a list of detected issues) and any constraints. It covers the domain and loader scope well but leaves the agent without enough context to handle the tool's result reliably.
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?
The input schema fully documents both parameters ('code' and 'loader' have descriptions and enum values), so schema coverage is 100%. The description adds no parameter-level detail beyond mentioning Forge/NeoForge, which loosely aligns with the loader enum. Baseline 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 opens with 'Review Java code for common Forge/NeoForge modding mistakes', which is a specific verb+object+domain. The mention of '15+ patterns including registration errors, event bus issues, client/server mixing' clearly distinguishes this from sibling generation, search, and documentation tools.
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 description implies usage when there is existing Java code to inspect, but it never explicitly states when to choose this tool over alternatives. It does not name any sibling tools or provide exclusions such as 'use generate_* for creating new code', so the guidance is only implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_apiA
Structured API search — filter by class name, method name, return type, category, and mod loader.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return | |
| loader | No | Filter by mod loader | |
| category | No | Filter by category | |
| className | No | Filter by class name (partial match) | |
| methodName | No | Filter by method name (partial match) | |
| returnType | No | Filter by return type (partial match) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It conveys a read-oriented search/filter operation, but doesn't mention pagination behavior, result shape, or the fact that all parameters are optional. These gaps are moderate because the core behavior of a search tool is inferable, not misleading.
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?
One sentence with every phrase carrying signal: 'Structured API search' establishes the tool, and the filter list gives immediate practical guidance. No fluff or repetition.
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?
The description is adequate for a simple search endpoint, especially with a fully documented schema and all-optional parameters. However, without an output schema, a note about the result format or return structure would improve completeness; the current text leaves that entirely to inference.
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%, so the baseline is 3. The description lists filter names in prose but adds no extra meaning about parameter formats, combinations, defaults, or partial-match behavior beyond what the schema already documents.
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 verb 'search' with a clear resource ('API') and enumerates the filter dimensions (class name, method name, return type, category, mod loader), making its purpose recognizable. It does not explicitly name sibling tools to differentiate, but 'Structured API search' separates it from document- and event-level searches in the sibling list.
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?
Usage is implied by the filter list: if an agent needs to find API entries by class, method, return type, category, or loader, this tool is the fit. However, it doesn't state when to prefer it over search_docs, search_events, or browse_api_category, nor does it provide exclusions or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_docsB
Full-text search across all Minecraft 1.21.1 + Forge/NeoForge documentation. Supports class names, method names, keywords, CamelCase splitting and fuzzy matching.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return | |
| query | Yes | Search query — class name, method name, or keyword | |
| loader | No | Filter by mod loader | |
| category | No | Filter by category (e.g. blocks, items, entities, events) |
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 does add useful matching behavior: CamelCase splitting and fuzzy matching. However, it says nothing about result shape, ordering, pagination, loader default behavior, or whether the search covers all loaders by default. The description is not misleading, but it is thin on behavioral context.
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 wasted words. It states the verb, scope, and supported matching modes efficiently, and every clause earns its place.
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?
Core invocation details are present: the query is required, optional filters exist, and the matching behavior is described. However, there is no output schema and no annotation coverage, and the description does not mention what the search results look like or how to choose between search_docs and the many search-like siblings. This leaves an agent with enough to call the tool correctly but not enough to fully predict the response or confidently route around alternatives.
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%, so the baseline is 3. The description adds meaningful value by explaining that query supports class names, method names, keywords, CamelCase splitting, and fuzzy matching, enriching the query parameter beyond the schema's brief description. It does not add detail for limit, loader, or category, but those are already clearly documented in 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 states a specific verb and resource: full-text search across all Minecraft 1.21.1 + Forge/NeoForge documentation. It also lists supported search targets (class names, method names, keywords), so it is clearly not a tautology. It does not explicitly differentiate itself from search_api or search_events, but the documentation-wide scope is reasonably distinctive.
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 description implies this is a general documentation search tool, but it never explicitly says when to use it instead of search_api, search_events, get_document_section, or browse_api_category. There are no exclusions or alternative-selection conditions, which is a notable gap given the large sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_eventsA
Search for Forge/NeoForge events by name or description. Can filter by event bus (MOD/GAME/FORGE) and mod loader.
| Name | Required | Description | Default |
|---|---|---|---|
| bus | No | Filter by event bus | |
| limit | No | Max results | |
| query | Yes | Event name or keyword to search | |
| loader | No | Filter by mod loader |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It does reveal the search scope (name/description) and available filters, which is useful. However, it does not mention the return format, pagination, default limits, or that the operation is read-only, leaving a moderate transparency 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 two short sentences with no filler. The primary action is front-loaded, and the filter options are compactly summarized. Every word contributes meaning.
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?
The schema fully documents the parameters, and the description covers the search scope and filters. However, there is no output schema or annotation, and the description does not indicate what kind of results are returned or suggest following up with get_event_detail for full event information. An agent can invoke the tool correctly but may not know what to expect in the response.
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%, so the baseline is 3. The description essentially restates what the schema already covers (query by name/keyword, filter by bus/loader) without adding new format, syntax, or constraint details. It provides a useful high-level summary but no additional semantic value 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 states a specific verb ('Search') and resource ('Forge/NeoForge events'), and clarifies that the search targets name or description with optional filters. This distinguishes it from sibling tools like search_api and search_docs, which target different resource types, and from get_event_detail, which retrieves a single event rather than searching.
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 description gives clear context for when to use the tool: finding events by name/description, with optional bus and loader filters. It does not explicitly list exclusions or mention a more specific sibling like get_event_detail for retrieving full event details, so it falls short of a 5 but still provides enough situational guidance.
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.
20 tool updates
v1.0.0- First observed
browse_api_category - First observed
generate_block - First observed
generate_data_provider - First observed
generate_entity - First observed
generate_event_handler - First observed
generate_item - First observed
generate_mod_project - First observed
generate_network_packet - First observed
get_api_detail - First observed
get_document - First observed
get_document_section - First observed
get_event_detail - First observed
get_modding_knowledge - First observed
get_registry_info - First observed
list_documents - First observed
list_knowledge_topics - First observed
review_mod_code - First observed
search_api - First observed
search_docs - First observed
search_events
TDQS
Scored across 20 tools
Most tools are grouped sensibly by purpose, but there are several overlapping knowledge-access tools: search_api vs search_docs, list_knowledge_topics vs list_documents, and get_modding_knowledge vs get_document/get_document_section. The descriptions help distinguish them, but an agent could still misroute a query among these similar options.
All tool names follow a consistent verb_noun snake_case convention: list_, search_, get_, browse_, generate_, and review_. The generator family in particular follows a predictable generate_<resource> pattern, making the action and target of each tool clear.
At 20 tools, the set is in the 16–25 range that starts to feel heavy, even though the broad modding scope makes the count understandable. Several documentation and search tools could potentially be consolidated without losing much capability.
The server covers the main modding workflow well: discovering knowledge, searching APIs and events, scaffolding projects, generating common code artifacts, and reviewing code. Minor gaps exist for rarer artifacts like configs, GUIs, or capabilities, but agents can work around these.
Maintenance
Related MCP Connectors
MCP server for dev documentation, generated by doc2mcp.
MCP server for developer documentation, generated by doc2mcp.
MCP server for developers documentation, generated by doc2mcp.
MCP server for doc2mcp documentation, generated by doc2mcp.
Related MCP Servers
- AlicenseBqualityDmaintenanceProvides comprehensive access to MCP documentation through structured guides, full-text search, and interactive development workflows for building servers and clients.310 npmMIT
- AlicenseAqualityAmaintenanceMC Modding is a Model Context Protocol (MCP) server designed to equip AI assistants, such as Claude, with direct and current access to Minecraft modding documentation. By indexing official Fabric and NeoForge sources weekly, it ensures AI responses are always accurate, backed by real documentation,449 npm64MIT
- FlicenseAqualityCmaintenanceProvides grounded answers for writing Minecraft mods, targeting 1.8.9 and 1.21.10+ eras with curated and live tools for mappings, APIs, and mixins.4162-
- AlicenseNot gradedqualityDmaintenanceMCP server that provides RAG-based access to Neoforge Mod API documentation, enabling LLMs to query the latest Neoforge modding knowledge.2MIT