Skip to main content

MCP server wrapping the ROBOT ontology CLI tool

Project description

ROBOT Ontology MCP

MCP server wrapping the ROBOT command-line tool for OWL ontology editing.

Prerequisites

ROBOT must be installed and available on your PATH:

robot --version

See ROBOT installation for setup instructions.

Installation

With uvx (recommended)

uvx robot-tool-mcp

From source

git clone https://github.com/<owner>/robot-mcp.git
cd robot-mcp
uv run robot-mcp

Claude Desktop Configuration

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "robot-mcp": {
      "command": "uvx",
      "args": ["robot-tool-mcp"]
    }
  }
}

Or for local development:

{
  "mcpServers": {
    "robot-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/robot-tool-mcp", "robot-mcp"]
    }
  }
}

Tools

Individual Command Tools (25 tools)

Each ROBOT command is exposed as a dedicated MCP tool with typed parameters:

Tool Description
robot_annotate Add metadata annotations to an ontology
robot_collapse Simplify class hierarchies by removing intermediates
robot_convert Transform ontology between formats (OWL, OBO, TTL, etc.)
robot_diff Compare two ontologies semantically
robot_expand Convert shortcut annotations into OWL axioms
robot_explain Debug inferred statements with minimal explanations
robot_export Generate tabular output (CSV, TSV, JSON, HTML, XLSX)
robot_extract Create a subset module (STAR, BOT, TOP, MIREOT)
robot_filter Selectively copy axioms (inverse of remove)
robot_materialize Assert inferred superclass relationships
robot_measure Compute ontology metrics and statistics
robot_merge Combine multiple ontologies into one
robot_mirror Cache imported ontologies locally
robot_query Execute SPARQL queries (SELECT, ASK, CONSTRUCT, UPDATE)
robot_reason Run OWL reasoner (ELK, HermiT, JFact, Whelk)
robot_reduce Remove redundant subClassOf axioms
robot_relax Convert equivalence axioms to subclass axioms
robot_remove Eliminate selected axioms (inverse of filter)
robot_rename Modify entity IRIs
robot_repair Fix common ontology problems
robot_report Run quality control checks with violation report
robot_template Convert tabular data (CSV/TSV) into OWL
robot_unmerge Remove axioms of one ontology from another
robot_validate_profile Check OWL 2 profile conformance (EL/RL/QL/DL)
robot_verify Check ontology against SPARQL rules

Chain Tool

The robot_chain tool pipelines multiple commands in a single ROBOT process. Ontology objects pass in-memory between steps — no intermediate files needed.

{
  "steps": [
    {"command": "merge", "input": ["edit.owl", "base.owl"]},
    {"command": "reason", "reasoner": "ELK"},
    {"command": "annotate", "ontology_iri": "https://example.org/my.owl"},
    {"command": "convert", "format": "ofn", "output": "result.owl"}
  ]
}

This produces a single CLI call:

robot merge --input edit.owl --input base.owl \
      reason --reasoner ELK \
      annotate --ontology-iri https://example.org/my.owl \
      convert --format ofn --output result.owl

Argument mapping rules:

  • Underscores become hyphens: ontology_iri--ontology-iri
  • Lists repeat the flag: {"input": ["a.owl", "b.owl"]}--input a.owl --input b.owl
  • Booleans become strings: true"true"

Common Workflows

Build a release:

{
  "steps": [
    {"command": "merge", "input": ["edit.owl"]},
    {"command": "reason", "reasoner": "ELK"},
    {"command": "relax"},
    {"command": "reduce", "reasoner": "ELK"},
    {"command": "annotate", "ontology_iri": "https://example.org/release.owl",
     "version_iri": "https://example.org/2024-01-01/release.owl"},
    {"command": "convert", "output": "release.owl"}
  ]
}

Extract a module:

{
  "steps": [
    {"command": "merge", "input": ["full-ontology.owl"]},
    {"command": "extract", "method": "BOT", "term": ["GO:0005634", "GO:0005737"]},
    {"command": "annotate", "ontology_iri": "https://example.org/module.owl"},
    {"command": "convert", "output": "module.owl"}
  ]
}

Quality check:

{
  "steps": [
    {"command": "merge", "input": ["edit.owl"]},
    {"command": "report", "fail_on": "ERROR", "output": "report.tsv"}
  ]
}

Global Options

All tools support these global options:

Option Description
catalog XML catalog file for resolving imports
prefixes JSON-LD prefix file
add_prefix Add individual prefixes (list)
noprefixes Disable default prefixes
verbose Enable verbose logging
strict Fail on unparsed triples
xml_entities Use XML entities in RDF/XML output
working_directory Working directory for file paths
extra_args Escape hatch for rarely-used flags (list of strings)

How to Contribute

  1. Fork the repository
  2. Create a feature branch from main:
    git checkout -b feature/your-feature
    
  3. Install dev dependencies:
    uv sync --dev
    
  4. Make your changes and ensure code quality:
    uv run ruff format src/
    uv run ruff check src/
    
  5. Commit your changes and push to your fork
  6. Open a Pull Request against main

The main branch is protected — all changes must go through a PR.

License

BSD 2-Clause License

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

robot_tool_mcp-1.2.2.tar.gz (91.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

robot_tool_mcp-1.2.2-py3-none-any.whl (31.8 kB view details)

Uploaded Python 3

File details

Details for the file robot_tool_mcp-1.2.2.tar.gz.

File metadata

  • Download URL: robot_tool_mcp-1.2.2.tar.gz
  • Upload date:
  • Size: 91.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for robot_tool_mcp-1.2.2.tar.gz
Algorithm Hash digest
SHA256 a2eea8a12598b895fc307f52145800dc3659cfaf7688cec65caf62df4af1f9c0
MD5 eeda1b7a224901ce1acfe6677580ffea
BLAKE2b-256 0be995909209adfab97460b976fab1db4ed77a140f63d67b1aa6ee6c86d961f2

See more details on using hashes here.

Provenance

The following attestation bundles were made for robot_tool_mcp-1.2.2.tar.gz:

Publisher: release.yml on musen-lab/robot-tool-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file robot_tool_mcp-1.2.2-py3-none-any.whl.

File metadata

  • Download URL: robot_tool_mcp-1.2.2-py3-none-any.whl
  • Upload date:
  • Size: 31.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for robot_tool_mcp-1.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e882423302a1be54e5019e6b3f44f965318ecd0580d0102911f7cff419fc1fac
MD5 bcd8b60220c9206f4d32541d7f56b728
BLAKE2b-256 db2a4836429a90569a19edd5af2fcaf57178d17c72091aca81f2b6cdda31cde5

See more details on using hashes here.

Provenance

The following attestation bundles were made for robot_tool_mcp-1.2.2-py3-none-any.whl:

Publisher: release.yml on musen-lab/robot-tool-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page