Skip to main content
Glama

Tiling Trees MCP Server

A Model Context Protocol (MCP) server implementing the Tiling Trees Method - a systematic approach to exploring solution spaces by recursively partitioning them into mutually exclusive and collectively exhaustive (MECE) subsets.

Based on the method described in The Tiling Tree Method.

What is the Tiling Trees Method?

The tiling trees method helps you systematically explore all possible solutions to a problem by:

  1. Starting with the complete solution space - all possible approaches to your challenge

  2. Splitting using MECE principles - divide into categories that don't overlap (Mutually Exclusive) but together cover everything (Collectively Exhaustive)

  3. Recursively subdividing - continue splitting each subset until you reach concrete ideas/projects

  4. Evaluating leaves - assess the viability of each concrete solution

The key insight: like tiles covering a wall completely without overlaps, your categories should partition the solution space with precision.

Related MCP server: Paperlib MCP

Why Use This Method?

  • Guarantees completeness: You won't overlook viable solutions

  • Forces creative thinking: Systematic exploration surfaces ideas you might not normally consider

  • Enables objective comparison: All solutions emerge from the same structured process

  • Identifies gaps: Missing categories become obvious

  • Evolves over time: Revisit trees as technologies and contexts change

Installation

npm install
npm run build

Configuration

Add to your MCP settings file (e.g., claude_desktop_config.json):

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

Core Concepts

Tiles

Each tile represents a subset of the solution space with a precise definition to avoid overlaps with siblings.

MECE Splits

When splitting a tile, choose an attribute/dimension that creates Mutually Exclusive and Collectively Exhaustive subsets:

  • Mutually Exclusive: No solution belongs to multiple categories

  • Collectively Exhaustive: Every solution belongs to exactly one category

Split Attributes

The dimension used to partition (examples):

  • Energy source: electric, chemical, mechanical, nuclear

  • Scale: nano, micro, meso, macro

  • Physical mechanism: conduction, convection, radiation

  • Timeframe: immediate, short-term, long-term

  • Cost: low, medium, high

Tip: Physics and math-oriented splits often work best because physical laws are concise and comprehensive.

Leaves

Terminal nodes representing concrete ideas or projects ready for evaluation.

Evaluation

Rate leaves on:

  • Impact (1-10): Potential effect if successful

  • Feasibility (1-10): Likelihood of success with available resources

  • Uniqueness (1-10): How novel compared to existing solutions

  • Timeframe: Expected development timeline

Available Tools

1. create_tree

Create a new tiling tree to explore a problem

Start by defining your challenge. The tree begins with a root tile representing all possible solutions.

{
  "name": "Transportation Decarbonization",
  "problemStatement": "How can we reduce carbon emissions in transportation by 80% by 2050?"
}

2. split_tile

Split a tile into MECE subsets (the core operation)

Choose a meaningful attribute and create categories that completely partition the parent space.

{
  "tileId": "root-tile-id",
  "splitAttribute": "Transportation mode",
  "splitRationale": "Different modes have distinct technical constraints and emission profiles",
  "subsets": [
    {
      "title": "Road vehicles",
      "description": "Cars, trucks, buses, motorcycles - vehicles operating on roads",
      "isLeaf": false
    },
    {
      "title": "Rail",
      "description": "Trains, trams, subways - vehicles on rails",
      "isLeaf": false
    },
    {
      "title": "Aviation",
      "description": "Airplanes, helicopters - atmospheric flight vehicles",
      "isLeaf": false
    },
    {
      "title": "Maritime",
      "description": "Ships, boats, ferries - water-based transport",
      "isLeaf": false
    }
  ]
}

3. mark_mece

Validate that a split is truly MECE

After creating a split, verify completeness and exclusivity.

{
  "tileId": "parent-tile-id",
  "isMECE": true,
  "coverageNotes": "Covers all major transportation modes. Edge cases like cable cars fall under 'Rail'. Space transport excluded as not relevant to 2050 target."
}

4. add_tiles_to_split

Add missing categories to an existing split

When you realize a category was missed, add it (invalidates MECE status).

{
  "parentId": "parent-tile-id",
  "newTiles": [
    {
      "title": "Pipeline transport",
      "description": "Movement of goods through pipelines (oil, gas, etc.)",
      "isLeaf": false
    }
  ]
}

5. evaluate_tile

Evaluate a leaf tile (concrete solution)

Assess viability with quantitative metrics.

{
  "tileId": "leaf-tile-id",
  "impact": 8,
  "feasibility": 6,
  "uniqueness": 4,
  "timeframe": "5-10 years",
  "notes": "High impact but faces infrastructure challenges",
  "calculationsOrPilots": "Pilot study in 3 cities showed 60% reduction in emissions"
}

6. get_coverage_analysis

Analyze solution space coverage

Identify unexplored branches, unvalidated splits, and next steps.

{
  "treeId": "tree-id"
}

Returns:

  • Tiles not yet split (exploration gaps)

  • Splits not validated for MECE

  • Leaves not evaluated

  • Coverage percentage

  • Suggestions for next steps

7. get_unexplored_tiles

Find gaps in your exploration

Get tiles that haven't been split yet.

8. get_top_leaves

Find the best solutions

Get highest-rated leaves by impact, feasibility, uniqueness, or combined score.

{
  "criteria": "combined",
  "limit": 10,
  "treeId": "tree-id"
}

9. export_tree

Export for visualization

Export in JSON, Markdown, Mermaid diagrams, or DOT (GraphViz) format.

{
  "treeId": "tree-id",
  "format": "mermaid"
}

Additional Tools

  • get_trees: List all tiling trees

  • get_tile: Get details of a specific tile

  • explore_path: Explore tree structure from a tile

  • get_leaf_tiles: Get all concrete ideas/projects

  • search_tiles: Search by content

  • update_tile: Update tile information

  • get_statistics: Overall statistics

10. validate_split_quality

Detect common antipatterns in a split

Automatically checks for:

  • Vague language: Imprecise terms like "natural", "traditional", "simple"

  • Catch-all buckets: Categories like "other" or "misc" that prevent exploration

  • Mixed dimensions: Splitting along inconsistent attributes

  • Retroactive splitting: Using pre-existing solution taxonomies instead of first principles

  • Incomplete coverage: Splits not validated for MECE

{
  "tileId": "parent-tile-id"
}

Returns:

  • Quality score (0-100)

  • List of issues with severity (error/warning)

  • Specific recommendations for improvement

11. get_tree_validation_report

Validate entire tree for quality

Get validation reports for all splits in a tree with an overall quality score.

{
  "treeId": "tree-id"
}

Common Failure Modes

Based on real-world usage, watch out for these antipatterns:

1. Retroactive Splitting (Taxonomy Import)

Problem: Starting with known solution types from literature locks you into existing categories.

Bad: Splitting "battery improvements" by {Li-ion optimizations, NiMH advancements, Lead-acid improvements} Good: Splitting by {chemistry type, electrode material, electrolyte state, architecture}

Why: Retroactive splitting only generates variations within known categories. First-principles splitting discovers fundamentally new possibilities.

2. Catch-All Buckets

Problem: Creating "other materials" or "miscellaneous" categories prevents systematic exploration.

Bad: {Silicon, Graphite, Lithium metal, Other materials} Good: {Crystalline, Amorphous, Composite, Layered}

Why: You can't split "everything else" systematically. If you don't know what belongs in a category, the split dimension needs revision.

Use validate_split_quality to automatically detect catch-all buckets (error severity).

3. Vague Language ("Words That Mean Nothing")

Problem: Terms like "natural", "forced", "traditional" lack physical precision and create unavoidable overlaps.

Bad: {Natural cooling, Forced cooling} Good: {Passive convection, Active forced-air, Liquid cooling, Phase-change}

Why: "Natural" doesn't map to unique physical properties - it could mean many things. Use measurable properties instead.

Use validate_split_quality to automatically flag vague terms (warning severity).

4. Mixed Dimensions (Category Errors)

Problem: Splitting along inconsistent dimensions creates inherent overlaps.

Bad: Vegetables classified as {Red ones, Sweet ones, Crunchy ones} - mixing color, taste, and texture Good: Split by ONE dimension: {Root, Stem, Leaf, Fruit, Flower} OR {Raw-edible, Requires-cooking}

Why: One vegetable can be red AND sweet AND crunchy. Categories must be mutually exclusive.

Use validate_split_quality to detect mixed dimension warnings.

5. Incomplete Coverage

Problem: Missing possibilities in the split leaves gaps unexplored.

Solution: Always validate splits with mark_mece and use get_coverage_analysis to find gaps.

Validation Workflow

After creating splits, validate quality:

// Check a specific split
validate_split_quality({
  tileId: "<parent-tile-id>"
})

// Response:
{
  "score": 70,
  "issues": [
    {
      "type": "vague_language",
      "severity": "warning",
      "message": "Tile 'Advanced materials' uses vague term 'advanced'",
      "suggestion": "Replace 'advanced' with measurable properties..."
    }
  ],
  "recommendations": [
    "Replace vague terms with measurable physical properties"
  ]
}

// Check entire tree
get_tree_validation_report({
  treeId: "<tree-id>"
})

// Response includes overall score and all split reports

Workflow Example

Problem: Improve battery energy density

Step 1: Create the tree

create_tree({
  name: "Battery Energy Density Improvements",
  problemStatement: "How can we increase battery energy density by 3x?"
})

Step 2: First split - by chemistry

split_tile({
  tileId: "<root-id>",
  splitAttribute: "Battery chemistry",
  splitRationale: "Fundamental chemistry determines theoretical energy density limits",
  subsets: [
    { title: "Lithium-based", description: "Li-ion, Li-polymer, Li-metal, Li-S, Li-air" },
    { title: "Sodium-based", description: "Na-ion and variants" },
    { title: "Metal-air", description: "Zn-air, Al-air (excluding Li-air)" },
    { title: "Solid-state", description: "Solid electrolyte batteries (any chemistry)" },
    { title: "Alternative chemistries", description: "Mg, Ca, multivalent ion, organic" }
  ]
})

Step 3: Validate MECE

mark_mece({
  tileId: "<root-id>",
  isMECE: true,
  coverageNotes: "Covers main battery chemistry families. Some overlap (e.g., Li-air could be 'metal-air'), resolved by treating Li as primary classifier."
})

Step 4: Continue splitting

Split "Lithium-based" by approach:

  • Electrode material improvements

  • Electrolyte improvements

  • Cell architecture innovations

  • Manufacturing process optimizations

Step 5: Reach leaves and evaluate

When you reach concrete ideas:

evaluate_tile({
  tileId: "<silicon-anode-id>",
  impact: 9,
  feasibility: 7,
  uniqueness: 5,
  timeframe: "2-3 years",
  calculationsOrPilots: "Lab tests show 40% capacity increase; volume expansion remains challenge"
})

Step 6: Analyze coverage

get_coverage_analysis({ treeId: "<tree-id>" })

Step 7: Find top solutions

get_top_leaves({
  criteria: "combined",
  limit: 5,
  treeId: "<tree-id>"
})

Best Practices

1. Define Precisely

Write explicit definitions for each tile to ensure no overlaps. Be mathematical/physical when possible.

Good: "Electric vehicles using only battery power (no combustion engine)" Bad: "Clean cars"

2. Choose Good Split Attributes

  • Prefer physics/math-based dimensions

  • Ensure the attribute creates natural, complete partitions

  • Document rationale for future reference

3. Validate MECE Rigorously

  • Check for overlaps between sibling tiles

  • Verify all possibilities are covered

  • Document edge cases

4. Split to Appropriate Depth

  • Don't stop too early (you'll miss solutions)

  • Don't go too deep too fast (you'll lose the forest for the trees)

  • Leaf nodes should be concrete enough to evaluate

5. Evaluate Honestly

  • Base ratings on data when possible

  • Document assumptions

  • Include calculations or pilot results

  • Be consistent across evaluations

6. Revisit Periodically

  • Technologies evolve

  • Contexts change

  • Previously unviable branches may become promising

Tips for AI Assistants Using This MCP

When helping users with tiling trees:

  1. Start with problem clarification - ensure the problem statement is specific

  2. Suggest physics/math splits when applicable - avoid retroactive splitting from known solutions

  3. Run validation after splits - use validate_split_quality to catch antipatterns early

  4. Flag vague language - watch for terms like "natural", "traditional", "advanced"

  5. Prevent catch-all buckets - never allow "other" or "misc" categories

  6. Enforce single dimensions - ensure each split uses one consistent attribute

  7. Encourage precision - push for measurable properties and explicit definitions

  8. Use coverage analysis - regularly check for unexplored areas

  9. Balance breadth and depth - explore widely before going deep

  10. Prompt evaluation - remind users to rate leaves with calculations/pilots, not just intuition

Proactive Validation: After each split, automatically run validate_split_quality and present any issues with constructive suggestions. This helps users learn the method correctly.

Integration with Web Interface

This MCP server complements the tiling-trees web interface. Use the server for:

  • Systematic exploration and validation

  • Programmatic tree construction

  • Coverage analysis

  • Bulk operations

Use the web interface for:

  • Visual exploration

  • Presentations

  • Collaborative sessions

  • Quick modifications

Export from MCP → Import to web interface for best of both worlds.

Example Split Attributes by Domain

Engineering/Physical

  • Energy source

  • Scale (nano/micro/macro)

  • Physical mechanism

  • Material type

  • Phase (solid/liquid/gas/plasma)

Business/Strategy

  • Market segment

  • Revenue model

  • Geographic region

  • Customer type

  • Distribution channel

Software/Computing

  • Architecture pattern

  • Data structure

  • Computational complexity class

  • Deployment model

  • Interface type

Research/Science

  • Methodology (experimental/theoretical/computational)

  • Organism/system type

  • Time scale

  • Spatial scale

  • Measurement technique

Troubleshooting

Q: My split has overlaps - what do I do? A: Refine definitions to make categories mutually exclusive. Sometimes this means choosing a different split attribute.

Q: I can't cover everything with my categories A: Add an "Other" category temporarily, then revisit with a better split attribute that creates natural, complete partitions.

Q: How do I know when to stop splitting? A: Stop when you reach concrete, evaluable ideas/projects. If a tile is still too abstract to assess impact/feasibility, keep splitting.

Q: Can I have multiple trees for the same problem? A: Yes! Different split strategies yield different insights. Compare trees to find the most useful partitioning.

License

MIT

References

Available Tools

18 tools
add_tiles_to_splitA

Add additional tiles to an existing split (when you realize a category was missed). This invalidates the MECE validation and requires re-verification.

Inputs: parentId (required), newTiles (required).

create_treeA

Create a new tiling tree to explore a problem/challenge. The tree starts with a root tile representing the complete solution space, which you'll then split recursively using MECE (Mutually Exclusive, Collectively Exhaustive) principles.

Inputs: name (required), problemStatement (required).

evaluate_tileC

Evaluate a leaf tile (concrete idea/project) on impact, feasibility, and uniqueness. Include any calculations or pilot studies performed.

Inputs: tileId (required), impact, feasibility, uniqueness, +3 more.

explore_pathC

Explore the tree structure from a specific tile, showing the hierarchical breakdown

Inputs: tileId (required), depth.

export_treeC

Export a tiling tree in various formats for visualization or documentation

Inputs: treeId (required), format (required).

get_coverage_analysisC

Analyze the completeness of solution space exploration for a tree. Shows unexplored branches, unvalidated splits, and suggestions for next steps.

Inputs: treeId (required).

get_leaf_tilesC

Get all leaf tiles (concrete ideas/projects) from a tree

Inputs: treeId.

get_statisticsB

Get overall statistics about all tiling trees

Inputs: no named parameters.

get_tileC

Get details of a specific tile

Inputs: tileId (required).

get_top_leavesC

Get the highest-rated leaf tiles based on evaluation criteria

Inputs: criteria (required), limit, treeId.

get_treesC

Get all tiling trees

Inputs: no named parameters.

get_tree_validation_reportA

Get validation report for all splits in a tree. Identifies antipatterns and provides an overall quality score. Use this after building a tree to check for common failure modes.

Inputs: treeId (required).

get_unexplored_tilesB

Get tiles that haven't been split yet - these are gaps in your solution space exploration

Inputs: treeId.

mark_meceC

Mark a split as validated for MECE (Mutually Exclusive, Collectively Exhaustive) properties. Verify that the children completely cover the parent space with no overlaps.

Inputs: tileId (required), isMECE (required), coverageNotes.

search_tilesC

Search for tiles by content

Inputs: query (required), treeId.

split_tileB

Split a tile into MECE (Mutually Exclusive, Collectively Exhaustive) subsets using a specific attribute/dimension. This is the core operation of the tiling trees method - partitioning the solution space systematically. Use physics/math-oriented splits when possible.

Inputs: tileId (required), splitAttribute (required), splitRationale (required), subsets (required).

update_tileC

Update a tile's information (title, description, split attributes, etc.)

Inputs: tileId (required), title, description, splitAttribute, +2 more.

validate_split_qualityA

Validate split quality and detect common antipatterns (vague language, catch-all buckets, mixed dimensions, retroactive splitting, incomplete coverage). Returns a detailed quality report with issues and recommendations.

Inputs: tileId (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 18 tools

    Disambiguation4/5

    Most tools have distinct purposes, such as create_tree for tree creation, split_tile for splitting, and evaluate_tile for evaluation. However, get_coverage_analysis and get_unexplored_tiles both focus on identifying gaps in exploration, which could cause slight confusion, though their descriptions help differentiate them.

    Naming Consistency5/5

    Tool names follow a highly consistent verb_noun pattern throughout, such as create_tree, split_tile, and evaluate_tile. All tools use snake_case and clear action-oriented verbs, making the set predictable and easy to understand.

    Tool Count4/5

    With 18 tools, the count is slightly high but reasonable for the domain of tiling tree management, covering operations like creation, splitting, evaluation, validation, and analysis. It supports comprehensive workflows without being overly bloated, though it borders on the heavier side.

    Completeness5/5

    The tool set provides complete coverage for the tiling tree domain, including CRUD-like operations (create_tree, get_trees, update_tile), core methods (split_tile, mark_mece), evaluation (evaluate_tile), validation (validate_split_quality, get_tree_validation_report), and analysis (get_coverage_analysis, get_statistics). No obvious gaps exist for systematic solution space exploration.

    Maintenance

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables AI-powered academic research workflow from keyword search to hypothesis generation. Integrates multiple AI models to automatically search ArXiv papers, extract key information, and generate innovative research hypotheses for researchers.
      2
      -
    • F
      license
      C
      quality
      B
      maintenance
      Enables academic literature management through PDF import, hybrid search, knowledge graph construction, and automated literature review generation. Combines full-text search with semantic vector search for comprehensive paper analysis.
      55
      -