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 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
- - **11 tools** covering BankFind datasets plus a built-in comparative analysis tool
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
- One tool is a server-side analysis helper:
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 dates without orchestrating many separate queries:**
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 such as `growth_with_better_profitability`, `growth_with_branch_expansion`, `balance_sheet_growth_without_profitability`, and `growth_with_branch_consolidation`
222
- - in `timeseries` mode, quarterly series plus streak metrics like sustained asset growth and multi-quarter ROA decline
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