Oceanum MCP
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DATAMESH_TOKEN | Yes | Oceanum API token (shared by all servers) | |
| OCEANUM_DOMAIN | No | Override the base domain for all services (default: oceanum.io) | oceanum.io |
| STORAGE_SERVICE | No | Custom storage service URL (default: https://storage.oceanum.io) | https://storage.oceanum.io |
| DATAMESH_SERVICE | No | Custom 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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": false,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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 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:
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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 13 tools
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.
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.
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.
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.