Next free-source hunt
We check for new free financial data every Wednesday.

Signal Lab MCP server

Connect your AI agent to the Signal Lab catalog of 84 free and free-to-start financial data sources, tools and models. The server is public and read-only. No API key or account is needed.

Endpoint (Streamable HTTP, stateless, POST only, CORS open). It serves the same catalog as /catalog.json. Server version 1.2.1.

https://signal-lab-jet.vercel.app/api/mcp

The 8 tools

ToolWhat it does
search_catalogFind data sources, tools and models by words and filters (category, type, access badge, sign-up needed, license, task, verified, verified since a date). Returns 10 matches by default, at most 25.
get_entryEvery catalog field for one entry, looked up by its slug.
compare_entriesUp to 5 entries side by side.
list_filtersThe filter values the catalog uses, with how many entries have each.
catalog_infoThe notice, schema version, generated time, entry count and download links.
export_catalogThe whole data list, or a filtered part of it, as JSON or CSV.
get_source_urlsThe original provider, docs, evidence and license or terms links for each entry, with the date we last verified it. Ask for up to 25 slugs, use the same filters as search_catalog, or give neither to get every entry.
get_ingestion_skillHow to load one source into pandas: access, the request, the format, a Python snippet, limits, quirks, terms and sources, as markdown. Call it with no slug to list the sources that have one.

24 data sources have an ingestion skill. Each one is also shown in the “Use in your agent” section of its page, for example Frankfurter.

Set it up

Claude Code

Run this in a terminal, then check it with claude mcp list.

bash
claude mcp add --transport http signal-lab https://signal-lab-jet.vercel.app/api/mcp

Claude Desktop and claude.ai

On Free, Pro and Max plans, go to Customize > Connectors and add a custom connector. Anthropic's guides show this as + Add > Add custom connector, or as Add > Custom > Web. Enter a name, paste the endpoint URL above, and choose No sign in. Free plans allow one custom connector. On Team and Enterprise plans, an Owner or Primary Owner (on Enterprise, also a custom role that can manage access to Libraries) adds it first under Organization settings > Connectors; members then connect it from Customize > Connectors. Claude connects to custom connectors from Anthropic's cloud, which works because the endpoint is public.

To run it as a local server instead, add this to claude_desktop_config.json (needs Node.js):

claude_desktop_config.json
{
  "mcpServers": {
    "signal-lab": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://signal-lab-jet.vercel.app/api/mcp"
      ]
    }
  }
}

Cursor

Add this to ~/.cursor/mcp.json, or to .cursor/mcp.json in a project:

mcp.json
{
  "mcpServers": {
    "signal-lab": {
      "url": "https://signal-lab-jet.vercel.app/api/mcp"
    }
  }
}

VS Code

Run MCP: Add Server from the Command Palette, choose HTTP and paste the endpoint URL. Or add this to .mcp.json at the root of your workspace, or to ~/.copilot/mcp-config.json for your user (the portable format, with a top-level mcpServers object):

.mcp.json
{
  "mcpServers": {
    "signal-lab": {
      "type": "http",
      "url": "https://signal-lab-jet.vercel.app/api/mcp"
    }
  }
}

The older .vscode/mcp.json file uses a top-level servers object instead. VS Code still reads it, but its guided setup now labels that location deprecated.

Try it with curl

List the tools. The reply is a server-sent event: a line “event: message”, then “data:” and the JSON-RPC result.

bash
curl -s -X POST https://signal-lab-jet.vercel.app/api/mcp -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Get the ingestion skill for one source:

bash
curl -s -X POST https://signal-lab-jet.vercel.app/api/mcp -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_ingestion_skill","arguments":{"slug":"frankfurter"}}}'

Limits

  • One JSON-RPC message per request, and a request body of at most 16 KB.
  • About 120 requests a minute per client, counted per server instance. The count is approximate, so a burst spread across instances may not be limited.
  • Results are the catalog's own values. Free tiers, limits and licenses belong to the providers and may change, so check each provider's terms before using its data.

Registry listing

Listed in the official MCP Registry as io.github.QDThead/signal-lab. View the registry entry (JSON)

Prefer files? The Agent Ingestion page has catalog.json, catalog.csv and llms.txt.

Information presented for educational purposes only. Signal Lab does not host or redistribute third-party data.