Skip to content

MCP Servers

MESA bundles five MCP servers. Each wraps an existing CyVerse capability as a set of agent-callable tools so AI assistants can drive it through natural language.

At a glance

Server Language Wraps Transport Status
mesa-mcp Python iRODS + AVU + OBO/OLS ontologies + DuckLake stdio · SSE · Streamable-HTTP Pre-alpha
mesa-ducklake Python (library) AVU-history Lakehouse client — (consumed by mesa-mcp) Pre-alpha, functional
irods-mcp-server Go Generic iRODS access (public/anonymous + authenticated) stdio · SSE · Streamable-HTTP Public release
formation-mcp Go CyVerse Formation API — DE app launching, analyses, Data Store stdio · SSE Public release
terrain-mcp Node.js CyVerse Terrain API — apps, analyses, data, sharing stdio Public release

Choosing between them

The five servers overlap somewhat. Here's how to pick one (or several):

  • You want metadata reasoning with ontologies and time-travel — use mesa-mcp. It pulls in mesa-ducklake automatically for AVU history.
  • You only need plain iRODS file operations — use irods-mcp-server. Lighter weight, ships as a Docker image.
  • You want to launch apps on the CyVerse Discovery Environment from an agent — use formation-mcp for the higher-level Formation API, or terrain-mcp for direct Terrain API access.
  • Composing several at once is supported. MCP clients accept multiple servers; the agent picks the right tool for each step.

Transport modes

All MESA MCP servers support stdio for local AI clients (Claude Desktop, Claude Code, Cursor, etc.). The Go and Python servers also support SSE / Streamable-HTTP for remote and multi-user deployments behind a reverse proxy.

Mode When to use
stdio Local development; AI client launches the server as a subprocess
SSE Remote / web clients; multi-user; Claude.ai web
Streamable-HTTP Same as SSE for clients that prefer streaming HTTP

Hosted vs local

The MESA-led servers (mesa-mcp, mesa-ducklake, irods-mcp-server) ship in three deployment modes:

Mode Where it runs Best for
Hosted service A shared instance behind nginx + Let's Encrypt + OIDC Early adopters who want zero setup
Local on a workstation pip install into a venv; client launches it as stdio Power users; air-gapped data
Inside a CyVerse VICE app pip install into a JupyterLab / RStudio pod on the DE iRODS credentials already mounted

See each server's page for setup instructions.