fdic-mcp-server 1.0.8 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +144 -10
- package/dist/index.js +579 -1
- package/dist/server.js +579 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -5,7 +5,7 @@ An MCP (Model Context Protocol) server that provides access to the [FDIC BankFin
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
7
|
- **No API key required** — The FDIC BankFind API is publicly available
|
|
8
|
-
- **
|
|
8
|
+
- **12 tools** covering BankFind datasets plus built-in analytical tools
|
|
9
9
|
- **Flexible ElasticSearch-style filtering** on all endpoints
|
|
10
10
|
- **Pagination support** for large result sets
|
|
11
11
|
- **Dual transport**: stdio (local) or HTTP (remote)
|
|
@@ -28,15 +28,17 @@ An MCP (Model Context Protocol) server that provides access to the [FDIC BankFin
|
|
|
28
28
|
| `fdic_search_sod` | Search Summary of Deposits (branch-level deposit data) |
|
|
29
29
|
| `fdic_search_demographics` | Search quarterly demographics and market-structure data |
|
|
30
30
|
| `fdic_compare_bank_snapshots` | Compare two reporting snapshots across banks and rank growth/profitability changes |
|
|
31
|
+
| `fdic_peer_group_analysis` | Build a peer group and rank an institution against peers on financial metrics |
|
|
32
|
+
|
|
33
|
+
Two tools are server-side analysis helpers:
|
|
34
|
+
- `fdic_compare_bank_snapshots` batches roster lookup, financial snapshots, and optional demographics snapshots inside the MCP server so complex trend prompts do not require many separate tool calls
|
|
35
|
+
- `fdic_peer_group_analysis` builds a peer group from asset size, charter class, and geography criteria, then ranks an institution against peers on financial and efficiency metrics
|
|
31
36
|
|
|
32
37
|
Two tools are convenience lookups rather than separate BankFind datasets:
|
|
33
38
|
- `fdic_get_institution` wraps the `institutions` dataset
|
|
34
39
|
- `fdic_get_institution_failure` wraps the `failures` dataset
|
|
35
40
|
|
|
36
|
-
|
|
37
|
-
- `fdic_compare_bank_snapshots` batches roster lookup, financial snapshots, and optional demographics snapshots inside the MCP server so complex trend prompts do not require many separate tool calls
|
|
38
|
-
- It supports both `snapshot` comparisons and `timeseries` analysis across a quarterly range
|
|
39
|
-
- It computes derived efficiency and balance-sheet metrics and assigns insight tags for notable growth patterns
|
|
41
|
+
`fdic_compare_bank_snapshots` supports both `snapshot` comparisons and `timeseries` analysis across a quarterly range. It computes derived efficiency and balance-sheet metrics and assigns insight tags for notable growth patterns
|
|
40
42
|
|
|
41
43
|
## Filter Syntax
|
|
42
44
|
|
|
@@ -52,9 +54,12 @@ STNAME:"California"
|
|
|
52
54
|
# Numeric range (assets in $thousands)
|
|
53
55
|
ASSET:[1000000 TO *]
|
|
54
56
|
|
|
55
|
-
# Date range
|
|
57
|
+
# Date range (hyphenated format for failures/history datasets)
|
|
56
58
|
FAILDATE:[2008-01-01 TO 2010-12-31]
|
|
57
59
|
|
|
60
|
+
# Date range (compact YYYYMMDD format for financials/demographics/summary datasets)
|
|
61
|
+
REPDTE:[20230101 TO 20231231]
|
|
62
|
+
|
|
58
63
|
# Combine with AND / OR
|
|
59
64
|
STNAME:"Texas" AND ACTIVE:1 AND ASSET:[500000 TO *]
|
|
60
65
|
|
|
@@ -72,6 +77,23 @@ Use the tool description or `fields` parameter to tailor queries to the dataset
|
|
|
72
77
|
|
|
73
78
|
## Installation
|
|
74
79
|
|
|
80
|
+
### From npm
|
|
81
|
+
|
|
82
|
+
Run directly without a global install:
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
npx fdic-mcp-server
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
Or install globally:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
npm install -g fdic-mcp-server
|
|
92
|
+
fdic-mcp-server
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
### From source
|
|
96
|
+
|
|
75
97
|
```bash
|
|
76
98
|
npm install
|
|
77
99
|
npm run build
|
|
@@ -103,6 +125,8 @@ Publishing from GitHub Actions is intended to use npm trusted publishing via Git
|
|
|
103
125
|
|
|
104
126
|
## Usage
|
|
105
127
|
|
|
128
|
+
Client-specific setup notes for Claude Desktop, ChatGPT, Gemini CLI, and GitHub Copilot CLI are in [docs/clients.md](./docs/clients.md).
|
|
129
|
+
|
|
106
130
|
### CLI bundle
|
|
107
131
|
|
|
108
132
|
The build produces two outputs:
|
|
@@ -117,6 +141,19 @@ node dist/index.js
|
|
|
117
141
|
|
|
118
142
|
**Claude Desktop config** (`~/Library/Application\ Support/Claude/claude_desktop_config.json`):
|
|
119
143
|
|
|
144
|
+
```json
|
|
145
|
+
{
|
|
146
|
+
"mcpServers": {
|
|
147
|
+
"fdic": {
|
|
148
|
+
"command": "npx",
|
|
149
|
+
"args": ["-y", "fdic-mcp-server"]
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
If running from a local clone instead of the npm package:
|
|
156
|
+
|
|
120
157
|
```json
|
|
121
158
|
{
|
|
122
159
|
"mcpServers": {
|
|
@@ -178,7 +215,7 @@ sort_order: DESC
|
|
|
178
215
|
(fdic_search_demographics)
|
|
179
216
|
```
|
|
180
217
|
|
|
181
|
-
**Rank banks by growth across two
|
|
218
|
+
**Rank banks by growth across two snapshots (default `analysis_mode: snapshot`):**
|
|
182
219
|
```
|
|
183
220
|
state: North Carolina
|
|
184
221
|
start_repdte: 20211231
|
|
@@ -188,7 +225,7 @@ sort_order: DESC
|
|
|
188
225
|
(fdic_compare_bank_snapshots)
|
|
189
226
|
```
|
|
190
227
|
|
|
191
|
-
**Analyze quarterly trends with streaks and derived metrics:**
|
|
228
|
+
**Analyze quarterly trends with streaks and derived metrics (`analysis_mode: timeseries`):**
|
|
192
229
|
```
|
|
193
230
|
state: North Carolina
|
|
194
231
|
start_repdte: 20211231
|
|
@@ -199,6 +236,45 @@ sort_order: DESC
|
|
|
199
236
|
(fdic_compare_bank_snapshots)
|
|
200
237
|
```
|
|
201
238
|
|
|
239
|
+
**Find peers for a specific bank (auto-derived criteria):**
|
|
240
|
+
```
|
|
241
|
+
cert: 29846
|
|
242
|
+
repdte: 20241231
|
|
243
|
+
(fdic_peer_group_analysis)
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**Define a peer group with explicit criteria:**
|
|
247
|
+
```
|
|
248
|
+
repdte: 20241231
|
|
249
|
+
asset_min: 5000000
|
|
250
|
+
asset_max: 20000000
|
|
251
|
+
charter_classes: ["N"]
|
|
252
|
+
state: NC
|
|
253
|
+
(fdic_peer_group_analysis)
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
**Override auto-derived defaults:**
|
|
257
|
+
```
|
|
258
|
+
cert: 29846
|
|
259
|
+
repdte: 20241231
|
|
260
|
+
asset_min: 3000000
|
|
261
|
+
state: NC
|
|
262
|
+
(fdic_peer_group_analysis)
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
## Peer Group Analysis
|
|
266
|
+
|
|
267
|
+
The `fdic_peer_group_analysis` tool builds a peer group for a bank and ranks it against peers on financial and efficiency metrics at a single report date.
|
|
268
|
+
|
|
269
|
+
The tool returns rankings (competition rank + percentile) and peer group medians for:
|
|
270
|
+
- Total Assets, Total Deposits, ROA, ROE, Net Interest Margin
|
|
271
|
+
- Equity Capital Ratio, Efficiency Ratio, Loan-to-Deposit Ratio
|
|
272
|
+
- Deposits-to-Assets Ratio, Non-Interest Income Share
|
|
273
|
+
|
|
274
|
+
The subject bank is excluded from the peer set and ranking denominators. Ranking denominators are metric-specific — if some peers lack data for a metric, the denominator reflects only peers with valid values.
|
|
275
|
+
|
|
276
|
+
Peer CERTs from the response can be passed to `fdic_compare_bank_snapshots` for trend analysis across the peer group.
|
|
277
|
+
|
|
202
278
|
## Complex Prompts
|
|
203
279
|
|
|
204
280
|
The built-in `fdic_compare_bank_snapshots` tool is meant to make analysis-heavy prompts performant by batching FDIC calls inside the MCP server. The server also caches repeated state/date lookups for a short period, which helps iterative analysis. Good examples:
|
|
@@ -218,8 +294,22 @@ The tool can take either:
|
|
|
218
294
|
Notable outputs from `fdic_compare_bank_snapshots`:
|
|
219
295
|
- point-to-point changes for assets, deposits, net income, ROA, ROE, and office counts
|
|
220
296
|
- derived metrics such as `assets_per_office_change`, `deposits_per_office_change`, and `deposits_to_assets_change`
|
|
221
|
-
- insight tags
|
|
222
|
-
- in `timeseries` mode, quarterly series plus streak metrics
|
|
297
|
+
- insight tags (see [Insight Tags](#insight-tags) below)
|
|
298
|
+
- in `timeseries` mode, quarterly series plus streak metrics
|
|
299
|
+
|
|
300
|
+
### Insight Tags
|
|
301
|
+
|
|
302
|
+
The analysis tool assigns insight tags to individual comparisons and aggregates them in a top-level `insights` summary. All possible tags:
|
|
303
|
+
|
|
304
|
+
| Tag | Meaning |
|
|
305
|
+
|-----|---------|
|
|
306
|
+
| `growth_with_better_profitability` | Asset growth >= 25%, deposit growth >= 15%, and ROA improved |
|
|
307
|
+
| `growth_with_branch_expansion` | Asset growth >= 25%, deposit growth >= 15%, and office count increased |
|
|
308
|
+
| `balance_sheet_growth_without_profitability` | Asset growth >= 20% but ROA and ROE both flat or declining |
|
|
309
|
+
| `growth_with_branch_consolidation` | Positive asset growth while office count decreased |
|
|
310
|
+
| `deposit_mix_softening` | Deposits declined both in absolute terms and as a share of total assets |
|
|
311
|
+
| `sustained_asset_growth` | (timeseries only) Three or more consecutive quarters of rising assets |
|
|
312
|
+
| `multi_quarter_roa_decline` | (timeseries only) Two or more consecutive quarters of falling ROA |
|
|
223
313
|
|
|
224
314
|
## Response Shape
|
|
225
315
|
|
|
@@ -254,6 +344,50 @@ Typical lookup miss response shape:
|
|
|
254
344
|
}
|
|
255
345
|
```
|
|
256
346
|
|
|
347
|
+
Typical analysis response shape (`fdic_compare_bank_snapshots`):
|
|
348
|
+
|
|
349
|
+
```json
|
|
350
|
+
{
|
|
351
|
+
"total_candidates": 150,
|
|
352
|
+
"analyzed_count": 142,
|
|
353
|
+
"start_repdte": "20211231",
|
|
354
|
+
"end_repdte": "20250630",
|
|
355
|
+
"analysis_mode": "snapshot",
|
|
356
|
+
"sort_by": "asset_growth",
|
|
357
|
+
"sort_order": "DESC",
|
|
358
|
+
"warnings": [],
|
|
359
|
+
"insights": {
|
|
360
|
+
"growth_with_better_profitability": ["Bank A", "Bank B"],
|
|
361
|
+
"growth_with_branch_expansion": ["Bank A"],
|
|
362
|
+
"balance_sheet_growth_without_profitability": [],
|
|
363
|
+
"growth_with_branch_consolidation": ["Bank C"],
|
|
364
|
+
"deposit_mix_softening": [],
|
|
365
|
+
"sustained_asset_growth": [],
|
|
366
|
+
"multi_quarter_roa_decline": []
|
|
367
|
+
},
|
|
368
|
+
"total": 142,
|
|
369
|
+
"offset": 0,
|
|
370
|
+
"count": 10,
|
|
371
|
+
"has_more": true,
|
|
372
|
+
"next_offset": 10,
|
|
373
|
+
"comparisons": [
|
|
374
|
+
{
|
|
375
|
+
"cert": 12345,
|
|
376
|
+
"name": "Bank A",
|
|
377
|
+
"asset_growth": 50000,
|
|
378
|
+
"asset_growth_pct": 45.2,
|
|
379
|
+
"insights": ["growth_with_better_profitability", "growth_with_branch_expansion"]
|
|
380
|
+
}
|
|
381
|
+
]
|
|
382
|
+
}
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
The `warnings` array is populated when the server detects a data issue, such as the institution roster being truncated because it exceeded the FDIC API's per-request limit.
|
|
386
|
+
|
|
387
|
+
In most successful analyses, `warnings` will be empty.
|
|
388
|
+
|
|
389
|
+
The `sustained_asset_growth` and `multi_quarter_roa_decline` insight summaries are only populated for `analysis_mode: "timeseries"`.
|
|
390
|
+
|
|
257
391
|
## Data Notes
|
|
258
392
|
|
|
259
393
|
- Monetary values are in **$thousands** unless otherwise noted
|