Skip to main content
Glama
BBSRGUY
by BBSRGUY

๐Ÿ’พ What is this?

Turbo C MCP Server hands your AI assistant a genuine Borland Turbo C 3.0 toolchain over the Model Context Protocol. Your LLM doesn't simulate C anymore โ€” it compiles and runs the real thing on the same 16-bit compiler a generation of programmers grew up on, and gets back true output, real Borland diagnostics, and cycle-accurate timing.

Ask Claude to "write a prime sieve in C and run it" โ€” and it actually does, on TCC.EXE. Errors are real. exit 0 is earned.

flowchart LR
    A["๐Ÿง  LLM / Claude"] -- MCP stdio --> B["โš™๏ธ turboc-mcp-server"]
    B -- TCC.EXE --> C["๐Ÿ“€ Borland Turbo C 3.0"]
    C -- .EXE --> D["๐Ÿ–ฅ๏ธ DOS runtime / DOSBox"]
    D -- stdout ยท exit code ยท timing --> B
    B -- structured result --> A
    style A fill:#00c853,stroke:#eafff3,color:#04150d
    style B fill:#0b3d2e,stroke:#00e5ff,color:#eafff3
    style C fill:#ffb300,stroke:#0b0f14,color:#0b0f14
    style D fill:#37474f,stroke:#00e5ff,color:#eafff3

Related MCP server: embedcalc-mcp

โœจ Why it goes further than "run my C"

๐Ÿ›  It's a studio, not a button

Twelve composable tools: compile-only checks, a static analyzer that runs without a compiler, an error explainer, an assembly disassembler, a benchmark harness, and a self-healing doctor.

๐Ÿง  Structured, model-friendly output

Every compile is parsed into error/warning objects with file + line, so your LLM can fix code surgically instead of squinting at raw logs.

๐ŸŽฎ Batteries + nostalgia included

A built-in library of 12 classic programs โ€” Fibonacci, prime sieve, Towers of Hanoi, BGI graphics, conio colors โ€” exposed as MCP resources.

๐Ÿ“ฆ Runs on modern Windows

16-bit TCC.EXE can't run on 64-bit Windows? The included DOSBox bridge wrappers make compile and run work anywhere. One env var each.


๐Ÿš€ Quick Start

1 ยท Prerequisites

  • Node.js โ‰ฅ 18

  • Borland Turbo C 3.0 at C:\TURBOC3 (or set TURBOC_ROOT)

  • 64-bit Windows? Also grab DOSBox โ†’ see DOSBox setup

2 ยท Install & build

git clone https://github.com/BBSRguy/turboc-mcp-server.git
cd turboc-mcp-server
npm install
npm run build

3 ยท Wire it into your MCP client

{
  "mcpServers": {
    "turboc": {
      "command": "node",
      "args": ["C:/path/to/turboc-mcp-server/build/server.js"],
      "env": {
        "TURBOC_ROOT": "C:\\TURBOC3"
        // On 64-bit Windows, add the DOSBox bridge (see docs/DOSBOX.md):
        // "TCC_COMMAND": "C:\\TURBOC3\\wrappers\\dosbox-tcc.bat",
        // "MCP_C_RUN_COMMAND": "C:\\TURBOC3\\wrappers\\dosbox-run.bat"
      }
    }
  }
}
claude mcp add turboc -- node C:/path/to/turboc-mcp-server/build/server.js

4 ยท Say hello

You: "Use turboc to run the hello example." AI: calls run_example โ†’ Hello, Turbo C! Compiled on real DOS iron. โœ” exit 0

Not sure it's wired up? Ask it to run environment_doctor โ€” it verifies your whole toolchain and tells you exactly what's missing.


๐Ÿงฐ The toolbox (12 tools)

#

Tool

What it does

1

๐ŸŸข compile_and_run

Compile with TCC.EXE and run the DOS .EXE; capture stdout/stderr, exit code, timing, diagnostics

2

๐Ÿ”Ž compile_check

Compile-only syntax/semantic check โ€” fast, no execution

3

๐Ÿงช analyze_code

Static analysis without compiling: gets(), scanf &, = in if, brace balance, missing main, malloc checks, float-I/O traps

4

๐Ÿ“– explain_error

Plain-English cause + fix for any Turbo C compiler / linker / runtime message

5

โš™๏ธ generate_asm

Emit the 16-bit x86 assembly listing (TCC -S) for any snippet

6

๐Ÿ“š list_examples

Browse the classic-program library (filter by category)

7

๐Ÿ“„ get_example

Fetch the full source of any example

8

โ–ถ๏ธ run_example

Compile and run an example in one shot

9

โฑ๏ธ benchmark

Run the program N times; report min / avg / max ms

10

๐ŸŽจ format_code

Re-indent by brace depth, tidy whitespace โ€” zero deps

11

๐Ÿฉบ environment_doctor

Verify TCC, INCLUDE, LIB, BGI, workspace โ€” with fix hints

12

๐Ÿงน clean_workspace

Sweep old scratch sessions; keep the N most recent

Plus MCP resources (turboc://environment, turboc://examples/*) and prompts (debug-c-error, optimize-c, explain-program).


๐ŸŽฎ Examples

The bundled library (list_examples) covers every corner of the DOS C world:

Category

Programs

๐ŸŸฉ basics

hello, fibonacci

๐Ÿงฎ algorithms

prime-sieve, bubble-sort, hanoi, matrix-multiply

๐ŸŽจ graphics

bgi-graphics (concentric circles via EGAVGA.BGI)

๐Ÿ’ฝ dos

file-io, conio-colors

๐Ÿ—‚ data

student-records (structs)

๐Ÿ•น fun

pascal-triangle, number-guess

โ–ถ  run_example { "id": "prime-sieve" }

Compile: โœ“ success  (312 ms, exit 0)
=== Run phase ===
Result: โœ“ exit 0  (44 ms)
--- program stdout ---
Primes up to 100:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

โš™๏ธ Configuration

Everything is environment-driven, so one build works on every setup.

Variable

Default

Purpose

TURBOC_ROOT

C:\TURBOC3

Turbo C install root

TCC_COMMAND

โ€ฆ\BIN\TCC.EXE

Compiler entry point (or a DOSBox .bat)

MCP_C_RUN_COMMAND

(unset)

Wrapper to launch the compiled .EXE (DOSBox bridge)

TURBOC_INCLUDE

โ€ฆ\INCLUDE

Header search path

TURBOC_LIB

โ€ฆ\LIB

Library search path

TURBOC_BGI

โ€ฆ\BGI

BGI graphics drivers

MCP_C_WORKROOT

โ€ฆ\mcp_work

Scratch directory for sessions

MCP_C_TIMEOUT_MS

5000

Per-run execution timeout

MCP_C_COMPILE_TIMEOUT_MS

10000

Per-compile timeout

MCP_C_MAX_OUTPUT_BYTES

65536

Output cap returned to the model


๐Ÿ— Architecture

graph TD
    S[server.ts<br/>tools ยท resources ยท prompts] --> T[turboc.ts<br/>compile ยท run ยท asm ยท doctor]
    S --> A[analyze.ts<br/>heuristic linter]
    S --> E[errors-db.ts<br/>error knowledge base]
    S --> X[examples.ts<br/>classic programs]
    S --> F[format.ts<br/>C reformatter]
    T --> D[diagnostics.ts<br/>parse TCC output]
    T --> U[util.ts<br/>spawn ยท timeout ยท shell bridge]
    T --> C[config.ts<br/>env-driven paths]
    style S fill:#00c853,stroke:#04150d,color:#04150d
    style T fill:#0b3d2e,stroke:#00e5ff,color:#eafff3

Clean, single-responsibility modules โ€” easy to read, easy to extend.


๐Ÿ—บ Roadmap

  • Multi-file / project compilation

  • BGI graphics โ†’ PNG capture via DOSBox screenshots

  • Turbo Assembler (TASM) round-trip

  • Memory-model presets (tiny/small/large) as first-class options

  • npm one-line install (npx turboc-mcp-server)

  • Watch mode + hot examples gallery on the website

Ideas welcome โ€” open an issue or PR.


๐Ÿค Contributing

PRs are warmly welcome. Fork โ†’ branch โ†’ npm run build โ†’ PR. New examples and error-DB entries are especially appreciated; see CONTRIBUTING.md.


โญ Star history

If this brought a little 1992 magic to your AI, drop a โญ โ€” it genuinely helps.


๐Ÿ‘ค Author

BBSRguy ยท @BBSRguy ยท rasran90@yahoo.com

Built for everyone who still hears the clrscr() flicker in their dreams. ๐Ÿ•น๏ธ

Available Tools

12 tools
analyze_codeA

Static analysis of C source WITHOUT compiling: flags unsafe gets(), scanf-missing-&, assignment-in-if, unbalanced braces, missing main(), unchecked malloc, Turbo C float I/O pitfalls, and more. Instant, no toolchain required.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesC source code.

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavioral traits. It states the tool does not compile and is instant, but does not mention side effects (e.g., no code modification, no data persistence). The description is adequate but not rich.

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

Conciseness5/5

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

The description is concise, front-loaded with purpose, and efficiently lists specific checks in a single sentence. Every part earns its place without redundancy.

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

Completeness3/5

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

With no output schema, the description does not describe the format of the analysis results (e.g., list of warnings). It only says 'flags' issues. While the tool's purpose is clear, the missing output format is a gap given the one input parameter.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter 'code,' described as 'C source code.' The description adds no additional meaning beyond the schema, so baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the tool performs static analysis of C source code without compiling, lists specific issues it detects (e.g., unsafe gets(), missing main()), and distinguishes from sibling tools like compile_and_run.

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

Usage Guidelines4/5

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

The description explicitly says 'WITHOUT compiling' and 'Instant, no toolchain required,' providing clear context for when to use this tool instead of compilation-based alternatives. However, it does not explicitly state when not to use it.

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

benchmarkA

Compile once, then run the program N times (default 5) and report min/max/avg execution time in milliseconds. Useful for comparing algorithm variants on the real DOS runtime.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesC source code.
runsNoNumber of runs (1โ€“50, default 5).
stdinNoOptional stdin fed to each run.
filenameNoOptional file name; normalized to DOS 8.3 (.C). Default MAIN.C.
extraCompilerArgsNoOptional extra Turbo C flags, e.g. ['-ms','-w-','-O'].

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It explains the compilation-once-then-multiple-runs behavior and the output metrics. However, it does not describe error handling (e.g., compilation failure) or the exact format of the report, leaving some gaps.

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

Conciseness5/5

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

Two sentences that efficiently convey the core workflow, default behavior, and use case. No filler or redundant information. Front-loaded with the key action (compile once, run N times).

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

Completeness4/5

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

The tool is fairly simple: compile, run, report. The description covers the main workflow and output. However, it lacks details on error behavior (compile errors) and the exact structure of the reported numbers. With no output schema, more explicit output description would improve completeness.

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

Parameters3/5

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

Schema coverage is 100%, so all parameter descriptions are present. The description adds only a default for runs (already in schema) and mentions filename normalization (also in schema). No additional semantic value beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the tool compiles once, runs N times, and reports min/max/avg execution time. The verb 'benchmark' is specific to repeated timing, and the description distinguishes it from siblings like compile_and_run by emphasizing multiple runs and statistics.

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

Usage Guidelines4/5

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

The description explicitly says 'Useful for comparing algorithm variants on the real DOS runtime,' which gives clear guidance on when to use it. It does not mention alternative tools or when not to use, but the context with siblings makes the use case sufficiently clear.

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

clean_workspaceA

Delete old scratch session directories created by compiles/runs. Optionally keep the N most recent. Frees disk and keeps the DOS work root tidy.

ParametersJSON Schema
NameRequiredDescriptionDefault
keepNoKeep the N most recent sessions (default 0 = remove all).

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, leaving full burden on description. It discloses the destructive action (delete), but does not mention safety, permissions, reversibility, or impact on active sessions. Basic transparency is present but incomplete.

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

Conciseness5/5

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

Two concise sentences: first states the primary action, second adds optional parameter and benefit. No wasted words.

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

Completeness4/5

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

Given the simple tool (1 parameter, no output schema), the description covers key aspects: what it deletes, optional behavior, and benefit. Missing details about return value or edge cases, but adequate for the scope.

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

Parameters4/5

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

Schema coverage is 100% with one numeric parameter 'keep'. The description adds the default value (0 = remove all) and clarifies the behavior ('keep N most recent'), enhancing schema information.

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

Purpose5/5

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

The description clearly states the verb 'Delete', the resource 'old scratch session directories', and the optional parameter. It distinguishes from sibling tools by focusing on cleanup of temporary compilation artifacts.

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

Usage Guidelines4/5

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

The description implies when to use (to free disk and keep workspace tidy) but lacks explicit guidance on when not to use or alternative approaches. Sibling tools suggest different purposes, so context is clear.

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

compile_and_runA

Compile C code with Borland Turbo C (TCC.EXE) and run the resulting DOS executable, capturing stdout/stderr, exit code, timing, and structured diagnostics. The everyday workhorse.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesC source code.
stdinNoOptional stdin fed to the program at runtime.
filenameNoOptional file name; normalized to DOS 8.3 (.C). Default MAIN.C.
extraCompilerArgsNoOptional extra Turbo C flags, e.g. ['-ms','-w-','-O'].

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses the core behavior: compiles, runs, captures output and diagnostics. It does not mention side effects like file creation or cleanup, but for a compile-and-run tool this is acceptable. The description is accurate and avoids contradiction.

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

Conciseness5/5

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

Two sentences, front-loaded with the key action and outputs, and a concise characterization. Every word serves a purpose; no redundancy or filler.

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

Completeness4/5

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

Given the simple nature of the tool, no output schema, and fully documented parameters, the description is complete enough. It covers the result (captured outputs) and the main inputs. Missing details like system prerequisites or error handling are minor.

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

Parameters3/5

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

Schema description coverage is 100%, so the tool description does not need to add much. The description contextualizes the parameters (e.g., stdin fed at runtime) but does not provide additional meaning beyond what each parameter's description already states. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool compiles C code with Borland Turbo C and runs the resulting DOS executable, capturing stdout/stderr, exit code, timing, and diagnostics. It distinguishes from siblings like compile_check (only compilation) and run_example (runs existing examples) by emphasizing the full compile-and-run workflow as 'the everyday workhorse'.

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

Usage Guidelines3/5

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

The description implies this is the primary compile-and-run tool but does not provide explicit when-to-use or when-not-to-use guidance. Sibling tools like compile_check and run_example exist, but no context is given for choosing between them.

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

compile_checkA

Compile-only syntax/semantic check (no execution). Returns structured errors and warnings with line numbers โ€” perfect for fast iteration and CI-style validation.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesC source code.
filenameNoOptional file name; normalized to DOS 8.3 (.C). Default MAIN.C.
extraCompilerArgsNoOptional extra Turbo C flags, e.g. ['-ms','-w-','-O'].

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, but the description clearly states the tool does not execute code and returns structured errors/warnings with line numbers. This is transparent for a non-destructive check.

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

Conciseness5/5

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

The description is a single sentence that is front-loaded and contains no superfluous words. Every part is meaningful.

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

Completeness5/5

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

Despite no output schema, the description covers the return value (structured errors/warnings with line numbers). It is complete for a compile-check tool.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are documented. The description adds minor detail (normalized to DOS 8.3) but does not significantly enhance understanding beyond schema.

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

Purpose5/5

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

The description clearly states it performs a compile-only syntax/semantic check without execution and returns structured errors/warnings with line numbers. This differentiates it from siblings like compile_and_run.

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

Usage Guidelines4/5

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

The description says it is 'perfect for fast iteration and CI-style validation,' implying use cases. It does not explicitly mention when not to use or contrast with all siblings, but the sibling list provides context.

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

environment_doctorA

Inspect the Turbo C toolchain: verify TCC.EXE, INCLUDE, LIB, and BGI paths, count available headers, report workspace sessions, and list any problems with fix hints. Run this first if compiles fail.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

The description discloses all behavioral traits: inspection, verification, counting, reporting, and listing problems with fix hints. It implies no side effects, which is appropriate for a diagnostic tool. No annotations were provided, so the description carries the full burden.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the main action. Every sentence provides essential information without waste.

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

Completeness5/5

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

Given no parameters and no output schema, the description fully covers the tool's behavior and context. It specifies what is inspected, what is reported, and when to use it, making it complete for the tool's simplicity.

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

Parameters4/5

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

The input schema has zero parameters, so schema coverage is trivially 100%. The description adds no parameter info because none are needed. Baseline for zero parameters is 4.

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

Purpose5/5

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

The description explicitly states the tool's purpose: inspect the Turbo C toolchain, verify paths, count headers, report sessions, and list problems with fix hints. It uses specific verbs and resources, distinguishing it from sibling tools like compile_and_run or analyze_code.

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

Usage Guidelines4/5

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

The description includes clear usage guidance: 'Run this first if compiles fail.' This implies when to use it (before other tools upon compilation failure), though it lacks explicit exclusion of alternatives.

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

explain_errorA

Look up a Turbo C / Borland compiler, linker, or runtime message and get a plain-English cause + concrete fix. Feed it the raw error text (e.g. "Undefined symbol 'x' in function main").

ParametersJSON Schema
NameRequiredDescriptionDefault
messageYesThe compiler/linker/runtime message to explain.

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the output includes a plain-English cause and concrete fix. This is adequate for a lookup tool, though it does not detail any limitations or edge cases.

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

Conciseness5/5

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

Two sentences: the first states the purpose and output format, the second gives a concrete usage example. No wasted words, front-loaded with essential information.

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

Completeness5/5

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

With one required parameter, no output schema, and straightforward behavior, the description fully covers what the tool does and how to use it. It explains the return value (cause + fix) adequately.

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

Parameters4/5

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

The input schema has 100% coverage with a description of the 'message' parameter. The description adds value by instructing to feed the raw error text and providing an example, enhancing the semantic meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the tool looks up compiler/linker/runtime messages and provides a plain-English cause and fix. It specifies the resource (Turbo C / Borland errors) and verb (look up), distinguishing it from siblings like compile_and_run or analyze_code.

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

Usage Guidelines4/5

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

The description explains how to use the tool: 'Feed it the raw error text' with an example. It does not explicitly state when not to use or compare to alternatives, but the context is clear enough for correct invocation.

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

format_codeA

Reformat C source: re-indent by brace depth, tidy trailing whitespace, and collapse blank-line runs. Dependency-free; returns the formatted code.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesC source code.
indentNoSpaces per level (default 4).

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses that the tool returns formatted code and is dependency-free. However, it does not explicitly state whether the original input is modified or preserved, which is a minor gap.

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

Conciseness5/5

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

Two sentences that are front-loaded with the action and resource. Every word serves a purpose with no redundancy.

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

Completeness4/5

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

For a simple formatting tool with two parameters and no output schema, the description is sufficient. It explains the actions and return value clearly. Could optionally mention that the original code remains unchanged, but it is not critical.

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

Parameters4/5

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

Schema coverage is 100%, so the schema already documents both parameters. The description adds value by explaining what the reformatting entails (brace-depth indentation, trailing whitespace, blank-line runs) beyond the schema's brief parameter descriptions.

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

Purpose5/5

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

The description clearly states the verb 'reformat' and the resource 'C source'. It specifies the actions: re-indent by brace depth, tidy trailing whitespace, and collapse blank-line runs. This distinguishes it from siblings like compile_and_run or analyze_code.

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

Usage Guidelines2/5

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

The description does not provide explicit guidance on when to use this tool versus alternatives. It mentions it is 'dependency-free' and returns code, but does not offer context for proper usage or when not to use it.

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

generate_asmA

Compile C to a Turbo C assembly listing (TCC -S) and return the generated .ASM. Great for teaching how C maps to 16-bit x86, inspecting codegen, or optimization study.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesC source code.
filenameNoOptional file name; normalized to DOS 8.3 (.C). Default MAIN.C.
extraCompilerArgsNoOptional extra Turbo C flags, e.g. ['-ms','-w-','-O'].

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It states it returns the generated .ASM but does not specify whether the return value is the file content or path, nor does it mention error handling, side effects, or permissions. The description lacks detail on behavior beyond the basic compilation step.

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

Conciseness5/5

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

The description is two sentences: the first clearly states the action and output, the second provides usage contexts. Every sentence earns its place without unnecessary words.

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

Completeness3/5

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

Given no output schema, the description should clarify the return format, but it only says 'return the generated .ASM'. It does not mention if the assembly is returned as a string, file path, or other. The description is adequate but leaves a clear gap for an agent to understand the exact return value.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description does not add meaningful information beyond the schema; it mentions TCC -S in the description but that is not parameter-specific. No additional parameter guidance is provided.

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

Purpose5/5

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

The description clearly states it compiles C to a Turbo C assembly listing using TCC -S and returns the .ASM. It specifies the verb 'compile', resource 'C code', and output 'assembly listing', distinguishing it from sibling tools that analyze, run, or format code.

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

Usage Guidelines4/5

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

It explicitly states it is great for teaching C-to-assembly mapping, inspecting codegen, and optimization study. While it doesn't mention when not to use or explicitly name alternatives, the usage contexts are clear and differentiate from tools like compile_and_run.

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

get_exampleA

Return the full C source of a built-in example by id (see list_examples).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesExample id, e.g. 'fibonacci'.

TDQS

A3.8/5.0
Behavior3/5

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

Describes main behavior (returning source code) but lacks details on permissions, size limits, or error handling. No annotations present to fill gaps.

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

Conciseness5/5

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

Single sentence, front-loaded with verb, no extraneous text. Highly concise.

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

Completeness4/5

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

For a simple retrieval tool with one param and clear purpose, description covers primary behavior and points to sibling for IDs. No output schema needed.

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

Parameters3/5

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

Schema coverage is 100% with clear parameter description. Description adds 'full C source' context but does not significantly enhance beyond schema.

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

Purpose5/5

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

Clearly states action 'Return' and resource 'full C source of a built-in example'. Distinguishes from sibling 'list_examples' by referencing it for IDs.

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

Usage Guidelines3/5

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

Implies users should call list_examples first to get IDs, but does not provide explicit when-to-use vs alternatives like run_example or compile_and_run.

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

list_examplesB

Browse the built-in library of classic Turbo C programs (hello, Fibonacci, prime sieve, bubble sort, Towers of Hanoi, structs, file I/O, conio colors, BGI graphics, matrix multiply, number-guessing game, Pascal's triangle). Returns ids you can run.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoOptional category filter.

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the read-only nature (browsing) and the return of IDs, but does not elaborate on potential side effects, rate limits, or the exact format of the list. It is adequate but not highly detailed.

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

Conciseness4/5

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

The description is a single sentence that front-loads the action and lists examples. It is concise but the list of examples is somewhat verbose; however, it provides useful context without being overly long. Minor room for improvement.

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

Completeness3/5

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

For a simple list tool with one optional parameter and no output schema, the description is moderately complete. It explains the function and returns value, but lacks details on how IDs map to other tools or error cases. Given the complexity, it is acceptable but could be more thorough.

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

Parameters3/5

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

The input schema already describes the optional 'category' parameter with enum values and 100% coverage. The description does not add any additional meaning about the parameter, so it meets the baseline of 3 but does not exceed it.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Browse the built-in library of classic Turbo C programs'. It includes specific examples and mentions it returns IDs that can be run, which distinguishes it from siblings like get_example and compile_and_run.

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives such as get_example or run_example. While the purpose is clear, there is no explicit 'when to use' or 'when not to use' context, which is needed given the variety of sibling tools.

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

run_exampleA

Compile and run a built-in example by id in one shot (uses its sample stdin when defined).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesExample id, e.g. 'prime-sieve'.
stdinNoOverride the example's sample stdin.

TDQS

A3.9/5.0
Behavior3/5

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

Discloses that sample stdin is used if not overridden, and that the action is 'in one shot' (atomic). However, no mention of side effects, output format, or error handling. With no annotations, the burden is higher; some behavioral aspects are missing.

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

Conciseness5/5

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

Single sentence front-loads purpose and adds a parenthetical detail on default behavior. No wasted words, fully efficient.

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

Completeness3/5

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

Covers purpose, key parameter semantics, and default stdin behavior. However, with no output schema, it does not explain what the tool returns (e.g., program output as string, stdout passthrough, or just exit status). This leaves a gap for an execution tool.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. Description adds value by providing an example value for 'id' ('prime-sieve') and clarifying that 'stdin' overrides the sample stdin, giving practical usage context.

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

Purpose5/5

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

Description clearly states 'Compile and run a built-in example by id in one shot', specifying verb and resource. It distinguishes from siblings like 'get_example' (retrieve only) and 'list_examples' (list only), as well as 'compile_and_run' which likely handles custom code.

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

Usage Guidelines3/5

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

Implicitly describes when to use (to run built-in examples by id) but does not explicitly state when not to use or name alternatives. No guidance on using compile_and_run for custom code.

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.

  1. 12 tool updatesv2.0.0
    • First observedanalyze_code
    • First observedbenchmark
    • First observedclean_workspace
    • First observedcompile_and_run
    • First observedcompile_check
    • First observedenvironment_doctor
    • First observedexplain_error
    • First observedformat_code
    • First observedgenerate_asm
    • First observedget_example
    • First observedlist_examples
    • First observedrun_example

TDQS

A4.1/5.0

Scored across 12 tools

Disambiguation5/5

Each tool serves a distinct purpose. For example, analyze_code performs static analysis without compiling, while compile_check is a compile-only syntax check. There is no overlap that would confuse an agent.

Naming Consistency4/5

Most tool names follow a verb_noun pattern (e.g., analyze_code, format_code). However, 'benchmark' is a single noun and 'environment_doctor' deviates slightly, introducing minor inconsistency.

Tool Count5/5

With 12 tools, the set is well-scoped for a Turbo C development server. Each tool covers a necessary operation without bloat or triviality.

Completeness5/5

The tool surface covers the entire workflow: analysis, compilation, execution, benchmarking, error explanation, formatting, assembly generation, environment diagnosis, and example management. No obvious gaps.

Maintenance

ActivityStale
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Enables AI agents to code and debug Commodore PET software using the VICE emulator, with CLI and MCP tools for session control, screen reading, memory manipulation, and testing.
    44
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server providing embedded engineering calculators and code generators as tools for AI agents, enabling precise, deterministic embedded math and C code generation.
    29
    82
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Bridges AI agents to a DOSBox emulator, enabling control of DOS programs via MCP tools for typing, screen reading, video capture, Lua scripting, and memory access.
    2
    GPL 2.0
  • F
    license
    Not graded
    quality
    B
    maintenance
    This MCP server enables AI agents to inspect and control the native DOSBox-X debugger through bounded MCP tools, including breakpoint management, execution control, register/memory inspection, and disassembly for DOS program debugging and reverse engineering.
    1
    -