Skip to main content
Glama
oceanum-io

Oceanum MCP

Official
by oceanum-io

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DATAMESH_TOKENYesOceanum API token (shared by all servers)
OCEANUM_DOMAINNoOverride the base domain for all services (default: oceanum.io)oceanum.io
STORAGE_SERVICENoCustom storage service URL (default: https://storage.oceanum.io)https://storage.oceanum.io
DATAMESH_SERVICENoCustom datamesh service URL (default: https://datamesh.oceanum.io)https://datamesh.oceanum.io

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": true
}
resources
{
  "subscribe": false,
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
datamesh_search_catalogA

Search the Oceanum Datamesh catalog for datasets.

Catalog search only covers datasources accessible to the credentials used for this request; a datasource missing from the results either does not exist or is not accessible with these credentials, so do not report it as nonexistent.

datamesh_get_datasource_infoA

Get the metadata for one datasource: coverage, coordinates and variables.

The default view keeps every field of the full record but reduces each variable and coordinate to its dims, shape, dtype, units, long_name and standard_name, clips the description and long attribute values, caps global attributes. On very large records it sheds attributes and then per-variable details (the note says which), but every variable name is always listed.

datamesh_stage_queryA

Dry-run a query: report the result size WITHOUT downloading any data.

Always stage before retrieving data you have not sized. The response says whether the result is small enough for query_data to return inline, and echoes the canonical query. With limit plus time_resolution or aggregate_operations the reported size is that of the unlimited result (limit is applied after resampling), so it is an upper bound.

A variable given as the exact CF standard_name of exactly one of the datasource's variables (e.g. "sea_surface_wave_significant_height" for "hs") is resolved to that variable; the response then includes resolved_variables ({requested: used}) and echoes the resolved names.

datamesh_query_dataA

Query a datasource and return small results inline.

The query is staged first; results larger than the inline limit are not downloaded (datasets are summarized lazily, tabular queries are refused with alternatives), and results above 1 GB are refused with narrowing advice and each variable's dims, unless limit is combined with time_resolution/aggregate_operations (the limited slice may be small, so a dataset is then opened lazily). Use stage_query to size a query before calling this.

Inline values are a preview when preview is true (returned of total records): never compute statistics from a preview; use aggregate_operations or time_resolution instead.

limit keeps the last N records (Datamesh semantics: the last N steps along time/ensemble). Combined with time_resolution or aggregate_operations, limit is applied by this server AFTER resampling/aggregation (to the last N resampled steps, or the last N rows of a table) rather than sent to Datamesh. A limited result is a subset of the requested range, so it is flagged as a preview, with a limit_note.

A variable given as the exact CF standard_name of exactly one of the datasource's variables (e.g. "sea_surface_wave_significant_height" for "hs") is resolved to that variable; the response then includes resolved_variables ({requested: used}) and echoes the resolved names.

datamesh_export_queryA

Export the FULL result of a query — the data never enters the conversation.

Behavior depends on how the server is running:

  • Hosted (http/sse): returns a time-limited, self-authenticating gateway download_url (choose format via format); path is ignored. Fetch the URL out-of-band — it needs no credential, so treat it as a secret. When the response includes expires_at or max_uses, fetch it before expires_at and at most max_uses times. Refused above the hosted export cap, and for limit combined with time_resolution/aggregate_operations.

  • Local (stdio): writes the result to the local file path (required) and returns that path. Gridded datasets stream to NetCDF; tabular results write Parquet or CSV, as do datasets small enough to flatten into a table (e.g. point time series). Refused up front if the result exceeds the local export cap or the destination's free disk space. With limit plus time_resolution/aggregate_operations, the last N resampled steps are written.

The size is checked before anything is exported, whether or not stage_query was called. An export writing more than 1 GB in the chosen format (CSV text is about 3x; locally, a dataset written as CSV/Parquet is sized as the flattened table, and a limited one on its limited slice) is refused unless confirm_size_bytes equals that size (on hosted, within 5%, since the download stage is sized separately): ask the user first. The refusal states the exact value. The server cannot see whether the user was asked, so this is advisory: it forces an explicit, size-aware step. The export caps limit the transfer, not the size of each file: never split a refused request into parts to get under them.

A variable given as the exact CF standard_name of exactly one of the datasource's variables (e.g. "sea_surface_wave_significant_height" for "hs") is resolved to that variable; the response then includes resolved_variables ({requested: used}) and echoes the resolved names.

datamesh_load_datasourceA

Summarize an entire datasource.

Gridded datasources are opened lazily (no data download). Tabular datasources are downloaded only if under the inline size limit; use query_data with filters to retrieve larger ones.

datamesh_update_metadataA

Update metadata properties on an existing datasource.

Only the provided fields will be updated; others remain unchanged. Not available when the server runs with OCEANUM_MCP_READ_ONLY set.

storage_list_filesC

List files and directories in Oceanum cloud storage.

storage_file_existsB

Check if a file or directory exists in Oceanum storage.

storage_read_fileB

Read the contents of a text file from Oceanum storage.

storage_write_fileA

Write text content to a file in Oceanum storage.

Creates the file if it doesn't exist, overwrites if it does.

storage_delete_fileC

Delete a file or directory from Oceanum storage.

storage_file_infoB

Get metadata about a file or directory in Oceanum storage.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.7/5.0

Scored across 13 tools

Disambiguation4/5

The data-access tools are clearly tiered by role: search_catalog finds datasources, get_datasource_info/stage_query inspect metadata and size, query_data returns inline previews, and export_query offloads large results. The only real friction is load_datasource ('summarize an entire datasource') versus get_datasource_info ('metadata for one datasource'), which can look interchangeable at a glance, plus the storage_file_exists/storage_file_info pair.

Naming Consistency4/5

Every name is snake_case with a clear domain prefix (datamesh_/storage_) and most follow verb_noun (query_data, export_query, stage_query, list_files, read_file, delete_file). The deviations are minor: load_datasource rather than get_datasource, and the noun-first storage_file_exists/storage_file_info.

Tool Count5/5

Thirteen tools split cleanly into two domains (7 datamesh, 6 storage), each earning its place in the query/export workflow. Nothing feels redundant or padded at this size.

Completeness4/5

The data pipeline is covered end-to-end (discover → inspect → stage → query → export → update metadata) and storage has full create/read/list/delete/stat coverage. Gaps remain: no datasource creation or deletion, no storage copy/move, and metadata updates are the only write path for the catalog.

Maintenance

ActivityMaintained
ResponsivenessUnresponsive