关于 fdic-banks-mcp-server
fdic-banks-mcp-server 提供 FDIC 承保机构数据,面向金融研究、分析和银行业务流程。它整合机构搜索、历史 Call Report 数据、同业比较、倒闭记录、存款分析及只读数据框查询,且无需 API 密钥。
主要功能
- 01搜索受保存款机构
- 02查询自 1984 年起的季度财务数据
- 03与同业银行比较指标
- 04搜索自 1934 年起的倒闭记录
- 05分析网点存款和市场份额
- 06暂存并查询数据框
适用场景
- 01按地点、规模或状态筛选银行
- 02查看银行财务历史
- 03将银行与同业进行基准比较
- 04分析倒闭事件或存款市场集中度
MCP 相关
该服务通过 stdio 或 Streamable HTTP 提供十种 FDIC 数据与数据框工具。另有公共托管 MCP 端点,无需 API 密钥。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://fdic-banks.caseyjhand.com/mcpclaude mcp add --transport http cyanheads-fdic-banks https://fdic-banks.caseyjhand.com/mcp{"mcpServers":{"cyanheads-fdic-banks":{"type":"http","url":"https://fdic-banks.caseyjhand.com/mcp"}}}在 Cursor 中打开{"servers":{"cyanheads-fdic-banks":{"type":"http","url":"https://fdic-banks.caseyjhand.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"cyanheads-fdic-banks":{"type":"http","url":"https://fdic-banks.caseyjhand.com/mcp"}}}{"mcpServers":{"cyanheads-fdic-banks":{"serverUrl":"https://fdic-banks.caseyjhand.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
9| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| city | string | 否 | FDIC 记录的总部城市名称(例如 Seattle、St. Louis),最多 50 个字符;按原样或标题式大小写精确匹配,并会尝试单词间使用连字符、撇号或空格的其他形式,以匹配 FDIC 记录(Winston-Salem 可匹配 Winston Salem,Coeur d'Alene 可匹配 Coeur D Alene)。 |
| name | string | 否 | 要匹配的机构名称,最多 100 个字符——当前名称、旧名称或商号,忽略大小写,必须包含所有词(例如 "silicon valley")。除 & ' . , - 之外的标点会被忽略;独立出现的 N.A. 或 NA 也会被忽略,因此也能匹配 "National Association"。 |
| sort | enum | 否 | relevance(当前名称包含 name 中所有词的活跃机构优先,然后是其他匹配项;各项按匹配分数排序;提供 name 时的默认值——未提供 name 时回退为 assets_desc)、assets_desc(资产从高到低;其他情况下的默认值)或 name(A–Z)。relevance | assets_desc | name |
| certs | array | 否 | 非空的 CERT 选择,最多 1000 个原始条目。先去重;查询前 50 个,其余作为 deferred_certs 返回。missing_certs 仅涵盖 processed_certs。 |
| limit | integer | 否 | 每页机构数;接受 1–10000,最多执行 100。effective_limit 报告实际应用的数量;使用 next_offset 继续。 |
| state | string | 否 | 总部所在州:任意大小写的两字母代码(wa)或全名(Washington);也接受 DC 和属地。 |
| offset | integer | 否 | 跳过的匹配项数(0–100,000);传入上一页返回的 next_offset。 |
| status | enum | 否 | active、inactive(已合并、倒闭或关闭)或 any。默认值:提供 name 或 certs 时为 any,否则为 active。实际应用的值会作为 status_filter 回显。active | inactive | any |
| max_assets | number | 否 | 最新报告的总资产上限,单位为千美元。 |
| min_assets | number | 否 | 最新报告的总资产下限,单位为千美元(1000000 = $1 billion)。 |
| bank_classes | array | 否 | 要包含的特许类别:N national bank,NM state nonmember bank,SM state member bank,SB federal savings bank,SI state savings bank,SL state savings and loan,OI insured branch of a foreign bank,NC noninsured non-deposit trust company。 |
| holding_company_rssd | integer | 否 | 来自任一结果的 holding_company.rssd 的控股公司 RSSD ID;列出该最终控股公司旗下的机构。status 为 any 时,也会将前子公司归入其关闭时所属的控股公司。 |
详细介绍
@cyanheads/fdic-banks-mcp-server
通过 MCP 搜索 FDIC 承保的银行、《银行状况报告》财务数据、同业排名、倒闭记录、存款市场份额。支持 STDIO 或 Streamable HTTP。
概述
通过 FDIC BankFind Suite API 查询所有 FDIC 承保的银行和储蓄机构,包括仍在营业、已合并或已倒闭的机构。查询可追溯至 1984 年的季度《银行状况报告》财务数据、对银行进行同业排名、一次性筛查多家银行、搜索 1934 年以来的倒闭记录,以及查看分支机构存款和市场份额。信用合作社由 NCUA 承保,不包含在内。无需 API 密钥。
工具
| 工具 | 描述 |
|---|---|
fdic_search_institutions | 按名称、CERT、所在地、规模、特许类别或控股公司查找机构;返回其他工具所需的 CERT |
fdic_get_institution_financials | 单家机构的季度 Call Report 历史数据,按时间从近到远排列,并附带其简介 |
fdic_compare_peers | 对比一家机构与某一季度的同业群体:提供每项指标的同业中位数、四分位数、范围、百分位和排名 |
fdic_query_financials | 按 CERT、州、资产范围和指标阈值筛选多家银行、多季度的 Call Report 面板数据 |
fdic_search_failures | 查询自 1934 年以来的银行倒闭和援助交易,提供总数、按方法分类的小计,以及可选分组 |
fdic_get_deposits | 存款摘要:查询某机构的分行和州市场份额,或查询按存款额排名并附带 HHI 的市场 |
fdic_list_reference | 指标目录、特许类别、倒闭方法、保险基金、同业资产区间和数据集覆盖范围 |
fdic_dataframe_describe | 列出已暂存的数据框,或按名称描述其中一个:来源、列和单位 |
fdic_dataframe_query | 对已暂存的数据框运行一条只读 DuckDB SELECT 语句 |
fdic_dataframe_drop | 在 TTL 到期前删除已暂存的数据框;默认关闭,需设置 FDIC_DATAFRAME_DROP_ENABLED=true |
数据框工作流
fdic_query_financials和fdic_get_deposits会返回内联预览。当完整结果超过limit时,还会将其暂存为df_XXXXX_XXXXX表,并在dataset字段中提供表名。- 将该名称传给
fdic_dataframe_describe,以查看表的列、单位和口径。 - 使用
fdic_dataframe_query查询该表:可对所有已暂存表执行联接、聚合、窗口函数和 CTE。register_as会将结果保存为新表。 - 表会在
FDIC_DATASET_TTL_SECONDS(默认 24 小时)后过期。所有现存表合计最多保留 1,000,000 行;超过限制时会删除最旧的表。
暂存功能使用 DuckDB,默认开启;将 CANVAS_PROVIDER_TYPE=none 设为 none 可将其关闭。Claude Desktop .mcpb 包未包含 DuckDB 的原生绑定,因此该环境中的数据框工具会提示安装,而其他工具均可正常使用。
功能参考
fdic_search_institutions 工具
- 筛选条件:
name(最多 100 个字符;每个词都必须匹配当前名称、曾用名或商业名称)、certs(前 50 个唯一值)、state、city、bank_classes、min_assets/max_assets(以千美元计)、holding_company_rssd status可设为active、inactive或any;提供name或certs时默认为any,否则默认为active;status_filter会报告实际应用的值- 每页最多 100 条(默认 20 条),使用
offset/next_offset分页。记录包含active、合并或倒闭银行的successor_cert、holding_company.rssd和matched_on;没有匹配记录的 CERT 会列入missing_certs
fdic_get_institution_financials 工具
- 必须提供
cert;metrics最多可包含 25 项(默认采用包含 15 项指标的健康指标集);quarters接受 1–10,000,但最多查询 200 个季度(默认 8 个),并可通过from_date/to_date限定范围,格式可为2025-03-31、20250331或2025Q1 - 行按时间从近到远排列;每行包含一个
values映射,键为指标、值为数字,未报告时为null;metric_definitions提供每项指标对应的 FDIC 字段、单位和口径 quarters_available统计时间范围内的季度数;未知 CERT 会导致cert_not_found错误
fdic_compare_peers 工具
cert为必填项;report_date默认为最近发布的季度(report_date_defaulted);最多可指定 20 个metrics- 同行组:
peer_asset_band(默认为same,也可选any、under_100m、100m_1b、1b_10b、10b_250b、over_250b)加上可选的peer_state,或使用peer_certs(前 200 个唯一值);peer_certs不能与分档或州筛选条件同时使用(conflicting_peer_filters) - 每项比较都会返回
value、peer_median、peer_p25/peer_p75、peer_min/peer_max、percentile,以及rank_of的rank;统计范围为报告了该指标的peer_count_with_value个同行;peer_cohort_incomplete表示同行组仅部分处理
fdic_query_financials 工具
- 筛选条件:最多 100 个
certs、state、min_assets/max_assets、最多 5 个metric_filters(每项包含metric及min和/或max),以及最多 30 个metrics;from_date/to_date默认为最近发布的季度 - 内联
limit默认为 50,按sort_by/sort_order排序;较大的数据面板会整体暂存为 dataframe - 数据面板上限为
FDIC_PANEL_MAX_ROWS(默认 50,000),并保留最新季度;total_matching、rows_fetched和panel_truncated会报告未纳入的内容
fdic_search_failures 工具
- 筛选条件:
name、certs(前 50 个唯一值;1977 年之前的事件不包含此字段)、state、from_date/to_date(YYYY-MM-DD)、methods、min_assets;resolution默认为failure,也可选assistance或all summary汇总所有匹配事件,并按by_method分类;group_by(year、state、method、insurance_fund)会添加groupstotal_assets_missing_count、total_deposits_missing_count和estimated_loss_missing_count用于统计未报告的金额;如果没有匹配项记录金额,总计则为null。可按日期、损失或资产排序;每页最多 200 条(默认为 25 条)
fdic_get_deposits 工具
- 仅提供
cert时,返回该机构的分支机构及其在各州的存款占比(mode: "institution");提供地理位置(state、county、city、zip、msa_code)时,会按hhi对该市场中的所有机构进行排名(market);两者同时提供时,返回institution_in_market。county和city必须同时提供state year可从 1994 年起选择,默认为最近一次调查(year_defaulted);存款为截至 6 月 30 日的国内分支机构存款,单位为千美元- 内联
limit默认为 25;较大的数据集会暂存为 dataframe,total_rows给出完整行数
fdic_list_reference 工具
- 每次调用只能指定一个
topic:metrics、bank_classes、failure_methods、insurance_funds、peer_asset_bands或coverage metrics会列出全部 49 个指标名称及其 FDIC 字段、单位、统计口径、注意事项和in_default_set;数据来自内置表格,不会向 FDIC 发出请求
fdic_dataframe_describe 工具
name(取自dataset字段的df_XXXXX_XXXXX)会返回该表的来源工具、参数、行数、过期时间、column_schema和column_units- 不提供
name时,会按最新优先顺序列出实时表格,每页 50 个,并使用offset/next_offset翻页;通过 HTTP 使用MCP_AUTH_MODE=none时,列表功能会被关闭,并以listing_unavailable失败 - dataframe 暂存功能关闭时,会以
canvas_unavailable失败
fdic_dataframe_query 工具
- 每次调用执行一条
SELECT,最多 20,000 个字符;写入、DDL、文件读取函数和系统目录访问会被拒绝,并返回相应的类型化原因(non_select_statement、denied_function、system_catalog_access等) row_limit接受 1–1,000,000(默认为 1,000),实际执行上限为 10,000;若匹配行数更多,row_count_capped会报告此情况。preview用于设置内联行数register_as会将结果保存为新的 dataframe;超过 1,000,000 行时会以register_as_too_large失败;COUNT(*)等BIGINT结果会以字符串形式返回
fdic_dataframe_drop 工具
- staged dataframe 的
name;如果已暂存,则返回dropped: true;如果没有暂存该名称的数据,则返回dropped: false - 仅当
FDIC_DATAFRAME_DROP_ENABLED=true时启用;否则,表会在 TTL 到期后失效
功能
基于 @cyanheads/mcp-ts-core 构建:支持 stdio 和 Streamable HTTP 传输、可插拔的身份验证(none / jwt / oauth)、可切换的存储(in-memory、filesystem、Supabase、Cloudflare KV/R2/D1),以及支持可选 OpenTelemetry 跟踪的结构化日志记录。
FDIC 专属功能:
- 读取四类 BankFind 数据集:机构(所有受保存款保险的牌照,包括活跃和非活跃牌照)、自 1984 年起的季度 Call Report 财务数据、自 1934 年起的倒闭和援助交易,以及自 1994 年起的年度 Summary of Deposits
- 对请求进行速率控制(
FDIC_RATE_LIMIT_RPS,最多 4 个并行请求),并使用响应缓存;收到 FDIC 429 响应后会进入冷却期;每次调用的时间预算为 45 秒(面板为 55 秒) - 精选的 49 项 Call Report 指标目录,包含 FDIC 字段代码、单位和口径;
_ytd指标从 1 月 1 日起累计,不带后缀的收入和回报指标则覆盖单个季度 - 处理 BankFind 的特殊情况:代码值区分大小写、报告日期为字符串类型、缺失值哨兵,以及银行未报告比率时会将其报告为
0 - 数组输入按顺序去重,最多包含 1,000 项;不接受空的
certs、peer_certs、bank_classes和methods
便于 Agent 使用的输出:
- 每个数据响应都包含
data_as_of、metric_definitions,以及服务器选定周期时的report_date_defaulted/year_defaulted - 未报告的指标会返回
null;不会填入任何值 - 带有恢复说明的类型化错误,其中会指出下一次调用的名称(
cert_not_found、conflicting_peer_filters、no_report_for_period);速率限制错误(pacer_shed、upstream_rate_limited)会携带retryAfter processed_certs/deferred_certs和processed_metrics/deferred_metrics会分别列出已查询的项目,以及应在新调用中传入的项目
快速开始
公共托管实例
公共实例位于 https://fdic-banks.caseyjhand.com/mcp,无需安装。通过 Streamable HTTP 将任意 MCP 客户端连接到该实例:
{
"mcpServers": {
"fdic-banks-mcp-server": {
"type": "streamable-http",
"url": "https://fdic-banks.caseyjhand.com/mcp"
}
}
}
托管实例的所有调用方共用一个 FDIC 请求速率控制器和一个 dataframe 工作区,因此 fdic_dataframe_describe 在此处需要提供表的确切名称;列表功能已关闭。
自托管 / 本地运行
将以下内容添加到 MCP 客户端配置文件中。无需 API 密钥。
{
"mcpServers": {
"fdic-banks-mcp-server": {
"type": "stdio",
"command": "bunx",
"args": ["@cyanheads/fdic-banks-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info"
}
}
}
}
也可以使用 npx(无需 Bun):
{
"mcpServers": {
"fdic-banks-mcp-server": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@cyanheads/fdic-banks-mcp-server@latest"],
"env": {
"MCP_TRANSPORT_TYPE": "stdio",
"MCP_LOG_LEVEL": "info"
}
}
}
}
也可以使用 Docker:
{
"mcpServers": {
"fdic-banks-mcp-server": {
"type": "stdio",
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "ghcr.io/cyanheads/fdic-banks-mcp-server:latest"]
}
}
}
如需使用 Streamable HTTP,请设置传输方式并启动服务:
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://localhost:3010/mcp
先决条件
- Bun v1.4.0 或更高版本(或 Node.js v24+)。
- 无需账户或 API 密钥:FDIC BankFind Suite API 是公开的。
安装
- 克隆仓库:
git clone https://github.com/cyanheads/fdic-banks-mcp-server.git
- 进入目录:
cd fdic-banks-mcp-server
- 安装依赖项:
bun install
- 配置环境:
cp .env.example .env
# every variable is optional; edit .env to override a default
配置
| 变量 | 描述 | 默认值 |
|---|---|---|
FDIC_RATE_LIMIT_RPS | 对 api.fdic.gov 每秒最多启动的请求数(1–15),由进程中的所有调用方共享。 | 8 |
FDIC_CACHE_TTL_SECONDS | 进程内 FDIC 响应缓存的有效期,单位为秒;0 表示禁用缓存。 | 3600 |
FDIC_PANEL_MAX_ROWS | 单个 fdic_query_financials 面板的行数上限(1,000–200,000);达到上限时保留最新的季度数据。 | 50000 |
FDIC_DATASET_TTL_SECONDS | 每个暂存数据帧的有效期,单位为秒(最短 60 秒)。 | 86400 |
FDIC_DATAFRAME_DROP_ENABLED | 设置为 true 以启用 fdic_dataframe_drop。 | false |
CANVAS_PROVIDER_TYPE | 数据帧引擎:duckdb,或设置为 none 以关闭暂存和数据帧工具。未设置时,服务会使用 duckdb。 | duckdb |
MCP_TRANSPORT_TYPE | 传输方式:stdio 或 http。 | stdio |
MCP_HTTP_PORT | HTTP 服务端口。 | 3010 |
MCP_SESSION_MODE | HTTP 会话模式:stateless、stateful 或 auto。 | stateless |
MCP_AUTH_MODE | 身份验证:none、jwt 或 oauth。 | none |
MCP_LOG_LEVEL | 日志级别(debug、info、warning、error 等)。 | info |
LOGS_DIR | 日志文件目录(仅 Node.js)。 | <app-root>/logs |
STORAGE_PROVIDER_TYPE | 存储后端:in-memory、filesystem、supabase、cloudflare-kv/r2/d1。 | in-memory |
OTEL_ENABLED | 启用 OpenTelemetry。 | false |
完整的可选覆盖项列表,请参阅 .env.example。
运行服务
本地开发
-
构建并运行生产版本:
# One-time build bun run rebuild # Run the built server bun run start:http # or bun run start:stdio -
运行检查和测试:
bun run devcheck # Lints, formats, type-checks, and more bun run test # Runs the test suite
项目结构
| 目录 | 用途 |
|---|---|
src/index.ts | createApp() 入口:注册工具、设置服务说明,并启动 FDIC 服务和 canvas 桥接。 |
src/config | 使用 Zod 解析并验证服务专用的环境变量。 |
src/mcp-server/tools | 工具定义(*.tool.ts)、共享输入架构和 Markdown 辅助工具。共 10 个工具。 |
src/services/fdic | FDIC BankFind 客户端(请求节流器、响应缓存、查询构建器、规范化)、指标目录和参考表。 |
src/services/canvas-bridge | 适配框架的 DataCanvas:df_<id> 表名、每表 TTL 和溯源信息。 |
tests/ | 单元测试和集成测试,结构与 src/ 对应。 |
开发指南
开发指南和架构规则请参阅 CLAUDE.md。简要内容如下:
- 处理程序抛出错误,框架负责捕获——工具逻辑中不要使用
try/catch - 使用
ctx.log记录日志,使用ctx.state存储数据 - 在
src/mcp-server/tools/definitions/index.ts的buildToolDefinitions()中注册新工具 - 封装外部 API 调用:验证原始数据 → 规范化为领域类型 → 返回输出架构;绝不编造缺失字段
贡献
欢迎提交问题。提交前请运行检查和测试:
bun run devcheck
bun run test
许可证
本项目采用 Apache 2.0 许可证授权。详情请参阅 LICENSE 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。