Hex MCP Server lets AI agents analyze data in Hex through natural-language Threads, search projects, retrieve analysis results and visualizations, and— with editing access—create, edit, and run SQL, Python, and Markdown notebooks.
Encrypted at rest, isolated from the model
Resolved from an AES-256-GCM vault at the moment of the call and attached to the request — the model never sees the secrets.
Try asking
Search for projects
Create a new Hex Thread to ask a question about your data. Hex will use its Threads Agent to analyze your data and then provide a response. The thread will take a few minutes to complete - you should warn the user about this. While the thread is running, you MUST call the `get_thread` tool to poll its status. Keep calling `get_thread` until the status is IDLE or you have polled 30 times before giving a final answer to the user. Once the thread is complete (status is IDLE), you can use the `continue_thread` tool to add follow-up questions or continue the conversation.
Fetch a Hex Thread using its ID. You can get an ID when you call the `create_thread` tool. If the thread is not finished yet, it will sleep for a number of seconds before returning the messages. You should warn the user about this. Once the thread is complete (status is IDLE), you can use the `continue_thread` tool to add follow-up questions or continue the conversation.
Continue a Hex Thread by adding a new message and triggering the agent to process it. The thread must be in IDLE status to be continued. If the thread is currently running, this will return an error. The thread will take a few minutes to complete - you should warn the user about this. While the thread is running, you MUST call the `get_thread` tool to poll its status. Keep calling `get_thread` until the status is IDLE or you have polled 30 times before giving a final answer to the user.
Get a single cell by ID
Get the latest output preview for a SQL cell in the active draft notebook session.
Create a new cell in the draft version of a project. For SQL cells that query a warehouse, reuse the dataConnectionId of an existing SQL cell in the project (`list_cells` returns it), falling back to `list_data_connections` to resolve one by name (or set isDataframeSql). Do not invent connection ids.
List cells from the draft version of a project. Returns code, SQL, and markdown cell contents.
Update a cell's source and/or data connection. For SQL cells, can update the SQL source, output dataframe, and data connection. Take a warehouse dataConnectionId from an existing SQL cell in the project or from `list_data_connections` before attaching one. If an id later fails, re-list connections before retrying. Returns the updated cell.
Delete a cell from the draft version of a project by ID
Run a cell and its upstream dependencies in the draft (notebook) version of a project. The run is asynchronous: for SQL cells, poll `get_cell_output` every 5 seconds to read the result or error. The returned runId identifies the long-running draft session and may correlate with earlier cell runs, so an early poll can still return the previous execution's output — after editing a cell, verify the output reflects the latest source.
Get the rendered PNG image of a chart cell, returned as an image. The cell must live in its project's draft version, must have been executed, and must not be in an error state. Only chart-type cells are supported. `get_thread` reports the cellId of each chart in a thread that can be fetched this way. Omit width and height unless you need more detail: the default image is tens of kilobytes, while the maximum 2000x2000 can exceed 500KB for a dense chart. Request one chart at a time.
Create a new project in the workspace with the specified title, and optionally a description.
Get metadata about a single project.
Get the status of a project run.
Trigger a run of the draft (notebook) version of a project. The run is asynchronous: poll `get_run` with the returned runId every 5 seconds until the status is terminal (COMPLETED, ERRORED, KILLED, or UNABLE_TO_ALLOCATE_KERNEL). The runId identifies the long-running draft session and may correlate with earlier runs of the project, so if the project ran recently, confirm the reported startTime is at or after this call before trusting a terminal status.
List the workspace's data connections. Use this to resolve a connection name to a dataConnectionId before creating or updating a SQL cell with `create_cell` or `update_cell`. Results are paginated: pass the returned `pagination.after` cursor to fetch the next page, and stop when it comes back null. If a listed id later fails, re-list before retrying — the connection may have been removed or become inaccessible.
Returns information about the current logged in user.
One endpoint, the same key, whichever client you use.
~/Library/Application Support/Claude/claude_desktop_config.json (Mac) · %APPDATA%\Claude\claude_desktop_config.json (Windows)
Replace API_KEY with your own key.
Already have an "mcpServers" section in your config? Just add the server entry inside it.
Discovery, routing, credentials, tool scoping and execution logs all happen at the gateway→connections stay ACTIVE with no work from you
Hex MCP runs through a gateway that holds the credentials, scopes the access and records every call.
Managed auth, hosted MCP servers, and every Gmail tool your agent needs.
Free to start.