Skip to main content
Glama
MushroomFleet

Markdown3D MCP Server

Markdown3D MCP Server

MCP Version License

Transform markdown documents into immersive 3D visualizations using the NM3 format

Markdown3D MCP is a Model Context Protocol (MCP) server that intelligently converts markdown documents into three-dimensional spatial representations. Using semantic analysis, cross-reference detection, and optimized spatial layout algorithms, it creates navigable 3D knowledge structures that preserve document hierarchy and relationships.

โœจ Features

  • ๐ŸŽฏ Semantic Analysis - Intelligent content classification using NLP to determine node types and relationships

  • ๐ŸŽจ Smart Color Mapping - Context-aware color assignment based on content semantics and tone

  • ๐Ÿ“ Geometric Intelligence - Automatic shape selection based on content structure (spheres, cubes, cylinders, pyramids, tori)

  • ๐Ÿ”— Cross-Reference Detection - Parses [[node-id]] patterns and builds relationship graphs

  • ๐Ÿ“ Spatial Optimization - Force-directed layout algorithms for readable 3D arrangements

  • โšก Multi-Layer Caching - LRU caches with intelligent eviction for sub-second repeat requests

  • ๐Ÿ“Š Streaming Processing - Handle documents of any size with constant memory usage

  • ๐Ÿ”„ Parallel Processing - Worker thread pool for multi-core spatial optimization

  • ๐Ÿ“ˆ Performance Monitoring - Prometheus metrics and detailed performance statistics

  • ๐Ÿ’พ Memory Management - Automatic monitoring and garbage collection

  • โœ… Strict Validation - Ensures compliance with NM3 specification (16 colors, 5 shapes)

  • โšก MCP Integration - Seamless integration with Claude Desktop and other MCP clients

  • ๐Ÿงช Comprehensive Testing - Full test suite with validation and error handling

Related MCP server: knowledgebased

๐Ÿ“‹ Table of Contents

๐Ÿš€ Installation

Prerequisites

  • Node.js 20.x or higher

  • npm or yarn

  • Claude Desktop (for MCP integration)

Install from npm

npm install -g markdown3d-mcp

Install from source

# Clone the repository
git clone https://github.com/yourusername/markdown3d-mcp.git
cd markdown3d-mcp

# Install dependencies
npm install

# Build the project
npm run build

Configure Claude Desktop

Add the server to your Claude Desktop configuration:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "markdown3d": {
      "command": "node",
      "args": ["/absolute/path/to/markdown3d-mcp/dist/index.js"]
    }
  }
}

Verify Installation

# Run standalone test
npm run test

# Start development server
npm run dev

โšก Quick Start

Using with Claude Desktop

  1. Restart Claude Desktop after configuration

  2. Check the ๐Ÿ”Œ MCP icon to verify "markdown3d" is connected

  3. Use the transformation tool:

Please use the transform_to_nm3 tool to convert this markdown:

# My Research
## Key Findings
- Discovery 1
- Discovery 2

Command Line Usage

# Transform a markdown file
node dist/index.js < input.md > output.nm3

# Run test client
npm run test

๐Ÿ“– Usage

MCP Tools

transform_to_nm3

Transforms markdown content into NM3 3D visualization format with performance optimizations.

Parameters:

  • markdown (required): Markdown content to transform

  • title (optional): Document title override

  • author (optional): Author name override

  • options (optional): Performance options object

    • useCache (boolean, default: true): Enable multi-layer caching

    • useStreaming (boolean, default: true): Enable streaming for large documents

    • chunkSize (number, default: 1000): Lines per chunk for streaming

Example:

{
  "markdown": "# Introduction\n\nThis is a test document.",
  "title": "Test Document",
  "author": "John Doe",
  "options": {
    "useCache": true,
    "useStreaming": true
  }
}

Returns: Valid NM3 XML string

Performance Notes:

  • First request may take longer as caches warm up

  • Identical markdown served from cache in <10ms

  • Documents >50KB automatically use streaming

  • Cache hit rate typically >80% after warmup

validate_nm3

Validates NM3 XML for compliance with the specification.

Parameters:

  • xml (required): NM3 XML to validate

Returns: Validation result with success status and error details

get_performance_stats

Retrieves detailed performance and cache statistics from the server.

Parameters: None

Returns: Performance report including:

  • Cache statistics (hits, misses, hit rates) for all cache layers

  • Memory usage (heap, RSS, percentage)

  • Prometheus metrics (transform duration, counts, etc.)

Example Response:

# Performance Statistics

## Cache Stats
### parse
- Hits: 150
- Misses: 50
- Hit Rate: 75.00%
- Keys: 45

### transform
- Hits: 140
- Misses: 60
- Hit Rate: 70.00%
- Keys: 35

### xml
- Hits: 145
- Misses: 55
- Hit Rate: 72.50%
- Keys: 40

## Memory Stats
- Heap Used: 245.67MB
- Heap Total: 512.00MB
- Percent Used: 47.98%
- RSS: 385.23MB

## Prometheus Metrics
...

clear_cache

Clears all caches to free memory or reset performance state.

Parameters: None

Returns: Confirmation message

Use Cases:

  • Free memory when approaching limits

  • Reset cache state for testing

  • Clear stale cached data

  • Force fresh transformations

Note: After clearing cache, first requests will take longer as caches rebuild.

API Usage

import { MarkdownParser } from './core/parser.js';
import { SimpleTransformer } from './core/transformer.js';
import { NM3XMLBuilder } from './core/xml-builder.js';

// Parse markdown
const parser = new MarkdownParser();
const sections = parser.parse(markdownContent);

// Transform to NM3
const transformer = new SimpleTransformer();
const nm3Doc = transformer.transform(sections);

// Build XML
const xmlBuilder = new NM3XMLBuilder();
const xml = xmlBuilder.buildXML(nm3Doc);

๐Ÿ”ง How It Works

Transformation Pipeline

Markdown โ†’ Parser โ†’ Semantic Analysis โ†’ Transformer โ†’ XML Builder โ†’ NM3
  1. Parsing: Markdown is tokenized and structured into hierarchical sections

  2. Analysis: Content is analyzed for semantic meaning, patterns, and relationships

  3. Transformation: Sections are converted to 3D nodes with appropriate shapes, colors, and positions

  4. XML Generation: Valid NM3 XML is built with proper CDATA wrapping and validation

Color Mapping Rules

Color

Semantic Meaning

Triggers

pastel-pink

Urgent/Critical

error, warning, critical, urgent

pastel-blue

Information

main sections, documentation

pastel-green

Solutions/Success

solution, complete, done, success

pastel-yellow

Questions/Ideas

questions, how, why, what

pastel-purple

References/Sources

citation, reference, source, link

pastel-orange

Warnings/Attention

attention, caution, note

pastel-mint

Fresh Ideas

new, innovation, idea, proposal

pastel-lavender

Technical/Code

code blocks, technical content

pastel-peach

Personal Notes

subjective, opinion, note

pastel-gray

Archive/Deep Content

nested content, completed items

Shape Assignment Logic

Shape

Usage

Best For

๐Ÿ”ต Sphere

Atomic concepts

Single ideas, definitions, standalone concepts

๐Ÿ“ฆ Cube

Structured data

Categories, tables, structured information

๐Ÿ”„ Cylinder

Processes

Timelines, steps, sequential processes

๐Ÿ”บ Pyramid

Hierarchies

Priority lists, organizational structures

๐Ÿฉ Torus

Cycles

Loops, feedback systems, continuous processes

Spatial Layout Strategy

  • Z-axis: Importance/temporal ordering (important content forward)

  • Y-axis: Abstraction levels (high-level concepts higher)

  • X-axis: Categorical grouping (related content clustered)

  • Hierarchy: Parent-child relationships via containment links

  • Spacing: Dynamic based on node importance and relationships

โšก Performance

Key Performance Metrics

Markdown3D MCP is optimized for production workloads with Phase 4 performance enhancements:

Metric

Target

Description

Cached Requests

<10ms

Repeat transformations served from cache

Small Documents

<500ms

Documents with <100 nodes, first request

Medium Documents

<2s

Documents with 100-1000 nodes

Large Documents

<5s

Documents with 1000-5000 nodes (with streaming)

Memory Footprint

<500MB

Under normal production load

Cache Hit Rate

>80%

After initial warmup period

Performance Features

Multi-Layer Caching System

  • Parse Cache: 100MB LRU cache with 30-minute TTL for parsed markdown

  • Transform Cache: 50MB LRU cache with 15-minute TTL for NM3 documents

  • XML Cache: NodeCache with 100 keys and 10-minute TTL

  • SHA-256 Hashing: Deterministic cache keys for reliable hit detection

Streaming Processing

  • Automatic activation for documents >50KB

  • Constant memory usage regardless of document size

  • Line-by-line parsing with chunked processing

  • Handles multi-GB documents efficiently

Parallel Processing

  • Worker thread pool for CPU-intensive operations

  • Multi-core spatial optimization

  • Configurable worker count (default: CPU cores - 1)

  • Automatic load balancing

Performance Monitoring

  • Prometheus metrics integration

  • Real-time cache hit/miss statistics

  • Memory usage tracking

  • Transform duration histograms

  • Node count distributions

Memory Management

  • Automatic monitoring every 30 seconds

  • Warning threshold: 400MB heap usage

  • Critical threshold: 800MB heap usage

  • Automatic garbage collection on critical status

  • Detailed memory statistics

Optimization Guidelines

For best performance:

  1. Enable Caching: Cache is enabled by default; ensure it's not disabled

  2. Reuse Content: Identical markdown will be served from cache in <10ms

  3. Large Documents: Documents >50KB automatically use streaming

  4. Memory Limits: Monitor memory usage with get_performance_stats tool

  5. Clear Cache: Use clear_cache tool if memory becomes constrained

๐Ÿ‘จโ€๐Ÿ’ป For Developers

Project Structure

markdown3d-mcp/
โ”œโ”€โ”€ src/
โ”‚   โ”œโ”€โ”€ index.ts              # Entry point
โ”‚   โ”œโ”€โ”€ server.ts             # MCP server implementation
โ”‚   โ”œโ”€โ”€ core/
โ”‚   โ”‚   โ”œโ”€โ”€ parser.ts         # Markdown parsing
โ”‚   โ”‚   โ”œโ”€โ”€ transformer.ts    # Basic transformation
โ”‚   โ”‚   โ”œโ”€โ”€ enhanced-transformer.ts    # Advanced transformation (Phase 2)
โ”‚   โ”‚   โ”œโ”€โ”€ optimized-transformer.ts   # Performance-optimized transformer (Phase 4)
โ”‚   โ”‚   โ”œโ”€โ”€ xml-builder.ts    # NM3 XML generation
โ”‚   โ”‚   โ”œโ”€โ”€ reference-extractor.ts     # Cross-reference detection
โ”‚   โ”‚   โ”œโ”€โ”€ content-classifier.ts      # Semantic analysis
โ”‚   โ”‚   โ”œโ”€โ”€ intelligent-shape-assigner.ts
โ”‚   โ”‚   โ”œโ”€โ”€ intelligent-color-mapper.ts
โ”‚   โ”‚   โ”œโ”€โ”€ spatial-optimizer-v2.ts    # Spatial layout optimization (Phase 3)
โ”‚   โ”‚   โ”œโ”€โ”€ collision-detector.ts      # Collision detection (Phase 3)
โ”‚   โ”‚   โ”œโ”€โ”€ force-directed-3d.ts       # Force-directed layout (Phase 3)
โ”‚   โ”‚   โ”œโ”€โ”€ layout-templates.ts        # Layout templates (Phase 3)
โ”‚   โ”‚   โ”œโ”€โ”€ octree.ts                  # Octree spatial indexing (Phase 3)
โ”‚   โ”‚   โ”œโ”€โ”€ cache-manager.ts           # Multi-layer caching (Phase 4)
โ”‚   โ”‚   โ”œโ”€โ”€ stream-processor.ts        # Streaming processor (Phase 4)
โ”‚   โ”‚   โ”œโ”€โ”€ worker-pool.ts             # Worker thread pool (Phase 4)
โ”‚   โ”‚   โ”œโ”€โ”€ metrics.ts                 # Performance metrics (Phase 4)
โ”‚   โ”‚   โ””โ”€โ”€ memory-monitor.ts          # Memory management (Phase 4)
โ”‚   โ”œโ”€โ”€ models/
โ”‚   โ”‚   โ””โ”€โ”€ types.ts          # TypeScript interfaces
โ”‚   โ”œโ”€โ”€ constants/
โ”‚   โ”‚   โ””โ”€โ”€ validation.ts     # Valid colors and shapes
โ”‚   โ”œโ”€โ”€ utils/                # Utility functions
โ”‚   โ””โ”€โ”€ handlers/             # Additional handlers
โ”œโ”€โ”€ docs/                     # Documentation
โ”‚   โ”œโ”€โ”€ Markdown3D-Phase0.md  # Overview
โ”‚   โ”œโ”€โ”€ Markdown3D-Phase1.md  # Foundation implementation
โ”‚   โ”œโ”€โ”€ Markdown3D-Phase2.md  # Advanced features
โ”‚   โ”œโ”€โ”€ Markdown3D-Phase3.md  # Spatial optimization
โ”‚   โ”œโ”€โ”€ Markdown3D-Phase4.md  # Performance & scalability
โ”‚   โ””โ”€โ”€ instruct/             # Detailed phase instructions
โ”œโ”€โ”€ tests/                    # Test suite
โ”œโ”€โ”€ output/                   # Generated NM3 files
โ””โ”€โ”€ specs/                    # NM3 specifications

Development Workflow

# Install dependencies
npm install

# Development mode (watch for changes)
npm run dev

# Build for production
npm run build

# Run tests
npm run test

# Start MCP server
npm start

Building From Source

# Clone repository
git clone https://github.com/yourusername/markdown3d-mcp.git
cd markdown3d-mcp

# Install dependencies
npm install

# Build TypeScript
npm run build

# Test the build
node dist/index.js

Development Phases

The project is organized into 6 development phases:

  • Phase 1: Foundation & Basic Functionality โœ…

    • Working MCP server with basic transformation

    • Strict validation (16 colors, 5 shapes)

    • Simple spatial positioning

  • Phase 2: Advanced Parsing & Intelligence โœ…

    • Cross-reference detection

    • Semantic analysis with NLP

    • Intelligent shape and color assignment

    • Relationship mapping

  • Phase 3: Spatial Optimization โœ…

    • Force-directed graph algorithms

    • Collision detection and resolution

    • Layout templates

    • Octree spatial indexing

  • Phase 4: Performance & Scalability โœ…

    • Multi-layer caching (parse, transform, XML)

    • Streaming processing for large documents

    • Worker thread pool for parallel processing

    • Performance monitoring with Prometheus metrics

    • Memory management with automatic GC

    • Optimized transformer with intelligent caching

  • Phase 5: Testing & Quality Assurance (Planned)

    • Comprehensive test suite

    • Validation framework

    • Error recovery

    • Benchmark suite

  • Phase 6: Production & Deployment (Planned)

    • Docker containerization

    • CI/CD pipelines

    • Monitoring and logging

    • Documentation

Testing

# Run all tests
npm run test

# Test with specific markdown file
npm run test -- --file docs/test-book.md

# Validate NM3 output
node dist/index.js validate output/test.nm3

Code Style

  • TypeScript with strict mode enabled

  • ESModules (.js imports required)

  • Functional programming patterns preferred

  • Comprehensive error handling

  • Detailed logging for debugging

๐Ÿ“ NM3 Format

NM3 (Navigable Markdown 3D) is an XML-based format for representing documents in 3D space. Each document consists of:

  • Metadata: Title, author, creation date, tags

  • Camera: Initial viewpoint and field of view

  • Nodes: 3D geometric shapes representing content

  • Links: Relationships between nodes

Key Features

  • 16 Allowed Colors: Pastel palette for visual harmony

  • 5 Geometric Types: Sphere, Cube, Cylinder, Pyramid, Torus

  • CDATA Content: Preserves markdown formatting

  • Spatial Positioning: 3D coordinates (x, y, z)

  • Link Types: 13 semantic relationship types

Specification

For the complete NM3 XML specification, see:

Sample NM3 Structure

<?xml version="1.0" encoding="UTF-8"?>
<nm3 version="1.0">
  <meta title="Document Title" created="2025-01-01T00:00:00Z" author="Author"/>
  <camera position-x="0" position-y="10" position-z="20" 
          look-at-x="0" look-at-y="0" look-at-z="0" fov="75"/>
  <nodes>
    <node id="intro" type="sphere" x="0" y="0" z="0" 
          color="pastel-blue" scale="1.5">
      <title>Introduction</title>
      <content><![CDATA[# Introduction
This is the content...]]></content>
    </node>
  </nodes>
  <links>
    <link from="intro" to="chapter1" type="leads-to" color="pastel-gray"/>
  </links>
</nm3>

๐ŸŽจ Visualization

Viewing NM3 Files

To view the generated 3D visualizations, use the Careless-Canvas-3D application:

๐Ÿ”— Careless-Canvas-3D Viewer (placeholder link)

The Careless-Canvas-3D viewer provides:

  • Interactive 3D navigation

  • Node selection and content viewing

  • Link traversal

  • Multiple camera modes

  • Export and sharing options

Alternative Viewers

NM3 files can also be viewed with:

  • Any XML-compatible 3D visualization tool

  • Custom Three.js implementations

  • VR/AR compatible viewers

Screenshots

(Add screenshots of visualized documents here)

๐Ÿ“š Citation

(Placeholder for related NM3 works, inspirations, and acknowledgments)

๐Ÿค Contributing

Contributions are welcome! Please see our Contributing Guidelines for details.

How to Contribute

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

Development Setup

# Fork and clone
git clone https://github.com/yourusername/markdown3d-mcp.git

# Create branch
git checkout -b feature/my-feature

# Install dependencies
npm install

# Make changes and test
npm run dev
npm run test

# Build
npm run build

Code of Conduct

We follow the Contributor Covenant Code of Conduct. Please be respectful and inclusive in all interactions.

๐Ÿ“„ License

This project is licensed under the ISC License - see the LICENSE file for details.

๐Ÿ“š Citation

Academic Citation

If you use this codebase in your research or project, please cite:

@software{markdown3d_mcp,
  title = {Markdown3D MCP: MCP transforms MD into NM3 formatted xml},
  author = {[Drift Johnson]},
  year = {2025},
  url = {https://github.com/MushroomFleet/Markdown3D-MCP},
  version = {1.0.0}
}

Donate:

Ko-Fi


Made with โค๏ธ by the Markdown3D team

Transform your documents into navigable 3D knowledge spaces


Support This Project

If you found this useful, please star the repo โ€” it helps others discover it!

Star on GitHub

Available Tools

7 tools
assemble_chunksB

Assemble chunked output into final NM3 file

ParametersJSON Schema
NameRequiredDescriptionDefault
manifestPathYesPath to manifest.json from chunked transform
outputDirectoryNoOptional output directory for the final NM3 file (defaults to current working directory)

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. It only states the purpose without mentioning any side effects, required permissions, error conditions (e.g., missing manifest), or whether the operation is destructive. This is insufficient for an AI agent to understand the tool's behavior.

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

Conciseness5/5

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

The description is a single sentence that is concise and front-loaded. Every word is necessary; no wasted text.

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

Completeness2/5

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

Despite having only 2 parameters and no output schema, the description lacks important context: it does not explain what an NM3 file is, what the manifest path should point to, or what the output directory defaults to. Given the sibling tools, more details would help an agent decide when to invoke this 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 description coverage is 100% (both parameters have descriptions). The tool description adds no additional meaning beyond what the schema already provides. Based on the rubric, baseline is 3 when schema coverage is high, so no deduction.

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 'Assemble chunked output into final NM3 file' clearly states the verb (assemble) and resource (chunked output to NM3 file). It distinguishes well from siblings like transform_to_nm3_chunked, which creates the chunks, and get_chunk_status, which checks progress.

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?

No explicit guidance on when to use this tool versus alternatives. While it is implied that this should be used after transform_to_nm3_chunked, the description does not state prerequisites, exclusions, or mention alternative workflows like using transform_to_nm3 for non-chunked inputs.

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

clear_cacheC

Clear all caches

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior1/5

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

No annotations are present, so the description carries full responsibility for behavioral disclosure. It merely states the action without any details on side effects, destructiveness, idempotency, required permissions, or state changes. This is insufficient for an agent to gauge safety.

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 zero wasted words. It is appropriately sized for a tool with no parameters.

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

Completeness2/5

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

Given the lack of annotations, output schema, and usage guidance, the description is too brief to fully inform an agent. It lacks crucial behavioral and contextual details, such as when this action is safe or what the consequences are.

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?

There are no parameters, and schema coverage is trivially 100%. The description adds no parameter information because none is needed. Baseline for zero parameters is 4, which is appropriate here.

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

Purpose4/5

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

The description 'Clear all caches' clearly states the verb (clear) and resource (all caches). It is specific enough for an agent to understand the action, though 'all caches' could be ambiguous in scope. Distinguishes from sibling tools which focus on chunk operations and transformations.

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?

No guidance is provided on when to use this tool vs alternatives. The description does not mention prerequisites, contexts, or situations where clearing caches is appropriate. The agent must infer usage from the tool name alone.

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

get_chunk_statusC

Check status of chunked output

ParametersJSON Schema
NameRequiredDescriptionDefault
manifestPathYesPath to manifest.json

TDQS

C2.1/5.0
Behavior2/5

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

With no annotations, the description fails to disclose any behavioral traits, such as whether the operation is read-only, has side effects, or requires specific permissions. The single sentence provides no insight into tool behavior beyond the implied status check.

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

Conciseness3/5

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

The description is extremely concise (one sentence), which is efficient but insufficient for a tool with no annotations or output schema. It sacrifices necessary detail for brevity.

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

Completeness2/5

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

Given the tool's single parameter and lack of output schema, the description should explain what status information is returned, possible values, or how to interpret results. It provides none of this, leaving the agent underinformed.

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

Parameters3/5

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

The schema has 100% coverage for the single parameter 'manifestPath', so the baseline is 3. The description adds no extra meaning beyond the schema's own description, but does not detract either.

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

Purpose2/5

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

The description 'Check status of chunked output' merely rephrases the tool name without providing additional context or distinguishing it from siblings like 'assemble_chunks'. It lacks specificity about what 'status' entails.

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

Usage Guidelines1/5

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. There is no mention of prerequisites, context, or exclusions, making it impossible for an agent to determine appropriate usage.

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

get_performance_statsC

Get performance and cache statistics

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It does not disclose any behavioral traits such as whether the operation is read-only, requires authentication, or has side effects.

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

Conciseness3/5

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

The description is a single sentence, but it is very brief and lacks detail. It is functional but could be improved with more context.

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

Completeness2/5

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

Given no output schema and no annotations, the description is minimal. It does not explain what kind of statistics are returned, how to interpret them, or how this tool relates to other cache/tools.

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 tool has 0 parameters, and the schema coverage is 100%. Per guidelines, a baseline of 4 is appropriate since the description does not need to add parameter details.

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

Purpose4/5

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

The description 'Get performance and cache statistics' clearly states the verb (Get) and resource (performance and cache statistics), distinguishing it from sibling tools like clear_cache or get_chunk_status.

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?

No guidance is provided on when to use this tool versus alternatives. There is no mention of context, prerequisites, or exclusions.

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

transform_to_nm3B

Transform markdown to NM3 (returns full XML - may truncate for large docs >300 nodes)

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesMarkdown content to transform
titleNoOptional document title
authorNoOptional author name
useCacheNoEnable caching (default: true)
useStreamingNoEnable streaming for large documents (default: true)

TDQS

B3.1/5.0
Behavior3/5

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

The description discloses the truncation behavior for large documents (>300 nodes) and states the output format (full XML). However, without annotations, it does not cover other behavioral aspects like idempotency, authorization needs, or side effects.

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 quickly conveys the action and a key limitation. It is efficient and front-loaded, though slightly ambiguous due to the contradiction between 'full XML' and 'may truncate'.

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

Completeness2/5

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

With no output schema and 5 parameters, the description is insufficient. It contradicts itself (returns full XML but may truncate), lacks information about error conditions, streaming behavior, or the XML structure. For a moderately complex tool, this is incomplete.

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 all parameters described. The tool description adds no extra meaning beyond the schema; the truncation note is not parameter-specific. Baseline score is appropriate.

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

Purpose4/5

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

The description clearly states the verb 'Transform' and the resource 'markdown to NM3', and adds a note about returning XML with a truncation warning. However, it does not explicitly differentiate from the sibling tool 'transform_to_nm3_chunked'.

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?

No explicit when-to-use or when-not-to-use guidance is provided. The truncation warning hints at a limitation but does not suggest alternatives or contextual usage rules.

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

transform_to_nm3_chunkedB

Transform markdown to NM3 with chunked output (prevents truncation for large docs)

ParametersJSON Schema
NameRequiredDescriptionDefault
markdownYesMarkdown content to transform
outputNameNoOutput filename (default: output.nm3)output.nm3
workingDirectoryNoWorking directory for output file (captures where the final NM3 should be saved)
titleNoOptional document title
authorNoOptional author name
useCacheNoEnable caching (default: true)
useStreamingNoEnable streaming for large documents (default: true)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden. It mentions chunked output but does not disclose behavioral traits like whether the tool is destructive, the need to later assemble chunks (given sibling assemble_chunks), or any side effects of caching/streaming parameters.

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?

Description is a single, front-loaded sentence that conveys purpose and benefit efficiently. It is concise without unnecessary words, though could be slightly expanded for clarity.

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

Completeness2/5

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

Despite the tool having 7 parameters and no output schema, the description is minimal. It does not explain the chunking mechanism, how results are returned, or the relationship with sibling tool assemble_chunks. This leaves the agent with insufficient context to use the tool effectively.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description adds no extra meaning beyond the schema; for example, it does not clarify how 'chunked output' relates to the parameters or the output process.

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 the action (transform), input (markdown), output format (NM3 with chunked output), and the problem it solves (prevents truncation for large docs). It distinguishes from sibling transform_to_nm3 by mentioning chunked output.

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 usage for large documents to prevent truncation, but does not explicitly state when to use this tool vs alternatives like transform_to_nm3, nor when not to use it. No exclusions or alternative tool names are provided.

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

validate_nm3C

Validate NM3 XML for compliance with spec

ParametersJSON Schema
NameRequiredDescriptionDefault
xmlYesNM3 XML to validate

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so description must cover behavioral traits. It indicates 'Validate' (read-only), but does not disclose what happens on failure (e.g., error thrown, return false) or side effects. Lacks depth.

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?

Single sentence with no wasted words. Could benefit from slight expansion, but not overly verbose.

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?

Simple tool with one parameter and no output schema. Description is minimally complete but lacks details on return value (boolean, errors) and the specific spec. Acceptable for a straightforward validation 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% with description 'NM3 XML to validate'. Description adds no further meaning beyond schema, so baseline 3 is appropriate. No format, encoding, or size constraints mentioned.

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

Purpose4/5

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

The description clearly states the verb 'Validate' and the resource 'NM3 XML', and mentions compliance with a spec. It distinguishes from sibling tools like transform_to_nm3. However, 'spec' is vague without specifying which standard.

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?

No guidance on when to use this tool versus alternatives (e.g., after transformation, before further processing). No exclusions or prerequisites mentioned.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 7 tool updatesv1.0.0
    • First observedassemble_chunks
    • First observedclear_cache
    • First observedget_chunk_status
    • First observedget_performance_stats
    • First observedtransform_to_nm3
    • First observedtransform_to_nm3_chunked
    • First observedvalidate_nm3

TDQS

B3.3/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: transformation (normal and chunked), validation, assembly, cache management, status checking, and performance stats. The only potential overlap is between the two transform tools, but the chunked variant's purpose is explicitly differentiated.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., assemble_chunks, clear_cache, get_performance_stats, transform_to_nm3). The naming is predictable and uniform.

Tool Count5/5

With 7 tools, the set is well-scoped for a server focused on transforming markdown to NM3. Each tool serves a specific function in the workflow, and there are no extraneous or missing tools relative to the domain.

Completeness4/5

The tool set covers the core transformation lifecycle (normal and chunked), validation, and assembly, plus utility functions (cache, status, performance). A minor gap is the lack of a reverse conversion (NM3 to markdown), but this is not part of the stated purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MushroomFleet/Markdown3D-MCP'

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