fdic-mcp-server is an MCP (Model Context Protocol) server for the FDIC BankFind Suite API. It gives LLM hosts a clean way to search FDIC-insured institutions, retrieve public banking records, and run common multi-bank analysis workflows without custom FDIC API plumbing.
It is useful when you want an MCP-compatible client to answer questions about banks, failures, branches, quarterly financials, deposit data, or peer performance using a stable tool surface and machine-readable responses.
- Project Status
- Why This Project Exists
- Documentation
- Installation
- Usage
- Available Tools
- Data Notes
- Support
- Contributing
- License
Active development. The server is usable today and the tool surface is covered by tests, but the project is still evolving as client support and analysis workflows improve.
The FDIC BankFind Suite API is public and useful, but it is not packaged for MCP clients out of the box. This project solves that by:
- exposing BankFind datasets as MCP tools
- preserving both human-readable and machine-readable responses
- adding server-side analysis helpers for multi-bank comparison workflows
- supporting both local stdio hosts and remote HTTP hosts
Public user docs:
Repo reference docs:
- Reference home
- Technical specification
- Architecture
- Key decisions
- Cloud Run deployment
- Plans and design notes
Project and release info:
Prerequisites:
- Node.js 20 or later
- npm
Run directly without a global install:
npx fdic-mcp-serverInstall globally:
npm install -g fdic-mcp-server
fdic-mcp-serverInstall from GitHub Packages:
npm install -g @jflamb/fdic-mcp-server --registry=https://npm.pkg.github.com
fdic-mcp-serverInstall from source:
git clone https://github.com/jflamb/fdic-mcp-server.git
cd fdic-mcp-server
npm install
npm run buildIf your MCP host supports remote MCP URLs, use:
https://bankfind.jflamb.com/mcp
Stdio transport:
node dist/index.jsHTTP transport:
TRANSPORT=http PORT=3000 node dist/index.jsThe HTTP MCP endpoint is http://127.0.0.1:3000/mcp by default.
Notes:
- Local HTTP runs bind to
127.0.0.1by default. SetHOSTif you intentionally want a different bind address. - Browser-origin requests are checked against
ALLOWED_ORIGINS. If unset, the server allows the local defaults forlocalhostand127.0.0.1on the configured port, plus non-browser requests with noOriginheader. - The HTTP transport is session-based. Clients initialize once, then reuse
MCP-Session-Idon later POST, GET, and DELETE requests.
Container builds use PORT=8080 by default for Cloud Run compatibility.
Set FDIC_MAX_RESPONSE_BYTES to override the upstream FDIC response-size guard. The default is 5242880 bytes (5 MiB).
{
"mcpServers": {
"fdic": {
"command": "npx",
"args": ["-y", "fdic-mcp-server"]
}
}
}If you are running from a local clone instead of the published package:
{
"mcpServers": {
"fdic": {
"command": "node",
"args": ["/path/to/fdic-mcp-server/dist/index.js"]
}
}
}Client-specific setup details are in docs/clients.md.
Find active banks in North Carolina with assets over $1 billion:
filters: STNAME:"North Carolina" AND ACTIVE:1 AND ASSET:[1000000 TO *]
Get the 10 costliest bank failures since January 1, 2000:
filters: FAILDATE:[2000-01-01 TO *]
sort_by: COST
sort_order: DESC
limit: 10
Compare North Carolina banks between two quarterly report dates:
state: North Carolina
start_repdte: 20211231
end_repdte: 20250630
sort_by: asset_growth
sort_order: DESC
(fdic_compare_bank_snapshots)
Build a peer group for a specific bank:
cert: 29846
repdte: 20241231
(fdic_peer_group_analysis)
More examples are in docs/usage-examples.md.
| Tool | Description |
|---|---|
fdic_search_institutions |
Search FDIC-insured banks and savings institutions |
fdic_get_institution |
Get details for a specific institution by CERT number |
fdic_search_failures |
Search failed bank records |
fdic_get_institution_failure |
Get failure details for a specific institution |
fdic_search_locations |
Search branch and office locations |
fdic_search_history |
Search structural change events such as mergers and name changes |
fdic_search_financials |
Search quarterly Call Report financial data |
fdic_search_summary |
Search annual financial summary data |
fdic_search_sod |
Search Summary of Deposits branch-level deposit data |
fdic_search_demographics |
Search quarterly demographics and market-structure data |
fdic_compare_bank_snapshots |
Compare two reporting snapshots across banks and rank growth and profitability changes |
fdic_peer_group_analysis |
Build a peer group and rank an institution against peers on financial metrics |
fdic_analyze_bank_health |
Run a CAMELS-style health assessment for a single institution |
fdic_ubpr_analysis |
Run a UBPR-equivalent ratio analysis (ROA, ROE, NIM, efficiency, capital, liquidity, growth) |
fdic_compare_peer_health |
Rank a group of institutions by CAMELS-style health scores |
fdic_detect_risk_signals |
Scan institutions for early warning risk indicators |
fdic_analyze_credit_concentration |
Analyze loan portfolio composition and CRE/construction concentration relative to capital |
fdic_analyze_funding_profile |
Analyze deposit composition, wholesale funding reliance, and funding risk signals |
fdic_analyze_securities_portfolio |
Analyze securities portfolio size, MBS concentration, and interest rate exposure |
fdic_franchise_footprint |
Map branch and deposit distribution across MSA markets using SOD data |
fdic_market_share_analysis |
Rank institutions by deposit market share in an MSA or city market and compute HHI |
fdic_holding_company_profile |
Profile a holding company and its FDIC-insured subsidiaries with aggregated metrics |
fdic_regional_context |
Provide regional economic context (unemployment, interest rate environment) for a bank's market |
Server-side analysis helpers:
fdic_compare_bank_snapshotsbatches roster lookup, financial snapshots, and optional demographics snapshots inside the MCP serverfdic_peer_group_analysisbuilds a peer group from asset size, charter class, and geography criteria and then ranks an institution against peersfdic_analyze_bank_healthreturns a fullpublic_camels_proxy_v1proxy assessment;fdic_compare_peer_healthreturns per-institution summary scores with a full proxy for the subject;fdic_detect_risk_signalsuses the proxy engine to generate per-institution risk signals — all are analytical proxies, not official regulatory CAMELS ratings
This repository includes a Claude Code slash command that chains multiple FDIC MCP tools into a structured analysis workflow.
| Skill | Command | Description |
|---|---|---|
| Bank Deep Dive | /fdic-bank-deep-dive |
Comprehensive single-institution analysis report covering health assessment, financial performance, peer benchmarking, credit concentration, funding profile, securities portfolio, franchise footprint, and economic context. Accepts a bank name or CERT number with an optional report date. |
Skills are defined in .claude/commands/ and are available to any Claude Code session with this MCP server configured. See docs/usage-examples.md for a usage example.
- Monetary values are generally reported in thousands of dollars.
CERTis the stable FDIC institution identifier.- Financial and demographics datasets are quarterly and use
REPDTEinYYYYMMDD. - Summary data is annual and uses
YEAR. - SOD data is annual branch-level data as of June 30.
- Do not mix quarterly financial data and annual branch data without stating the date basis.
Use the GitHub issue tracker for bugs, documentation problems, and feature requests: https://github.com/jflamb/fdic-mcp-server/issues
The main support docs are:
Contributor guidance lives in CONTRIBUTING.md.
For local validation, run:
npm run typecheck
npm test
npm run buildReleases are published automatically from validated main commits by semantic-release. Do not manually edit the package version or create release tags by hand. GitHub Releases is the authoritative release record for published versions.
This project is licensed under the MIT License.