The Model Context Protocol (MCP) is the most important thing that happened to API-driven research workflows in 2025. It lets you give Claude Desktop tools — actual function-calling capabilities — that Claude decides to invoke when relevant to your question, without you writing a single line of code.

This guide walks you through wiring earningscalls.dev as an MCP tool in Claude Desktop. Once installed, you can ask in natural language:

"What did NVIDIA's CFO say about data center growth in their last call?"

And Claude — without you opening a browser, hitting an endpoint, or even knowing what an API key looks like — will fetch the relevant transcript segments and answer with citations.

Setup time: 5 minutes. Cost: whatever your normal Claude Pro subscription is, plus an earningscalls API key.

What is MCP, in 30 Seconds

MCP is a standardized way for AI clients (Claude Desktop, Claude Code, Cursor) to call external tools. Instead of training Claude to know about every API in the world, you give Claude an MCP server — a small process that exposes a set of tool functions Claude can invoke.

When you ask a question that needs external data, Claude:

  1. Sees the available tools (from MCP servers)
  2. Decides which tool(s) to call and with what arguments
  3. Receives the result
  4. Composes the answer using that result

You don't write the orchestration. Claude does. You just install the tool.

Step 1: The Hosted Server

We run a hosted MCP server you can connect to with zero local install:

https://mcp.earningscalls.dev/mcp

This is the only path you need — Claude Desktop has native support for remote MCP servers, you just paste the URL. No npm packages to manage, no local processes to maintain, no version drift between your machine and your team's. Updates ship server-side.

Step 2: Get Your API Key

You need an earningscalls.dev API key — Pro tier or higher lets you query full transcripts via search.

Copy your key from https://earningscalls.dev/dashboard (it starts with ec_).

The Easiest Path: Use Your Personal Connector URL

If you don't want to manage API keys at all, go to your dashboard, find the Claude Connectors section, and click Generate URL. You'll get a personal URL like:

https://mcp.earningscalls.dev/u/mct_abc123.../mcp

Paste just that URL into either:

The URL embeds an opaque, revocable token that resolves to your account server-side. You never copy your API key into Claude.

You can generate multiple URLs (one per device / workspace / team member) and revoke any individually from the dashboard. If a laptop is lost or a team member leaves, kill just that connector — no impact on others.

The rest of this guide covers the manual API-key paths for users who prefer that approach (or who are working before the dashboard's Connectors section is live).

Step 3: Configure Claude Desktop With Your API Key

Open Claude Desktop → Settings → Developer → "Edit Config". This opens claude_desktop_config.json in your default editor. Path is platform-specific:

Paste this block (or merge with an existing mcpServers section if you already have other MCP servers configured):

{
  "mcpServers": {
    "earningscalls": {
      "url": "https://mcp.earningscalls.dev/mcp",
      "headers": {
        "X-API-Key": "ec_your_key_here"
      }
    }
  }
}

Save the file and fully quit Claude Desktop (Cmd+Q on Mac, not just closing the window — the menu bar process needs to die for it to reload config).

Configuring claude.ai (Web UI) With Your API Key

If you're using claude.ai's "Add custom connector" beta (Pro/Team accounts):

  1. Settings → ConnectorsAdd custom connector
  2. Name: EarningsCalls
  3. Remote MCP server URL: https://mcp.earningscalls.dev/mcp
  4. Expand Advanced settingsCustom Headers
  5. Add header: X-API-Key with your ec_... key as the value
  6. Save

claude.ai stores the headers encrypted on their backend; all subsequent tool-calls run server-side with the header attached. The key never lives in your browser.

Re-open. You should see a 🔌 hammer icon in the chat input area showing available tools. Click it and you should see tools like:

Step 4: Ask Things

Some examples that actually work well:

"What did NVIDIA say about data center growth in their last earnings call?"

Claude calls get_latest_call(ticker="NVDA"), then search_transcripts(q="data center growth", earnings_id=...), reads the relevant segments, and answers with specific quotes + numbers.

"Compare guidance from MSFT and GOOGL's most recent calls. Where do they agree, where do they diverge?"

Two get_latest_call invocations in parallel, then Claude synthesizes a side-by-side. The kind of question that takes a human analyst 45 minutes and the model produces in 20 seconds with proper citations.

"Which tech companies that reported this week mentioned tariffs?"

Claude calls get_upcoming_earnings(date_range="this_week", sector="Technology") and then search_transcripts(q="tariffs", date_from=..., date_to=...). Lists the matches with the actual quote from each call.

"Read me the Q&A section of TSLA's last call where analysts pushed back on the Cybertruck production ramp."

get_speakers(ticker="TSLA", latest=true), filtered to Q&A segments containing keyword matches. Claude reads the relevant exchange aloud (or in text if you prefer).

What Makes This Better Than ChatGPT or Web Search

Three things, each of which compounds:

  1. Primary source, not a summary. Claude reads the actual transcript text, not a news article about the transcript. No journalist's framing layer between you and what the CFO actually said.
  2. Quantitative precision. The transcript has specific numbers. Claude pulls them verbatim with sentence-level citations. No "approximately around $X billion" — the actual figure.
  3. No copy-paste friction. You ask, you get the answer with the link to the source. You don't switch tabs to verify; the citation is one click away.

The Cost Story

A typical session of "research a stock" looks like 3-5 tool calls — Claude figures out efficiently which tools to invoke. Each call is one API request against your earningscalls quota.

For a Pro plan user (5,000 req/mo):

For heavy users hitting it 100+ times a week, look at the Ultra plan (25,000 req/mo, $39.99) — gives you headroom for analyst-grade daily use.

Common Issues

The hammer icon doesn't appear.

Check claude_desktop_config.json for valid JSON (a missing comma will silently fail). Look at the log file:

Specifically look for "spawn ENOENT" (means the command path is wrong) or "401 Unauthorized" (means the API key isn't being passed through).

Tools appear but Claude doesn't use them.

Try a more explicit prompt: "Using the earningscalls tools, find me...". Claude generally figures out when tools are relevant, but for ambiguous queries it sometimes defaults to web knowledge. Naming the tool nudges it.

Stale results.

The hosted MCP server caches some metadata (sector lists, calendar) for 5-10 minutes for performance. Live transcript searches are always fresh. If you need cache-bypass for a specific call, ask Claude to fetch by earnings_id directly.

What's Next

Once you have this wired up, you'll find yourself asking richer questions:

Each of these would be 1-3 hours of manual work. With MCP + Claude they're a question + 30 seconds. That's the unlock — not "AI does work for you", but "the friction between question and answer drops to zero".

Get an API key and try the connection. The remote MCP server is the lowest-friction option — paste, save, restart Claude, ask.

In the next post we show how to use the same MCP server in Claude Code for recurring workflows — weekly digests, automated reports, scheduled scans.