INTEGRATIONS
MCP server
Connect an MCP-compatible AI assistant to Converge over Streamable HTTP or a local stdio bridge. URL, auth, tools, resources and config.
Overview
Converge runs a Model Context Protocol (MCP) server, so any MCP-compatible AI assistant can run Converge engines and read your saved projects. Your MCP client connects with an API key and acts as you: your permissions, your licences and your seats.
Connect
On Integrations > API keys, create a key with the
engine:runscope. Addprojects:readif the assistant should read projects.In your MCP client, add a remote server with this URL:
texthttps://<your-app-host>/v1/mcpAdd the header:
httpAuthorization: Bearer <your key>Ask it something, for example: "Run a nodal analysis for a 9,500 ft oil well at 3,200 psia and tell me the operating rate."
Integrations > AI assistants (MCP) shows the exact URL for your deployment and both configurations below, filled in.
Configuration
Remote server (URL)
For an MCP client that accepts a server URL and headers:
{
"mcpServers": {
"converge": {
"type": "http",
"url": "https://<your-app-host>/v1/mcp",
"headers": {
"Authorization": "Bearer ${CONVERGE_API_KEY}"
}
}
}
}Field names vary between MCP clients; what matters is the URL and the Authorization header. If your client does not read environment variables, replace ${CONVERGE_API_KEY} with the key.
Local bridge (stdio)
For an MCP client that only starts local servers, use the bridge: one file, no dependencies, Node.js 18 or later. Download it with Download bridge on the MCP tab, or from:
https://<your-app-host>/mcp/converge-mcp-bridge.mjs{
"mcpServers": {
"converge": {
"command": "node",
"args": ["/path/to/converge-mcp-bridge.mjs"],
"env": {
"CONVERGE_MCP_URL": "https://<your-app-host>/v1/mcp",
"CONVERGE_API_KEY": "cvg_your_key_here"
}
}
}
}The bridge reads newline-delimited JSON-RPC messages on stdin, posts each to the remote server with your key, and writes each response as one line on stdout. Diagnostics go to stderr. It exits if either environment variable is missing.
Transport
| Property | Value |
|---|---|
| Transport | Streamable HTTP, JSON-RPC 2.0 |
| Sessions | Stateless: no Mcp-Session-Id, every POST stands alone |
| Methods | POST only. GET and DELETE return 405. |
| Batches | 1 to 20 messages per POST |
| Body limit | 4 MB |
| Protocol versions | 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05 |
| Origin | When sent, it must be an allowed Converge origin (DNS-rebinding protection) |
The protocol version is negotiated on initialize: the client's version if supported, otherwise 2025-11-25. Later requests may send MCP-Protocol-Version; an unsupported value is a 400. A POST that holds only notifications or responses gets 202 with no body.
Supported methods: initialize, ping, tools/list, tools/call, resources/list, resources/templates/list, resources/read.
Tools
tools/list returns:
| Tool | Scope | What it does |
|---|---|---|
list_projects |
projects:read |
The company's saved projects: id, name, created and updated time, who updated it. |
get_project |
projects:read |
One project by id, with its model data as JSON. Large projects are truncated. |
| One tool per engine function | engine:run |
Every function in the Scripting SDK reference, with . replaced by _: pvt_blackOilTable, well_nodal, dca_fit, econ_cashFlow, data_validate and so on. |
| Project fluid-model tools | engine:run and projects:read |
eos_model_*: the AI Engineer's compositional tools, run read-only on a saved project's fluid models. They take a projectId. |
Each tool carries its JSON Schema input and is marked read-only and idempotent. Engine tools use field units (psia, degF, STB/d, Mscf/d, ft) unless the input sets "units": "metric". Unknown input keys are refused.
A tool result is text (cut at 100,000 characters; call the REST API for a larger result). For protocol 2025-06-18 and later, object results also come back as structuredContent.
When a tool fails (bad input, no seat, missing scope, out of range) the result has isError: true and a message with the error code, so the assistant can read it, fix the input and try again. An unknown tool or malformed params is a JSON-RPC error.
Resources
With projects:read, saved projects are resources:
converge://projects/{id}resources/list lists them; resources/read returns the project as application/json.
Seats and limits
Every call holds your Integrations seat, and an engine tool also holds its module's seat, exactly like opening the module in the app. Seats are released 3 minutes after the last call. If every seat is taken, the tool error names who holds them. MCP and REST share one rate limit: 120 requests a minute per key. See REST API.