MCP Server
Weld exposes a Model Context Protocol (MCP) server that lets AI assistants interact directly with your Weld workspace — listing syncs, inspecting connections, debugging failures, creating transforms, and more.
The MCP server is available to customers on the Premium plan and above. You can read more about our plans and pricing here.
What is MCP?
The Model Context Protocol is an open standard that allows AI tools (Claude Desktop, claude.ai, Claude Code, Cursor, GitHub Copilot, Windsurf, etc.) to discover and call external APIs through a unified interface. Instead of manually copying IDs and crafting API requests, you can ask your AI assistant natural-language questions like:
- "Which syncs are currently failing?"
- "Show me the history for the Stripe connection."
- "Create a transform that joins orders and customers."
The assistant calls the appropriate Weld MCP tools behind the scenes and returns the answer in context.
Prerequisites
-
A Weld Subscription on the Premium plan or above.
The MCP Server can be tested free of charge on the Basic plan for a period of 2 weeks.
After the trial period, the MCP Server can be purchased as an add-on for €99/month.
-
One of the following authentication methods:
- An API key — create one in the Weld app under Settings → API keys.
- OAuth — supported by clients that implement the MCP OAuth flow (e.g. Claude Desktop, claude.ai, and Claude Code). No setup required — you will be prompted to log in with your Weld account.
Endpoint
The MCP server is available at:
https://connect.weld.app/mcp
It uses the Streamable HTTP transport (the current MCP standard) — no WebSockets or SSE required.
Authentication
The MCP server supports two authentication methods:
OAuth (Recommended)
MCP clients that support the MCP OAuth specification can authenticate automatically. When you connect, your MCP client will open a browser window where you log in with your Weld account. No API key needed.
If your Weld account has access to multiple workspaces, just connect with the standard URL and tell your assistant which workspace to use - it can call the list_accounts tool to see the workspaces you have access to and then work in the one you choose. No account ID in the URL required.
API Key
For clients that don't support OAuth, or for programmatic/headless use, pass a Weld API key in the x-api-key header. The API key is scoped to a specific workspace, so no additional account selection is needed.
Keep your API key secret. Do not commit it to version control. Use environment variables or a secrets manager where possible.
Configuration
Pick the path that matches your tool. If you're using a Claude client, OAuth is the easiest — there's no API key to create or store.
Option 1 (Recommended): Claude tools via OAuth
Claude Desktop & claude.ai
Both Claude Desktop and claude.ai let you add Weld straight from the Connectors menu — no configuration file required:
- Open Settings → Connectors.
- Click Add custom connector.
- Give it a name (for example,
Weld) and paste in the endpoint:https://connect.weld.app/mcp - Click Add. A browser window opens — log in with your Weld account to authorize the connection.
- Weld's tools are now available right in your chat.
Prefer a configuration file? Claude Desktop still supports the classic
claude_desktop_config.json approach:
{
"mcpServers": {
"weld": {
"url": "https://connect.weld.app/mcp"
}
}
}
Claude Code
With OAuth there's no API key to pass. Add the server, then authenticate from inside Claude Code:
claude mcp add weld --transport streamable-http https://connect.weld.app/mcp
Run /mcp inside Claude Code and complete the browser login when prompted.
Have more than one workspace? Connect with the standard URL and just tell
your assistant which workspace to use — it can call the list_accounts tool
to see the workspaces you have access to and then work in the one you pick.
Option 2: API key
For clients that don't support OAuth — or if you'd rather use a static key — create a key under Settings → API keys in the Weld app and pass it in the x-api-key header.
Keep your API key secret. Do not commit it to version control. Use environment variables or a secrets manager where possible.
Claude Code
claude mcp add weld --transport streamable-http https://connect.weld.app/mcp \
--header "x-api-key: <YOUR_WELD_API_KEY>"
Cursor
In your project's .cursor/mcp.json (or the global ~/.cursor/mcp.json):
{
"mcpServers": {
"weld": {
"url": "https://connect.weld.app/mcp",
"headers": {
"x-api-key": "<YOUR_WELD_API_KEY>"
}
}
}
}
VS Code (GitHub Copilot)
In your project's .vscode/mcp.json (or user settings):
{
"servers": {
"weld": {
"url": "https://connect.weld.app/mcp",
"headers": {
"x-api-key": "<YOUR_WELD_API_KEY>"
}
}
}
}
Windsurf
In your Windsurf MCP configuration file:
{
"mcpServers": {
"weld": {
"serverUrl": "https://connect.weld.app/mcp",
"headers": {
"x-api-key": "<YOUR_WELD_API_KEY>"
}
}
}
}
Available Tools
Once connected, your AI assistant can discover and call the following tools:
Account
| Tool | Description |
|---|---|
get_account | Get details of the current account — name, slug, data warehouse info, and plan status. |
list_accounts | List all Weld workspaces the authenticated user can access — handy for picking which one to work in. |
Connections
| Tool | Description |
|---|---|
list_connections | List all connections (data sources) for the account. Supports pagination. |
get_connection | Get details of a specific connection by ID. |
get_connection_elt_settings | Get the ELT settings schema for a connection — useful for understanding what settings are required when creating a sync. |
delete_connection | Delete a connection. |
ELT Syncs
| Tool | Description |
|---|---|
list_elt_syncs | List all ELT Syncs. Supports pagination and filtering by connection ID. |
get_elt_sync | Get details of a specific ELT Sync. |
create_elt_sync | Create a new ELT Sync for a connection. |
update_elt_sync | Update sync interval or ELT settings on an existing sync. |
delete_elt_sync | Delete an ELT Sync and optionally remove destination tables. |
enable_elt_sync | Enable scheduling for a sync. |
disable_elt_sync | Disable scheduling for a sync. |
get_elt_sync_status | Get the current status of a sync, including per-stream states. |
get_elt_sync_available_streams | List all source streams that can be added to a sync. |
add_elt_sync_source_streams | Add source streams to a sync. |
get_elt_sync_history | Get the latest run result for each source stream — useful for debugging. |
get_elt_source_stream_history | Get run history for a specific source stream (up to 100 runs). |
list_failed_syncs | List currently failing syncs with error details and last success time. |
ELT Streams
| Tool | Description |
|---|---|
list_elt_streams | List all ELT Streams. Optionally filter by sync ID. |
get_elt_stream_run | Get details of a specific ELT Stream Run by ID. |
list_elt_stream_runs | List runs for a specific ELT Stream (last 3 months). Supports pagination and sort direction. |
request_elt_stream_run | Trigger an immediate run of a stream. |
request_elt_stream_full_refresh | Mark the next run as a full refresh. |
request_elt_stream_full_refresh_with_history_table | Mark the next run as a full refresh and reset the history table(s) — permanently deletes accumulated history. |
cancel_elt_stream_full_refresh | Cancel a requested full refresh, reverting the stream to incremental sync. |
delete_elt_stream | Delete a stream. |
Transforms
| Tool | Description |
|---|---|
list_transforms | List all SQL transforms. Filter by status, name, or folder path. |
get_transform | Get a transform's SQL template and materialization settings. |
list_transform_versions | List a transform's SQL revision history, most recent first. |
create_transform | Create a new SQL transform. Supports immediate publishing. |
bulk_create_transforms | Create multiple transforms in a single request (up to 50). |
update_transform | Update an existing transform. |
delete_transform | Delete a transform and its materialized view/table. |
publish_transform | Publish or re-publish a transform to the data warehouse. |
Orchestrations
| Tool | Description |
|---|---|
list_orchestrations | List all Orchestrations for the account, sorted alphabetically. |
get_orchestration | Get details of a specific Orchestration by ID. |
list_orchestration_runs | List Orchestration Runs (most recent first). Optionally filter by Orchestration ID. |
get_orchestration_run | Get details of a specific Orchestration Run by ID. |
request_orchestration_run | Trigger an immediate run of an Orchestration. |
Queries
| Tool | Description |
|---|---|
run_query | Run a SQL query against the data warehouse (async). Supports {{weldTag}} references; returns up to 1000 rows. |
get_query_status | Check the status of a submitted query — poll until it returns DONE. |
get_query_result | Retrieve up to 1000 result rows of a completed query. |
list_available_references | List all {{weldTag}} references available for SQL templates — raw source views and published transforms. |
Integrations
| Tool | Description |
|---|---|
list_integrations | List all available integrations based on the account's plan. |
Example Conversations
Here are some examples of what you can ask your AI assistant once the MCP server is connected:
Debugging a failing sync:
"Which of my syncs are currently failing and what are the errors?"
The assistant will call list_failed_syncs and return a summary of each failing sync with error messages and the last successful sync time.
Inspecting sync history:
"Show me the last 10 runs for the payments stream in my Stripe sync."
The assistant will call get_elt_source_stream_history with the appropriate sync ID and stream name.
Creating a transform:
"Create a published view called
active_customersthat selects customers with at least one order in the last 90 days."
The assistant will call create_transform with the SQL template and publish: true.
Multi-Workspace Accounts
If your Weld account has access to multiple workspaces, you can select which one to work in directly in the conversation — no special URL needed.
With OAuth: Connect with the standard endpoint (https://connect.weld.app/mcp) and tell your assistant which workspace to use. It can call the list_accounts tool to see all the workspaces you have access to, then run subsequent actions against the one you choose.
With API keys: Each API key is already scoped to a specific workspace, so no additional selection is needed.
Rate Limits
The MCP server enforces the following rate limits:
- 60 requests per minute per account.
- 10 authentication attempts per minute per IP address.
If you exceed these limits, the server will respond with a 429 Too Many Requests error.
Stateless Design
The MCP server is stateless — each request is independent, so there is no session to manage or expire. Authentication is verified on every request via either the OAuth access token or the API key.