Xata MCP server
officialThe Xata MCP server lets AI assistants and agents interact with your Xata organizations, projects, and Postgres database branches.
What can you do with Xata MCP?
- Verify your identity — ask the assistant to confirm who you’re authenticated as using
user_info. - Explore your database schema — have the assistant list tables and columns in a branch with
describe_schema. - Run read-only SQL queries — ask the assistant to execute
run_sqlagainst a branch to analyze your data. - Look up API operations — use
search_operationsto find the right Xata REST API endpoint by describing your intent. - Invoke read API calls — let the assistant fetch resources via
call_read_operationafter describing the operation. - Search Xata documentation — ask the assistant to find relevant docs using
search_xataor read a specific page by path.
Documentation
Skip to main content
The Xata MCP server lets AI assistants and agents interact with your Xata organizations, projects, and branches using the Model Context Protocol (MCP).
What is the Xata MCP server?
- A hosted MCP server that runs alongside the Xata API — there is nothing to install or run locally.
- Authenticated via OAuth in your browser, or with a Xata API key for headless environments.
- Accessible from any MCP client that supports remote servers over Streamable HTTP.
Server URL:
https://api.xata.tech/mcp
The server uses the Streamable HTTP transport. There is no SSE endpoint and no local (npm) version of the server.
Authentication
The MCP server supports two authentication methods:
| Method | Use when | Client requirement |
|---|---|---|
| OAuth | Interactive use in an editor/chat | Support for MCP OAuth (dynamic client registration) |
| API key | Automation, CI, headless agents | Support for custom HTTP headers |
OAuth
With OAuth-capable clients, you only need the server URL. When your client connects for the first time, it registers itself with Xata, opens a browser window, and asks you to sign in to your Xata account and approve access. Tokens are short-lived and scoped to the MCP server.
API key
Clients that support custom headers can authenticate with a Xata API key instead:
Authorization: Bearer YOUR_XATA_API_KEY
Create a dedicated API key for MCP access rather than reusing an existing key. Store it in an environment variable or your client’s secret storage — never commit it to source control.
Set up your MCP client
Cursor
Cursor offers a deep link for quick OAuth setup:Add to Cursor
Alternatively, you can add it manually:
- Open the command palette and search for “Cursor Settings”.
- Under Tools & MCP, click New MCP Server.
- Add the Xata server to the configuration file that opens:
.cursor/mcp.json
{
"mcpServers": {
"xata": {
"url": "https://api.xata.tech/mcp"
}
}
}
- Save the file. Cursor prompts you to authenticate — follow the browser flow and approve access to your Xata account.
Claude Code
Add the server from your terminal:
claude mcp add --transport http xata https://api.xata.tech/mcp
Then start Claude Code and run the /mcp slash command. Select the xata server and follow the browser instructions to authenticate. To use an API key instead of OAuth (for example, in CI):
claude mcp add --transport http xata https://api.xata.tech/mcp
--header "Authorization: Bearer YOUR_XATA_API_KEY"
VS Code
MCP servers in VS Code require the GitHub Copilot and GitHub Copilot Chat extensions.
- Open the Command Palette (
Cmd+Shift+P/Ctrl+Shift+P). - Run MCP: Add Server and choose HTTP.
- Enter
https://api.xata.tech/mcpas the URL andxataas the name.
Alternatively, add it to your configuration manually:
.vscode/mcp.json
{
"servers": {
"xata": {
"type": "http",
"url": "https://api.xata.tech/mcp"
}
}
}
Start the server from MCP: List Servers and allow it to authenticate when prompted.
Claude (web and desktop)
Add Xata as a custom connector:
- Go to Settings → Connectors.
- Click Add custom connector.
- Enter
https://api.xata.tech/mcpas the server URL and click Add. - Follow the prompts to sign in with your Xata account.
Custom connectors using remote MCP are not available on all Claude plans, and may require an organization owner to add them on team plans. See the Claude documentation for details.
ChatGPT
Connect ChatGPT to Xata using a custom connector:
- In ChatGPT, go to Settings → Connectors → Advanced settings and enable Developer mode.
- On the Connectors tab, create a new connector with the server URL:
https://api.xata.tech/mcp
- Choose OAuth for authentication and complete the authorization flow when prompted.
- In each chat where you want to use Xata, click the + button and enable the Xata connector under Add sources.
Codex CLI
Add the Xata server:
codex mcp add xata --url https://api.xata.tech/mcp
The add command may open a browser and report an OAuth error. If that happens, continue with the login command below; the xata server entry has already been saved.
Authenticate with Xata using explicit OAuth scopes:
codex mcp login xata --scopes mcp-client,offline_access
Complete authorization in the browser. The offline_access scope allows Codex to refresh its Xata session without requiring another browser authorization. Then start codex, run /mcp, and verify that xata is connected and authenticated.
Antigravity CLI
Add Xata to your global MCP configuration:
~/.gemini/config/mcp_config.json
{
"mcpServers": {
"xata": {
"serverUrl": "https://api.xata.tech/mcp"
}
}
}
To enable Xata only for one project, use .agents/mcp_config.json in that project’s root instead. Start agy and enter /mcp. In the MCP Manager, use Authenticate for xata and follow the prompts to complete OAuth.
OpenCode
Add the Xata server to your OpenCode configuration file:
~/.config/opencode/opencode.json
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"xata": {
"type": "remote",
"url": "https://api.xata.tech/mcp"
}
}
}
Then authenticate from your terminal:
opencode mcp auth xata
Amp
Add the server from your terminal:
amp mcp add xata https://api.xata.tech/mcp
Then start amp — you should be prompted to authenticate in the browser. Run /mcp list tools to confirm the server is connected.
Windsurf
- In Windsurf, open the Cascade panel and click the MCP (hammer) icon, then Configure to open the raw configuration file (
~/.codeium/windsurf/mcp_config.json). - Add the Xata server entry:
~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"xata": {
"serverUrl": "https://api.xata.tech/mcp"
}
}
}
- Save the file and click Refresh in the Cascade sidebar. Complete the OAuth flow when the browser window opens.
Zed
- Open Settings → AI → MCP Servers and click Add Server → Add Remote Server, or edit your settings file directly:
settings.json
{
"context_servers": {
"xata": {
"url": "https://api.xata.tech/mcp"
}
}
}
- Zed prompts you to authenticate against the server using the standard MCP OAuth flow.
Cline
- Open Cline in VS Code and click the MCP Servers icon.
- In the Remote Servers tab, enter
xataas the name,https://api.xata.tech/mcpas the URL, and choose Streamable HTTP as the transport. Or edit the configuration JSON directly:
{
"mcpServers": {
"xata": {
"type": "streamableHttp",
"url": "https://api.xata.tech/mcp"
}
}
}
The transport type must be streamableHttp (camelCase). Omitting it causes Cline to fall back to the legacy SSE transport, which the Xata MCP server does not support.
Other MCP clients
Any MCP client can connect if it supports:
- Remote MCP servers over Streamable HTTP (not SSE)
- OAuth with dynamic client registration, or custom HTTP headers for API key authentication
Consult your client’s documentation for where to configure remote MCP servers, and use https://api.xata.tech/mcp as the URL.
Verify the connection
After connecting, ask your assistant:
Use the Xata MCP server to tell me who I’m authenticated as.
The assistant should call the user_info tool and return your user identity (or the API key identity, if you authenticated with a key). If it does, the connection is working.
Available tools
The Xata MCP server exposes the following tools:
| Tool | Description |
|---|---|
user_info | Returns the identity of the authenticated caller — your user ID and email for OAuth, or the API key ID. |
search_operations | Find a Xata REST API operation by intent (for example, “list branches” or “invite member”). |
describe_operation | Return the parameters and request/response schemas for a specific operation. |
call_read_operation | Invoke a read-only Xata REST API operation. |
call_write_operation | Invoke a Xata REST API operation that creates or updates data. |
call_destructive_operation | Invoke a Xata REST API operation that destroys data or revokes access. Requires confirm=true. |
run_sql | Run SQL against a branch. Read-only by default; pass write=true to run statements that mutate data. |
describe_schema | List the tables and columns of a branch. |
list_skills | List the available Xata skills — guided workflows for common multi-step tasks. |
get_skill | Read the instructions for a specific skill. |
search_xata | Search the Xata documentation. |
query_docs_filesystem_xata | Read Xata documentation pages by path. |
Security
- Prefer OAuth for interactive clients; tokens are short-lived and can be revoked by disconnecting the server in your client.
- For automation, use a dedicated API key and rotate it regularly.
- Some tools can modify your data:
call_write_operationandcall_destructive_operationcan change or delete resources (the latter requiresconfirm=true), andrun_sqlcan mutate data when called withwrite=true. Review the actions your assistant proposes before approving them, and keep a human in the loop for any write or delete.
Troubleshooting
Authentication keeps failing or loops. Remove the Xata server from your client, restart the client, and add the server again to trigger a fresh OAuth flow. The server connects but no tools show up. Make sure you completed the authentication step — most tools require a valid session before they appear. Re-run your client’s authentication flow, then refresh its tool list. See Available tools for the full set. Your client can’t connect at all. Confirm the URL is exactly https://api.xata.tech/mcp and that your client supports Streamable HTTP. SSE-only clients are not supported. The server doesn’t appear in your client. Check the client’s MCP configuration file syntax — the JSON shape differs between clients (mcpServers vs servers vs context_servers, url vs serverUrl) — and check the client’s logs. Most clients require a full restart after configuration changes.
Was this page helpful?