beamng-modding
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., "@beamng-moddingPlan a BeamNG Lua extension citing official docs"
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.
BeamNG Modding MCP
A local Model Context Protocol server for researching, scaffolding, reviewing, validating, and packaging BeamNG.drive mods. Official BeamNG documentation results include their source URL and freshness metadata; optional game-source searches are read-only.
Requirements and setup
Node.js 20 or newer
A directory dedicated to your mod projects
cd /Users/joaorodrigues/Documents/beamng-mcp
npm install
npm run buildChoose a workspace. Every server write is confined to this directory:
mkdir -p /absolute/path/to/beamng-mod-workspaceOptional environment variables:
Variable | Purpose |
| Required writable mod workspace |
| Optional read-only BeamNG installation/content root |
| Optional documentation cache location |
| Cache freshness interval; defaults to 24 |
Related MCP server: enfusion-mcp
Connect an MCP client
Replace /absolute/path/to/beamng-mod-workspace in these examples.
Codex
The installed Codex CLI can create the stdio registration directly:
codex mcp add beamng-modding \
--env BEAMNG_MOD_ROOT=/absolute/path/to/beamng-mod-workspace \
-- node /Users/joaorodrigues/Documents/beamng-mcp/dist/index.jsAdd optional environment variables by repeating --env. Confirm the registration with:
codex mcp get beamng-moddingStart a new Codex task after adding the server so its tools are discovered.
Claude Desktop
Add this server under mcpServers in Claude Desktop's MCP configuration:
{
"mcpServers": {
"beamng-modding": {
"command": "node",
"args": ["/Users/joaorodrigues/Documents/beamng-mcp/dist/index.js"],
"env": {
"BEAMNG_MOD_ROOT": "/absolute/path/to/beamng-mod-workspace"
}
}
}
}Restart Claude Desktop after saving the configuration.
Cursor
Create .cursor/mcp.json in the project that should use the server:
{
"mcpServers": {
"beamng-modding": {
"command": "node",
"args": ["/Users/joaorodrigues/Documents/beamng-mcp/dist/index.js"],
"env": {
"BEAMNG_MOD_ROOT": "/absolute/path/to/beamng-mod-workspace"
}
}
}
}VS Code
Create .vscode/mcp.json:
{
"servers": {
"beamng-modding": {
"type": "stdio",
"command": "node",
"args": ["/Users/joaorodrigues/Documents/beamng-mcp/dist/index.js"],
"env": {
"BEAMNG_MOD_ROOT": "/absolute/path/to/beamng-mod-workspace"
}
}
}
}Run MCP: List Servers from the Command Palette to start or inspect it.
First use
Populate the local official-documentation index. Either ask the client:
Synchronize the BeamNG modding documentation with
beamng_docs_sync, then find the official guidance for creating a vehicle configuration.
Or run the CLI task with the same environment:
BEAMNG_MOD_ROOT=/absolute/path/to/beamng-mod-workspace npm run docs:syncThe server keeps cached pages available when offline. Refreshes are same-origin and restricted to https://documentation.beamng.com/modding/.
Example requests:
“Plan a BeamNG Lua extension, citing the official docs.”
“Dry-run a vehicle mod scaffold named
rally_buggyinrally-buggy.”“Validate the mod in
rally-buggyand explain every error with sources.”“Search my configured BeamNG source for
onExtensionLoadedexamples.”“Package
rally-buggyasreleases/rally-buggy.zipafter it passes validation.”
Scaffolding and general file writes default to dryRun: true. Ask explicitly to apply the operation after reviewing the planned paths.
Tools
Tool | Purpose |
| Search the synchronized official documentation |
| Read a cached page/section or fetch one approved URL |
| Refresh the bounded documentation cache |
| Search optional local game text files read-only |
| Generate one of seven text-only mod templates |
| Atomically write bounded UTF-8 changes |
| Check structure, JBeam, JSON, materials, references, and metadata |
| Validate and create a deterministic ZIP |
| Return evidence-backed rules by mod type/topic |
The server also publishes documentation, templates, best practices, and the latest validation report as MCP resources, plus four reusable workflow prompts.
Development
npm run checkThe tests cover path traversal and symlink containment, atomic overwrite behavior, documentation extraction/search, tolerant JBeam parsing, all scaffold profiles, deterministic archive layout, and MCP discovery/tool execution.
Safety and limitations
The server never installs mods or changes BeamNG game files.
All authoring paths are relative to
BEAMNG_MOD_ROOT; symlink escapes and traversal are rejected.Static validation cannot prove physics, rendering, Lua runtime behavior, or gameplay correctness. Test the packaged ZIP in BeamNG.drive.
Documentation is incomplete in some areas. Official docs, configured local game source, and curated guidance are always labeled separately.
Available Tools
9 toolsbeamng_best_practicesGet BeamNG modding best practicesCRead-only
Return applicable evidence-backed guidance with explicit source classification.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | ||
| modType | Yes | ||
| severity | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the read-only nature is covered. The description adds a small behavioral detail about 'explicit source classification' in the output, but it doesn't elaborate on what that means or other behaviors like response format or rate limits. It adds some value but is minimal.
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 short sentence, but it is under-specified rather than appropriately concise. It omits key context about the tool's domain and usage, making it less effective than a slightly longer description that front-loads essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with three parameters (one required enum) and no output schema, the description is incomplete. It doesn't explain what 'guidance' means in practice, what 'source classification' looks like, or what the return value contains, leaving significant gaps for the agent.
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 0%, and the description provides no explanation of any parameters (modType, topic, severity). The required modType enum and optional fields are left entirely undocumented in the description, so the agent has no semantic context beyond the raw schema names.
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 'Return' and mentions 'evidence-backed guidance with explicit source classification,' but the resource is vague and doesn't explicitly say it's about BeamNG modding. The title clarifies the purpose, but the description alone is abstract and doesn't fully distinguish from sibling tools like docs search.
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 guidance on when to use this tool versus alternatives such as beamng_docs_search or beamng_source_search. There is no mention of context, prerequisites, or exclusions, leaving the agent without direction on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beamng_docs_getRead a BeamNG documentation pageARead-only
Read a cached official page by document ID or approved documentation URL.
| Name | Required | Description | Default |
|---|---|---|---|
| heading | No | ||
| idOrUrl | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds the useful context that the page is 'cached' and that only 'approved' URLs are accepted. However, it does not disclose return shape, error behavior, or what happens with stale cache entries, so it adds only modest behavioral context beyond the annotations.
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, well-structured sentence with no filler. It is front-loaded with the action ('Read') and immediately conveys the key scope ('cached official page') and selection criteria.
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 tool is relatively simple, and the description covers the primary purpose and input method. But with no output schema, no parameter descriptions, and no guidance on 'approved URL' requirements or the 'heading' parameter, the description leaves some meaningful gaps for an agent trying to call the tool correctly.
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 description clarifies 'idOrUrl' by stating it accepts a document ID or approved documentation URL, which adds meaning beyond the bare schema. However, the optional 'heading' parameter is not explained at all, and with 0% schema description coverage the description only partially compensates for the missing parameter semantics.
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 'Read' and names the exact resource ('cached official page'), while also specifying the selection mechanism ('by document ID or approved documentation URL'). This clearly distinguishes the tool from sibling tools like search or sync.
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 use case: when you have a document ID or approved URL and want to read the page content. However, it does not explicitly mention alternatives (e.g., beamng_docs_search) or provide when-not-to-use guidance, leaving the guidance implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beamng_docs_searchSearch BeamNG modding documentationARead-only
Search the synchronized official BeamNG modding documentation and return cited sections.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| category | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only. The description adds value by noting the documentation is 'synchronized' and that results are 'cited sections', giving context about data freshness and output format. No contradiction with annotations.
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 is front-loaded with the action 'Search' and contains no filler. Every word contributes to understanding the tool's function.
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 covers the core purpose and return shape but lacks parameter semantics and usage guidance relative to sibling tools. Without an output schema, the 'cited sections' hint is helpful but insufficient for complex query patterns.
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 0% and the description provides zero explanation of parameters (query, limit, category). The user is left to infer what 'query' means and how 'limit' and 'category' affect results, which is a significant gap.
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 it searches the official BeamNG modding documentation and returns cited sections. This specific verb+resource+output combination distinguishes it from siblings like beamng_docs_get (retrieval) and beamng_source_search (source code).
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 a search use case but provides no explicit guidance on when to use this tool versus alternatives. It does not mention exclusions or direct the user to beamng_docs_get for known sections, so usage context remains implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beamng_docs_syncSynchronize BeamNG documentationB
Refresh the bounded local index from official BeamNG modding pages.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| category | No | ||
| maxPages | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds useful context with 'bounded' and 'official pages', but it does not disclose operational behaviors such as network dependency, potential delays, or whether the refresh replaces or merges existing data. Annotations (readOnlyHint=false, openWorldHint=true, destructiveHint=false) already indicate it's a non-read-only, side-effecting operation, so the description is consistent but not highly informative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the main action and object. There is no redundant wording, and it adheres to an efficient structure without losing essential intended 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 description is too sparse for a tool with three optional parameters and no output schema. It omits parameter explanations, usage context (e.g., when to run a sync before searching), and effects on the existing local index. An agent would lack critical details to invoke it correctly and confidently.
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?
With schema description coverage at 0%, the description should explain parameters like 'force', 'category', and 'maxPages'. It does not mention any of them. While the names are somewhat self-explanatory, their precise semantics (e.g., what 'force' forces, how 'category' filters, what 'maxPages' limits) remain ambiguous, requiring the agent to infer or probe.
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 what the tool does: 'Refresh the bounded local index from official BeamNG modding pages.' It uses a specific verb ('refresh'), identifies the resource ('bounded local index'), and mentions the source ('official BeamNG modding pages'). This distinguishes it from sibling search/get tools, which query rather than update the index.
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 like beamng_docs_search or beamng_docs_get. The description merely states the action without explaining prerequisites, triggers (e.g., stale index), or scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beamng_mod_packagePackage a BeamNG modB
Validate and create a deterministic BeamNG-compatible ZIP archive.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | ||
| output | Yes | ||
| source | Yes | ||
| profile | No | auto | |
| overwrite | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read/write and destructive hints, and the description adds useful behavioral context such as 'deterministic' and 'BeamNG-compatible'. However, it does not disclose details like validation failure behavior, how determinism is achieved, or potential side effects on source files.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that is front-loaded with the main action. It contains no filler or redundant information, though it is extremely brief.
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 5 parameters and no output schema, the description is far from complete. It does not describe parameter semantics, return values, or usage scenarios, making it insufficient for an agent to correctly invoke the tool without additional information.
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 0%, and the description mentions no parameters whatsoever. It fails to explain the meaning of source, output, force, profile, or overwrite, leaving the agent entirely reliant on parameter names.
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 the tool's function with specific verbs ('Validate and create') and a distinct resource ('BeamNG-compatible ZIP archive'). This distinguishes it from sibling tools like beamng_mod_validate (which only validates) and beamng_mod_scaffold (which generates files).
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 guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or exclusions. The agent is left to infer that packaging is the intended use, but no explicit context or sibling differentiation is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beamng_mod_scaffoldScaffold a BeamNG modC
Create a safe minimal text-only mod structure under the configured workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | ||
| author | Yes | ||
| dryRun | No | ||
| modType | Yes | ||
| overwrite | No | ||
| description | No | ||
| destination | Yes | ||
| displayName | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only indicate that the tool is not read-only and not destructive, which already tells the agent it performs a mutation. The description adds 'safe' but does not disclose crucial behavioral traits such as the default dryRun behavior, overwrite semantics, or that it actually creates files/directories. This leaves significant side effects undisclosed.
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 sentence of 13 words, front-loaded with the verb and clear resource. It is appropriately concise and free of filler. However, given the tool's complexity and the lack of parameter details, a slightly longer description providing key caveats (e.g., dry-run default) would be warranted, so it loses a point for under-specification.
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 8 parameters, 5 required, no output schema, and no description of workflow or file creation behavior, the current description is insufficient for correct invocation. The agent lacks guidance on what 'scaffold' entails, what paths to use, how the overwrite/dryRun flags interact, and how this fits with sibling tools like validate and package.
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 0%, so the description must compensate by explaining parameter meanings, but it does not mention any parameters. The agent is left with only parameter names (e.g., slug, destination, modType) and enum values, with no explanation of required format, path interpretation, or relationships. This is a critical gap.
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 ('Create') and identifies the resource ('safe minimal text-only mod structure') with clear qualifiers ('under the configured workspace'). This effectively distinguishes it from sibling tools like beamng_mod_write_files (which writes arbitrary files) and beamng_mod_package (which packages a mod).
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 for bootstrapping a new mod but provides no explicit guidance on when to use this tool versus alternatives such as beamng_mod_write_files or beamng_mod_validate. It also lacks exclusions or prerequisites (e.g., workspace must be configured), leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beamng_mod_validateValidate a BeamNG modARead-only
Statically validate mod structure, JBeam/JSON/materials, metadata, paths, and references.
| Name | Required | Description | Default |
|---|---|---|---|
| root | Yes | ||
| strict | No | ||
| profile | No | auto |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, and the description adds 'statically' which clarifies that it analyzes files without executing the game. This is valuable behavioral context beyond the annotation. It also lists the validation targets, giving insight into what is checked. No contradictions with annotations are present.
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 sentence, highly concise and front-loaded with the verb. It contains no redundant words. However, it omits important contextual details that a second sentence could address without significant bloat. It is efficient but slightly under-specified for the tool's complexity.
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 three parameters, no output schema, and only the readOnlyHint annotation, the description leaves significant gaps. It does not describe what the tool returns, how to interpret results, or how parameters affect validation. The static validation scope is listed, but return behavior and usage conditions are absent, making the tool difficult to use correctly without external documentation.
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 has 0% description coverage, and the description does not define any of the three parameters (root, strict, profile). It does not explain that root is the mod path, strict controls validation strictness, or the meaning of the profile enum. The description lists validation areas but not how parameters modify behavior, so it fails to compensate for the schema gaps.
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 'validate' and enumerates the validation scope (mod structure, JBeam/JSON/materials, metadata, paths, references), clearly distinguishing from sibling tools like beamng_mod_scaffold or beamng_mod_package. It clearly states what the tool does and what it covers.
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 explicit guidance is given on when to use this tool versus alternatives. The verb 'validate' implies it is for checking existing mods, and the sibling tool names suggest the broader workflow, but the description does not state exclusions or name specific alternatives. Usage is only implied through the purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beamng_mod_write_filesWrite BeamNG mod text filesADestructive
Atomically write a bounded set of UTF-8 files inside the configured workspace.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | ||
| dryRun | No | ||
| overwrite | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true, so the description adds value by disclosing atomicity, bounded input, UTF-8 encoding, and workspace confinement. These behavioral traits go beyond what the structured annotations provide.
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 that includes the action and key constraints without filler. It is concise and easy to scan.
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?
Atomicity and workspace bounds add useful context, but the description leaves out crucial behavior like overwrite semantics, dry-run behavior, and how this tool relates to scaffolding or validation siblings. With no output schema, it should provide more operational 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?
Schema coverage is 0%, so the description must compensate, but it only mentions 'a bounded set of UTF-8 files' without explaining the path/content structure or the dryRun and overwrite parameters. Most parameter semantics remain undocumented.
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 the action 'write' and the resource 'a bounded set of UTF-8 files inside the configured workspace.' It distinguishes itself from sibling tools like docs search, validate, and package, which are not primary file-writing operations.
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 writing files but gives no explicit when-to-use or when-not-to-use instructions. It mentions workspace confinement and atomicity, but does not contrast with alternatives like beamng_mod_scaffold or beamng_mod_validate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
beamng_source_searchSearch local BeamNG game sourceBRead-only
Search configured, read-only local BeamNG text files for APIs and real usage examples.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| patterns | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint in annotations already covers the safety profile. The description adds that the search is over 'configured' local text files and targets 'APIs and real usage examples', which gives some context about behavior. However, it does not disclose details about result format, ordering, or failure modes, so it only partially adds value beyond annotations.
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 sentence, 15 words, immediately stating the verb and resource. It is front-loaded and contains no filler or redundant phrasing, earning high marks for conciseness.
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 three parameters, no output schema, and a modest but real complexity (search with filters like patterns), the description is too sparse. It does not explain what a 'configured' source means, what the returned output looks like, or how limiting works. The description leaves critical contextual gaps for an agent to invoke the tool correctly.
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 0%, and the description provides no information about the meaning of the three parameters (query, limit, patterns). The mention of 'APIs and real usage examples' gives a hint about query intent, but it does not explain how parameters interact or what patterns represent. The description fails to compensate for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Search'), a resource ('local BeamNG text files'), and a purpose ('for APIs and real usage examples'). This clearly distinguishes it from sibling tools like beamng_docs_search, which would search documentation rather than source code.
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 contexts (when you need real usage examples from source) but does not explicitly state when to prefer this over beamng_docs_search or when not to use it. The 'read-only' hint provides a safety context, but there are no explicit exclusions or alternatives named.
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.
9 tool updates
v1.0.0- First observed
beamng_best_practices - First observed
beamng_docs_get - First observed
beamng_docs_search - First observed
beamng_docs_sync - First observed
beamng_mod_package - First observed
beamng_mod_scaffold - First observed
beamng_mod_validate - First observed
beamng_mod_write_files - First observed
beamng_source_search
TDQS
Scored across 9 tools
Most tools have clearly distinct purposes: docs search/get/sync act on documentation, source_search on local source files, and the mod_* tools form a scaffolding→writing→validation→packaging pipeline. The only mild overlap is between beamng_mod_scaffold and beamng_mod_write_files, but scaffold creates structure while write_files writes arbitrary file content, so they are separable.
Names follow a strong snake_case pattern with the beamng_ prefix, and most use a verb-noun construction (docs_search, source_search, mod_validate, mod_package). The slight outlier is beamng_best_practices, which is noun-only and breaks the verb-led pattern.
Nine tools is well within the ideal range for a focused modding server. Each tool contributes a distinct stage or capability: documentation access, source lookup, scaffolding, file writing, validation, packaging, and guidance, without unnecessary bloat.
The toolset covers the core mod creation lifecycle: research docs, scaffold, write files, validate, and package. Minor gaps include lack of a tool to list or read existing mod files in the workspace, and no explicit update/delete operations, but the workflow is otherwise complete for building a mod.
Maintenance
Related MCP Connectors
MCP server for developer documentation, generated by doc2mcp.
MCP server for dev documentation, generated by doc2mcp.
MCP Server for JFrog, providing tools for development and artifact management.
MCP server for developers 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
- AlicenseNot gradedqualityNot gradedmaintenanceAn MCP server for Arma Reforger and Enfusion engine modding that enables users to create mods, search API classes, and generate scripts through natural language. It provides a comprehensive suite of tools for scaffolding addons, generating prefabs, and building projects using the Workbench CLI.50 npm14-
- AlicenseNot gradedqualityCmaintenanceProvides a local MCP server for searching and retrieving documentation from 22+ open-source projects, enabling AI coding assistants to access up-to-date docs without network dependency.11 npm2MIT
- AlicenseAqualityAmaintenanceA local, security-focused MCP server for Arma Reforger modding, providing AI coding assistants with tools for project discovery, script analysis, resource validation, log diagnosis, API documentation search, file editing, and Workbench automation.132MIT