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, 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 account on the Premium plan or above.
- 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). 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, you will need to specify which one to use by appending ?account_id=<YOUR_ACCOUNT_ID> to the MCP URL. If you connect without specifying one, the server will provide a list_accounts tool that shows your available workspaces and their IDs.
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
Claude Desktop
Claude Desktop supports OAuth natively. Add the following to your configuration file (claude_desktop_config.json):
{
"mcpServers": {
"weld": {
"url": "https://connect.weld.app/mcp"
}
}
}
You will be prompted to log in with your Weld account when you first connect.
If you have multiple workspaces, specify which one:
{
"mcpServers": {
"weld": {
"url": "https://connect.weld.app/mcp?account_id=<YOUR_ACCOUNT_ID>"
}
}
}
You can also use an API key instead of OAuth:
{
"mcpServers": {
"weld": {
"url": "https://connect.weld.app/mcp",
"headers": {
"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>"
}
}
}
}
Claude Code
Run the following command:
claude mcp add weld --transport streamable-http https://connect.weld.app/mcp \
--header "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. |
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. |
request_elt_stream_run | Trigger an immediate run of a stream. |
request_elt_stream_full_refresh | Mark the next run as a full refresh. |
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. |
create_transform | Create a new SQL transform. Supports immediate publishing. |
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. |
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 need to tell the MCP server which one to use.
With OAuth: Append ?account_id=<YOUR_ACCOUNT_ID> to the MCP URL. If you don't know your account ID, connect without it first — the server will expose a list_accounts tool that shows all your available workspaces with their IDs and names.
With API keys: Each API key is already scoped to a specific workspace, so no additional configuration 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.