Skip to content

Devin

Devin (Cognition) can reach the Datamesh MCP server in three ways:

  • Cloud agent, hosted server — Devin’s cloud agent connects to the remote Datamesh endpoint over HTTP. This is the recommended mode for Devin.
  • Cloud agent, local server — Devin’s cloud agent runs the Datamesh server itself over stdio, for full read/write. “Local” here means local to Devin’s cloud machine, not your computer.
  • Devin CLI (“Devin for Terminal”) — runs the local server on your own machine from a config file.

The cloud agent’s MCP servers are managed on the Customize → MCPs tab. Adding a custom server needs the Manage MCP Servers permission; if you don’t have it, ask an organisation admin or use Suggest MCP Integration.

First, store your Datamesh token as a Devin secret named DATAMESH_TOKEN, so the token itself isn’t typed into the server form. Then:

  1. Open Customize → MCPs, choose Add MCP, then Add custom MCP.
  2. Fill in the form as shown in the table below.
  3. Click Save, then Test tools. Devin connects and lists the Datamesh tools (such as search_catalog and query_data); if the test fails, the error says whether the problem is connectivity, authentication or a timeout.
FieldValue
Server NameOceanum Datamesh
IconOptional
Short DescriptionSearch and query Oceanum Datamesh ocean and weather data
Transport typeHTTP
Server URLhttps://mcp.oceanum.io/datamesh
Authentication methodAuth Header
Header keyX-DATAMESH-TOKEN (replace the default Authorization)
Header valueA reference to the DATAMESH_TOKEN secret (see below)

Alternative — bearer token. The hosted server also accepts a Datamesh token as a bearer credential, so you can leave the header key as the default and use:

FieldValue
Header keyAuthorization
Header valueBearer followed by a reference to the DATAMESH_TOKEN secret

Referencing the secret. Devin’s current MCP documentation says to store tokens as secrets and reference them from the server configuration, but doesn’t give the syntax. Devin’s changelog (28 July 2025) documents the form $SECRETNAME, so the header value is $DATAMESH_TOKEN (or Bearer $DATAMESH_TOKEN for the alternative). If the form offers a secret picker for the header value, use that instead. Either way, click Test tools straight after saving: a reference that doesn’t resolve shows up immediately as an authentication error rather than in a later session.

Devin’s MCP documentation gives a JSON form of each custom server’s settings for API-based or programmatic setups; in the web app you enter the same values in the form above. The hosted Datamesh server in that format is shown below. $DATAMESH_TOKEN stands for the secret reference described above; in an API or programmatic setup, secret substitution follows Devin’s API documentation.

{
"transport": "HTTP",
"url": "https://mcp.oceanum.io/datamesh",
"auth_method": "auth_header",
"headers": {
"X-DATAMESH-TOKEN": "$DATAMESH_TOKEN"
}
}

For the Devin CLI, which reads JSON config files directly, the hosted server can be pasted into .devin/mcp_config.local.json:

{
"mcpServers": {
"oceanum-datamesh-hosted": {
"url": "https://mcp.oceanum.io/datamesh",
"transport": "http",
"headers": { "X-DATAMESH-TOKEN": "your-datamesh-token" }
}
}
}

The Devin CLI also imports MCP servers from other tools’ config files it finds, such as Cursor’s .cursor/mcp.json and Claude Code’s .mcp.json, so a Datamesh server already set up for Cursor or Claude Code is picked up by default (controlled by the CLI’s read_config_from setting).

Once saved, start a session and ask Devin to use the server, for example:

Use the Oceanum Datamesh MCP server to find datasources with significant wave
height covering the Hauraki Gulf, and summarise their time coverage and
resolution.

Devin should call search_catalog to find candidate datasources and get_datasource_info to read their coverage, then summarise the results. From there you can ask for a time series at a point, which Devin retrieves with query_data.

  • Auth Header with X-DATAMESH-TOKEN (or Authorization: Bearer), as above, is the supported method.
  • OAuth (“sign in”) is not yet available for Devin. The hosted sign-in flow currently allowlists only Anthropic’s Claude clients, so Devin’s OAuth cannot complete against the Datamesh server until its callback is registered on the Oceanum identity tenant. Contact Oceanum if you need this enabled.

The hosted server is read-only and returns query_data results inline (up to ~50 MB). For larger results, Devin can call export_query, which on the hosted server returns a time-limited download link to the full result — the link needs no token, so treat it like a password. The Devin CLI below instead writes export_query output to a file.

Use the hosted server unless you need what only the local server offers: write access, or export_query files written inside Devin’s workspace. A custom STDIO server runs inside Devin’s cloud sandbox, not on your computer, so:

  • uv must be available in Devin’s environment (install it in your Devin environment setup if it isn’t).
  • The token must reach Devin’s machine. Store it as a Devin secret rather than relying on anything set on your own laptop, and reference it from the server’s environment variables.
  • export_query writes its files on Devin’s machine. Ask Devin to commit, upload or otherwise hand back the file if you need it.
  1. In Customize → MCPs, choose Add MCP, then Add custom MCP.
  2. Set Server Name to Oceanum Datamesh (local) and the transport type to STDIO.
  3. Set Command to uvx and Arguments to --python 3.13 oceanum-mcp datamesh.
  4. Add an environment variable DATAMESH_TOKEN whose value references the Devin secret created above — $DATAMESH_TOKEN, or the secret picker if the form offers one (see Referencing the secret).
  5. Click Save. Test tools isn’t available for STDIO servers; click Use MCP to start a session that exercises the server.

The equivalent JSON, in the form Devin’s documentation uses, is:

{
"transport": "STDIO",
"command": "uvx",
"args": ["--python", "3.13", "oceanum-mcp", "datamesh"],
"env_variables": {
"DATAMESH_TOKEN": "$DATAMESH_TOKEN"
}
}

Here $DATAMESH_TOKEN stands for a reference to the Devin secret named DATAMESH_TOKEN, in the changelog-documented form described above. The --python 3.13 argument has uv run the server on Python 3.13 (downloading it if needed), as some of the server’s dependencies don’t yet install on Python 3.14.

The Devin CLI runs on your own machine and adds MCP servers from .devin/mcp_config.local.json (gitignored, so your token stays out of version control). Run the Datamesh server locally over stdio for full read/write:

{
"mcpServers": {
"oceanum-datamesh-local": {
"command": "uvx",
"args": ["--python", "3.13", "oceanum-mcp", "datamesh"],
"env": { "DATAMESH_TOKEN": "your-token-here" }
}
}
}

Replace your-token-here with your Datamesh token. This requires uv on your PATH. The --python 3.13 argument has uv run the server on Python 3.13 (downloading it if needed), as some of the server’s dependencies don’t yet install on Python 3.14. The local server gives full read/write and has export_query write results straight to a file on your machine. Check the server is picked up with devin mcp list. Remote MCP servers that use OAuth are added instead with devin mcp login <name>.

CLI versions before v3000.3 read MCP servers from the mcpServers key of .devin/config.local.json instead; newer versions move any entries there to .devin/mcp_config.local.json automatically.

Your Datamesh token grants access to all of your organisation’s permissioned datasources — including the ability to modify or delete them. Treat it as a secret, and prefer the hosted read-only server for exploratory use.