Model Context Protocol

Connect any MCP client

Datafuse is a remote MCP server. Connect Claude, Cursor, VS Code or your own agent with a URL and an API key, no SDK required.

Datafuse is a remote Model Context Protocol (MCP) server. Every integration you connect in Datafuse becomes a set of tools that any MCP client can use. There is nothing to install: you need a URL and a Datafuse API key.


Endpoints

EndpointWhat it exposes
https://api.datafuse.xyz/mcpThe tools of every integration on your account
https://api.datafuse.xyz/mcp/{integration_id}The tools of one integration

Authenticate with an API key from Settings > API keys in the dashboard, sent as Authorization: Bearer df_live_... (or as an x-api-key header). Requests without a valid key get 401 with a WWW-Authenticate: Bearer header.

Self-hosted? Use your own API address, for example http://localhost:8100/mcp.


Claude Code

bash
claude mcp add --transport http datafuse https://api.datafuse.xyz/mcp \
  --header "Authorization: Bearer df_live_your_key"

Cursor

Add Datafuse to ~/.cursor/mcp.json (or .cursor/mcp.json in a project):

json
{
  "mcpServers": {
    "datafuse": {
      "url": "https://api.datafuse.xyz/mcp",
      "headers": { "Authorization": "Bearer df_live_your_key" }
    }
  }
}

VS Code

Add Datafuse to .vscode/mcp.json:

json
{
  "servers": {
    "datafuse": {
      "type": "http",
      "url": "https://api.datafuse.xyz/mcp",
      "headers": { "Authorization": "Bearer df_live_your_key" }
    }
  }
}

Your own agent (Python)

Any MCP client library works. With the official mcp Python package (pip install mcp):

python
import asyncio

import httpx2
from mcp import ClientSession
from mcp.client.streamable_http import streamable_http_client


async def main() -> None:
    headers = {"Authorization": "Bearer df_live_your_key"}
    async with httpx2.AsyncClient(headers=headers) as http:
        async with streamable_http_client("https://api.datafuse.xyz/mcp", http_client=http) as streams:
            async with ClientSession(streams[0], streams[1]) as session:
                await session.initialize()
                tools = await session.list_tools()
                print([tool.name for tool in tools.tools])


asyncio.run(main())

How tools are named

Each tool is named <provider>__<action>, for example github__create_issue. Names contain only letters, digits, _ and -, and are at most 64 characters. When you connect the same provider twice, the second copy gets a short stable suffix so every name stays unique.

Only integrations with verified credentials appear. Tool descriptions and input schemas come from the integration's resolved tools. If an integration has no resolved tools yet, Datafuse resolves them the first time a client lists tools.


Usage and errors

  • Every tools/call counts as one tool call against your plan. Listing tools is free.
  • When a call fails (bad arguments, a provider error, or your monthly limit is reached), the result comes back with isError: true and a readable message, so the model can see what went wrong. Over the limit, the message says how to add credits or upgrade.
  • Self-hosted capacity and limits are defined in your commercial deployment agreement.

Protocol details

  • Transport: Streamable HTTP. Send JSON-RPC 2.0 messages (single or batched) with POST. Replies are application/json, or a one-message text/event-stream when the client accepts only SSE.
  • Protocol versions: 2025-11-25, 2025-06-18, 2025-03-26 and 2024-11-05. Datafuse answers with the version the client asks for, or the newest one if it asks for an unknown version.
  • Supported methods: initialize, ping, tools/list (paginated with nextCursor above 500 tools) and tools/call.
  • The server is stateless. It issues an Mcp-Session-Id on initialize but does not require it afterwards. GET returns 405 because the server does not open its own event stream. DELETE always succeeds.

Not using MCP?

The same tools are available as plain JSON schemas for any agent framework. See Tool schemas for any framework.

To register an existing MCP server as an integration inside Datafuse, see Register an MCP server.