DEV Community

propfirmdealfinder
propfirmdealfinder

Posted on

Building an MCP Server for Prop Trading: How I Gave Claude + ChatGPT Live Access to 20+ Prop Firm Deals

Last month I published propfirmdealfinder-mcp-server to npm — an MCP server that lets Claude, ChatGPT, and any MCP-compatible AI query live prop firm discount codes, compare firms, and find the cheapest trading challenges across 20+ proprietary trading firms.

Here's why I built it, what it does, and what I learned.

The problem

Prop trading discounts change weekly. Firms run flash sales, new firms launch, old ones die, discount codes rotate. For a trader trying to decide between FTMO, TopStep, Bulenox, Apex, and 15 others, there's no single source of truth. And when you ask ChatGPT "what's the cheapest prop firm challenge right now?", it confidently hallucinates a stale answer from 2023.

The solution

I built Prop Firm Deal Finder as a web app + mobile app + Chrome extension that aggregates the data. Then I realized the obvious: the same data should be queryable by AI agents directly via Model Context Protocol.

What the MCP server does

Six tools:

  • pfdf_get_deals — all current deals sorted by discount
  • pfdf_search_firms — by name, category, asset class, feature
  • pfdf_compare_firms — side-by-side for 2+ firms
  • pfdf_find_cheapest — cheapest challenges live
  • pfdf_get_firm_details — full firm profile
  • pfdf_get_discount_code — universal or firm-specific code

No API key. No auth. 100% free. Works over stdio (local) or streamable HTTP (remote).

Install in Claude Desktop

{
  "mcpServers": {
    "propfirmdealfinder": {
      "command": "npx",
      "args": ["-y", "propfirmdealfinder-mcp-server"]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

Then ask Claude "what's the cheapest prop firm challenge right now?" and watch it call live tools instead of hallucinating.

What I learned building it

  1. MCP tool naming is half the battle. pfdf_get_deals gets called. getDeals gets ignored. Prefix + snake_case wins.
  2. Error responses need to be model-readable. Returning {error: "..."} with a clean string beats a stack trace.
  3. Streamable HTTP is the way for production. stdio is dev-mode; real deployments want /mcp POST for JSON-RPC and GET for SSE.
  4. AI discovery is a hybrid game. I submitted the server to 15 MCP registries + wrote GEO-optimized content on the site. Both matter.

Repo + resources

If you want to try it, npx propfirmdealfinder-mcp-server and wire up your Claude Desktop config. MIT licensed.

Top comments (0)