Bancadia MCP
Query Bancadia's registry of US business checking account products with structured filters.
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
claude mcp add --transport http bancadia-mcp 'https://mcp.bancadia.com/' --header 'Authorization: <Bearer token required for tools/call (e.g. '\''Bearer <token>'\''). Not required for initialize or tools/list. Obtain a token at https://bancadia.com/developer/signup.>'
{
"mcpServers": {
"bancadia-mcp": {
"type": "http",
"url": "https://mcp.bancadia.com/",
"headers": {
"Authorization": "<Bearer token required for tools/call (e.g. 'Bearer <token>'). Not required for initialize or tools/list. Obtain a token at https://bancadia.com/developer/signup.>"
}
}
}
}
Documentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
Bancadia MCP
A Model Context Protocol server that lets MCP clients (Claude, other LLM agents, etc.) query Bancadia's registry of business deposit account products (US only) — with structured filters.
Runs as a Cloudflare Worker on Hono, exposing MCP over JSON-RPC 2.0 (Streamable HTTP transport), backed by Supabase (Postgres) with an Upstash Redis caching/rate-limiting layer.
Endpoints
| Method | Path | Purpose | Auth |
|---|---|---|---|
| GET | /health | Liveness check | none |
| GET | /.well-known/mcp | Public discovery/manifest (server info + tool list) | none |
| POST | / | JSON-RPC 2.0 endpoint — initialize, tools/list, tools/call | session; tools/call also needs a bearer token |
| GET | / | Standalone SSE stream (server-initiated messages, keep-alive) | session |
| DELETE | / | Terminate a session | session |
MCP session lifecycle
POST /withmethod: "initialize"— no auth required. Returns anMcp-Session-Idresponse header; every subsequent request must send that value back as theMcp-Session-Idrequest header.POST /withmethod: "tools/list"— session required, no bearer token needed. Returns the tool manifest.POST /withmethod: "tools/call"— session andAuthorization: Bearer <token>required. Per-token sliding-window rate limiting applies (X-RateLimit-*response headers on both success and 429).
Responses are plain JSON by default, or Server-Sent Events if the request's Accept header includes text/event-stream.
For production use, obtain a bearer token from the Bancadia developer portal — see bancadia.com/docs for full API documentation.
Available tools
| Tool | Purpose |
|---|---|
query_business_checking | Filter business checking listings (fees, entity types, states, RTP rails, integrations, APY, etc.) |
get_business_checking_listing | Full detail on one listing by listing_slug — fees and features, including per-plan-tier breakdowns |
See src/lib/tools.ts for the full JSON Schema of each tool's arguments, or query GET /.well-known/mcp / tools/list directly.
application_url attribution tags
Every application_url returned by tools/call is an absolute https://bancadia.com/go/... link with attribution params appended: src=mcp and qr=<request_id>, where request_id is a UUID generated once per tools/call and also written to every query_match_events row for that call (so a /go click can be joined back to the tool call that surfaced it). Params already present on the stored URL are never overwritten. qr is added for every tool; a tool that records no query_match_events rows (or returns no listings) has nothing for it to join to. Host-prefixing and tagging both happen in one layer, applyApplicationUrlHost in src/lib/urls.ts, applied in src/index.ts.
Clients and agents should pass application_url through unmodified, including its query string. Stripping the params loses attribution for that click.
Getting started
npm install
cp .dev.vars.example .dev.vars # fill in Supabase + Upstash credentials
npm run dev # wrangler dev — local server
wrangler.toml [vars] provides non-secret defaults (test Supabase/Upstash URLs, session TTL, allowed origins) shared by both npm run dev and the test suite; real secrets go in .dev.vars (git-ignored).
Commands
npm run dev # wrangler dev — local server
npm test # vitest run (runs inside workerd via @cloudflare/vitest-pool-workers)
npm run lint # tsc --noEmit
npm run deploy:staging # wrangler deploy --env staging
npm run deploy:production # wrangler deploy --env production
Run a single test file:
npx vitest run src/__tests__/query-business-checking.test.ts
Environments
- staging —
bancadia-mcp-staging,workers.devenabled. Deployed automatically by CI on every push/PR tomain. - production —
bancadia-mcp-production, routed atmcp.bancadia.com/*. Deployed manually vianpm run deploy:production.
Secrets for each environment are set with wrangler secret put <KEY> --env <environment> and are never committed.
Architecture
See CLAUDE.md for a detailed guide to the codebase: request flow, auth/session/rate-limit design, and the Supabase hybrid schema (base tables + per-product-type details tables) that the query handlers are built around.
Questions fréquentes
Qu'est-ce que Bancadia MCP ?
Query Bancadia's registry of US business checking account products with structured filters.
Comment installer Bancadia MCP ?
Il fonctionne comme serveur distant. Dans Claude Code : claude mcp add --transport http bancadia-mcp 'https://mcp.bancadia.com/' --header 'Authorization: <Bearer token required for tools/call (e.g. '\''Bearer <token>'\''). Not required for initialize or tools/list. Obtain a token at https://bancadia.com/developer/signup.>'. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour Bancadia MCP ?
Oui. Il attend Authorization, à renseigner dans sa configuration.
Bancadia MCP est-il open source ?
Son code est public sur GitHub, mais le dépôt ne déclare pas de licence standard.
Qui maintient Bancadia MCP ?
Il est publié par Bancadia. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.