@cyanheads/congressgov-mcp-server 0.7.0 → 0.7.2
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/AGENTS.md +31 -19
- package/CLAUDE.md +31 -19
- package/Dockerfile +2 -2
- package/README.md +216 -92
- package/changelog/0.1.x/0.1.0.md +36 -0
- package/changelog/0.2.x/0.2.0.md +26 -0
- package/changelog/0.2.x/0.2.1.md +16 -0
- package/changelog/0.3.x/0.3.0.md +26 -0
- package/changelog/0.3.x/0.3.1.md +14 -0
- package/changelog/0.3.x/0.3.10.md +15 -0
- package/changelog/0.3.x/0.3.11.md +18 -0
- package/changelog/0.3.x/0.3.12.md +15 -0
- package/changelog/0.3.x/0.3.13.md +20 -0
- package/changelog/0.3.x/0.3.14.md +30 -0
- package/changelog/0.3.x/0.3.15.md +28 -0
- package/changelog/0.3.x/0.3.16.md +34 -0
- package/changelog/0.3.x/0.3.17.md +28 -0
- package/changelog/0.3.x/0.3.18.md +18 -0
- package/changelog/0.3.x/0.3.19.md +36 -0
- package/changelog/0.3.x/0.3.2.md +12 -0
- package/changelog/0.3.x/0.3.20.md +22 -0
- package/changelog/0.3.x/0.3.21.md +15 -0
- package/changelog/0.3.x/0.3.22.md +29 -0
- package/changelog/0.3.x/0.3.23.md +25 -0
- package/changelog/0.3.x/0.3.24.md +20 -0
- package/changelog/0.3.x/0.3.25.md +12 -0
- package/changelog/0.3.x/0.3.26.md +25 -0
- package/changelog/0.3.x/0.3.27.md +16 -0
- package/changelog/0.3.x/0.3.28.md +18 -0
- package/changelog/0.3.x/0.3.29.md +13 -0
- package/changelog/0.3.x/0.3.3.md +11 -0
- package/changelog/0.3.x/0.3.30.md +28 -0
- package/changelog/0.3.x/0.3.31.md +28 -0
- package/changelog/0.3.x/0.3.32.md +21 -0
- package/changelog/0.3.x/0.3.4.md +18 -0
- package/changelog/0.3.x/0.3.5.md +23 -0
- package/changelog/0.3.x/0.3.6.md +10 -0
- package/changelog/0.3.x/0.3.7.md +15 -0
- package/changelog/0.3.x/0.3.8.md +29 -0
- package/changelog/0.3.x/0.3.9.md +21 -0
- package/changelog/0.4.x/0.4.0.md +28 -0
- package/changelog/0.4.x/0.4.1.md +17 -0
- package/changelog/0.4.x/0.4.2.md +39 -0
- package/changelog/0.4.x/0.4.3.md +16 -0
- package/changelog/0.5.x/0.5.0.md +22 -0
- package/changelog/0.5.x/0.5.1.md +16 -0
- package/changelog/0.5.x/0.5.2.md +29 -0
- package/changelog/0.6.x/0.6.0.md +24 -0
- package/changelog/0.7.x/0.7.0.md +13 -0
- package/changelog/0.7.x/0.7.1.md +35 -0
- package/changelog/0.7.x/0.7.2.md +20 -0
- package/changelog/template.md +151 -0
- package/dist/config/server-config.d.ts +3 -3
- package/dist/config/server-config.d.ts.map +1 -1
- package/dist/config/server-config.js +6 -3
- package/dist/config/server-config.js.map +1 -1
- package/dist/index.js +23 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp-server/tools/definitions/bill-lookup.tool.d.ts +12 -4
- package/dist/mcp-server/tools/definitions/bill-lookup.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/bill-lookup.tool.js +94 -3
- package/dist/mcp-server/tools/definitions/bill-lookup.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/bill-summaries.tool.d.ts +4 -0
- package/dist/mcp-server/tools/definitions/bill-summaries.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/bill-summaries.tool.js +34 -6
- package/dist/mcp-server/tools/definitions/bill-summaries.tool.js.map +1 -1
- package/dist/mcp-server/tools/definitions/committee-lookup.tool.d.ts +4 -0
- package/dist/mcp-server/tools/definitions/committee-lookup.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/committee-lookup.tool.js +2 -2
- package/dist/mcp-server/tools/definitions/committee-reports.tool.d.ts +9 -2
- package/dist/mcp-server/tools/definitions/committee-reports.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/committee-reports.tool.js +2 -2
- package/dist/mcp-server/tools/definitions/crs-reports.tool.d.ts +4 -0
- package/dist/mcp-server/tools/definitions/crs-reports.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/crs-reports.tool.js +2 -2
- package/dist/mcp-server/tools/definitions/daily-record.tool.d.ts +9 -2
- package/dist/mcp-server/tools/definitions/daily-record.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/daily-record.tool.js +2 -2
- package/dist/mcp-server/tools/definitions/enacted-laws.tool.d.ts +4 -0
- package/dist/mcp-server/tools/definitions/enacted-laws.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/enacted-laws.tool.js +2 -2
- package/dist/mcp-server/tools/definitions/member-lookup.tool.d.ts +4 -0
- package/dist/mcp-server/tools/definitions/member-lookup.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/member-lookup.tool.js +2 -2
- package/dist/mcp-server/tools/definitions/roll-votes.tool.d.ts +4 -0
- package/dist/mcp-server/tools/definitions/roll-votes.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/roll-votes.tool.js +2 -2
- package/dist/mcp-server/tools/definitions/search-bills.tool.d.ts +1 -1
- package/dist/mcp-server/tools/definitions/search-bills.tool.js +3 -3
- package/dist/mcp-server/tools/definitions/senate-nominations.tool.d.ts +4 -0
- package/dist/mcp-server/tools/definitions/senate-nominations.tool.d.ts.map +1 -1
- package/dist/mcp-server/tools/definitions/senate-nominations.tool.js +2 -2
- package/dist/mcp-server/tools/format-helpers.d.ts.map +1 -1
- package/dist/mcp-server/tools/format-helpers.js +85 -30
- package/dist/mcp-server/tools/format-helpers.js.map +1 -1
- package/dist/mcp-server/tools/summary-window.d.ts +112 -0
- package/dist/mcp-server/tools/summary-window.d.ts.map +1 -0
- package/dist/mcp-server/tools/summary-window.js +182 -0
- package/dist/mcp-server/tools/summary-window.js.map +1 -0
- package/dist/mcp-server/tools/tool-helpers.d.ts +26 -2
- package/dist/mcp-server/tools/tool-helpers.d.ts.map +1 -1
- package/dist/mcp-server/tools/tool-helpers.js +26 -2
- package/dist/mcp-server/tools/tool-helpers.js.map +1 -1
- package/dist/services/congress-api/congress-api-service.d.ts.map +1 -1
- package/dist/services/congress-api/congress-api-service.js +8 -11
- package/dist/services/congress-api/congress-api-service.js.map +1 -1
- package/dist/services/congress-documents/congress-documents-service.d.ts.map +1 -1
- package/dist/services/congress-documents/congress-documents-service.js +10 -9
- package/dist/services/congress-documents/congress-documents-service.js.map +1 -1
- package/dist/services/congress-documents/extract-text-stream.js +1 -1
- package/dist/services/congress-documents/extract-text-stream.js.map +1 -1
- package/dist/services/congress-documents/extract-text.d.ts +0 -6
- package/dist/services/congress-documents/extract-text.d.ts.map +1 -1
- package/dist/services/congress-documents/extract-text.js +4 -37
- package/dist/services/congress-documents/extract-text.js.map +1 -1
- package/dist/services/congress-mirror/congress-mirror-service.js +1 -1
- package/dist/services/congress-mirror/ingest.d.ts +1 -1
- package/dist/services/congress-mirror/normalize.d.ts +4 -1
- package/dist/services/congress-mirror/normalize.d.ts.map +1 -1
- package/dist/services/congress-mirror/normalize.js +8 -12
- package/dist/services/congress-mirror/normalize.js.map +1 -1
- package/dist/services/congress-mirror/types.d.ts +1 -1
- package/dist/services/senate-lis/parse.d.ts.map +1 -1
- package/dist/services/senate-lis/parse.js +74 -2
- package/dist/services/senate-lis/parse.js.map +1 -1
- package/dist/services/senate-lis/senate-vote-service.d.ts.map +1 -1
- package/dist/services/senate-lis/senate-vote-service.js +9 -7
- package/dist/services/senate-lis/senate-vote-service.js.map +1 -1
- package/dist/services/senate-lis/types.d.ts +8 -1
- package/dist/services/senate-lis/types.d.ts.map +1 -1
- package/dist/utils/character-references.d.ts +27 -0
- package/dist/utils/character-references.d.ts.map +1 -0
- package/dist/utils/character-references.js +60 -0
- package/dist/utils/character-references.js.map +1 -0
- package/package.json +11 -9
- package/server.json +3 -3
package/README.md
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
<div align="center">
|
|
9
9
|
|
|
10
|
-
[](./CHANGELOG.md) [](./LICENSE) [](https://github.com/users/cyanheads/packages/container/package/congressgov-mcp-server) [](https://modelcontextprotocol.io/) [](https://www.npmjs.com/package/@cyanheads/congressgov-mcp-server) [](https://www.typescriptlang.org/) [](https://bun.sh/)
|
|
11
11
|
|
|
12
12
|
</div>
|
|
13
13
|
|
|
@@ -27,9 +27,11 @@
|
|
|
27
27
|
|
|
28
28
|
---
|
|
29
29
|
|
|
30
|
-
##
|
|
30
|
+
## Overview
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
U.S. congressional data from the Congress.gov API v3 and the Senate's official vote feed — bills, enacted laws, members, committees, roll call votes, and presidential nominations. Browse legislative activity, read bill and report text, and track the Senate confirmation pipeline from any MCP client. Runs as a stdio process, a local Streamable HTTP server, or the public hosted endpoint above.
|
|
33
|
+
|
|
34
|
+
### Tools
|
|
33
35
|
|
|
34
36
|
| Tool | Description |
|
|
35
37
|
|:---|:---|
|
|
@@ -45,122 +47,192 @@ Eleven read-only tools for querying U.S. legislative data:
|
|
|
45
47
|
| `congressgov_daily_record` | Browse the daily Congressional Record — floor speeches, debates, and proceedings |
|
|
46
48
|
| `congressgov_search_bills` | Keyword-search bill titles and CRS summaries via a local full-text mirror (opt-in, off by default) |
|
|
47
49
|
|
|
48
|
-
###
|
|
50
|
+
### Resources
|
|
49
51
|
|
|
50
|
-
|
|
52
|
+
| Resource | Description |
|
|
53
|
+
|:---|:---|
|
|
54
|
+
| `congress://current` | Current congress number, session dates, chamber info |
|
|
55
|
+
| `congress://bill-types` | Reference table of valid bill type codes |
|
|
56
|
+
| `congress://member/{bioguideId}` | Member profile by bioguide ID |
|
|
57
|
+
| `congress://bill/{congress}/{billType}/{billNumber}` | Bill detail by congress, type, and number |
|
|
58
|
+
| `congress://committee/{committeeCode}` | Committee detail by committee code |
|
|
59
|
+
|
|
60
|
+
Bill, member, and committee data is also reachable through `congressgov_bill_lookup`, `congressgov_member_lookup`, and `congressgov_committee_lookup` (operation `get`) — many MCP clients are tool-only and never surface resources.
|
|
51
61
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
62
|
+
### Prompts
|
|
63
|
+
|
|
64
|
+
| Prompt | Description |
|
|
65
|
+
|:---|:---|
|
|
66
|
+
| `congressgov_bill_analysis` | Structured framework for analyzing a bill |
|
|
67
|
+
| `congressgov_legislative_research` | Research framework for a policy area across Congress |
|
|
68
|
+
|
|
69
|
+
## Capability reference
|
|
70
|
+
|
|
71
|
+
### `congressgov_bill_lookup` <sub>tool</sub>
|
|
72
|
+
|
|
73
|
+
- Operations: `list` (browse by congress/billType/date range — no keyword search), `get` (full detail), or drill into `actions`, `amendments`, `cosponsors`, `committees`, `subjects`, `summaries`, `text`, `titles`, `related`
|
|
74
|
+
- `list` defaults to `order='recent'` (newest update-date first); `limit` 1–250, `offset` pagination
|
|
75
|
+
- `content` reads a text version's actual document text: select the version with `textVersionIndex` (0-based, against `text`'s order), the window with `characterOffset`/`characterLimit` (1–100,000 chars, default 25,000), and follow `nextOffset` to walk a full bill
|
|
76
|
+
- `summaries` selects one version with `versionCode` (the code a summary row carries — `00` introduced, `49` public law) and reads each row's text through the same `characterOffset`/`characterLimit` window; a row past the window carries `textTotalCharacters`, `textTruncated`, and `textNextOffset`, and a window end never splits an HTML tag or character reference, so following `textNextOffset` reassembles the upstream text exactly
|
|
77
|
+
- Typed failures on `content`: `document_unavailable`, `format_unavailable`, `document_fetch_failed`, `document_too_large`, `offset_past_end`, alongside the shared `not_found` / `rate_limited` / `invalid_request` / `upstream_error` set — `offset_past_end` also covers a `summaries` call whose `characterOffset` is past the end of every returned row
|
|
57
78
|
|
|
58
79
|
---
|
|
59
80
|
|
|
60
|
-
### `
|
|
81
|
+
### `congressgov_enacted_laws` <sub>tool</sub>
|
|
61
82
|
|
|
62
|
-
|
|
83
|
+
- `list` filters by congress and `lawType` (`pub` public laws, `priv` private) — the enactment-status filter `congressgov_bill_lookup` doesn't offer
|
|
84
|
+
- `get` returns the origin bill record; the law citation lives on the bill's `laws[]` array (e.g. `{"number":"118-2","type":"Public Law"}`)
|
|
85
|
+
- `lawNumber` accepts either the bare number (`90`) or the full `{congress}-{number}` citation a `list` row carries; a citation naming a different congress than the `congress` param is rejected rather than silently resolved
|
|
86
|
+
- `limit` 1–250, `offset` pagination for `list`
|
|
63
87
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
### `congressgov_member_lookup` <sub>tool</sub>
|
|
91
|
+
|
|
92
|
+
- No name search — `list` filters by `stateCode` (+ optional `district`, which requires `stateCode`), `congress`, and `currentMember`
|
|
93
|
+
- `get` returns the full profile by `bioguideId` (e.g. `P000197`); `sponsored`/`cosponsored` return that member's legislative portfolio
|
|
94
|
+
- `limit` 1–250, `offset` pagination
|
|
67
95
|
|
|
68
96
|
---
|
|
69
97
|
|
|
70
|
-
### `congressgov_committee_lookup`
|
|
98
|
+
### `congressgov_committee_lookup` <sub>tool</sub>
|
|
99
|
+
|
|
100
|
+
- Committee codes are chamber-prefix (`h`/`s`/`j`) + abbreviation + 2-digit number (e.g. `hsju00`); `get` and sub-resources infer chamber from the prefix, or accept an explicit override
|
|
101
|
+
- `committeeCode` also accepts a committee name, resolved automatically (all-token match, then a bigram-similarity fallback labeled `approximate: true`) against the full cross-chamber roster
|
|
102
|
+
- `list` with `filter` name-matches the same way, paging past the 250-row upstream cap to search the complete roster before filtering
|
|
103
|
+
- `bills` sub-resource defaults to `order='recent'` (newest update-date first, computed client-side since upstream ignores sort); rows carry no titles — chain `congressgov_bill_lookup get` per row
|
|
104
|
+
- `nominations` sub-resource is Senate-only
|
|
105
|
+
|
|
106
|
+
---
|
|
71
107
|
|
|
72
|
-
|
|
108
|
+
### `congressgov_roll_votes` <sub>tool</sub>
|
|
73
109
|
|
|
74
|
-
-
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
110
|
+
- `chamber` is `house` (default, Congress.gov API) or `senate` (the Senate's official LIS XML feed — the API exposes no Senate votes)
|
|
111
|
+
- `list` browses by congress + session (1 or 2), newest-first by default (computed client-side for strict ordering); `get` returns tallies and party breakdown, `members` returns each member's recorded position
|
|
112
|
+
- Senate `list` rows carry the feed's year-less `voteDate` ("19-Dec") alongside a derived `voteDateIso` (`2023-12-19`), resolved across the whole session — including the January votes of a session that sat past December 31
|
|
113
|
+
- Roll call numbers reset each session and are specific to one chamber
|
|
114
|
+
- `limit` 1–250, `offset` pagination for `list` and `members`
|
|
78
115
|
|
|
79
116
|
---
|
|
80
117
|
|
|
81
|
-
### `
|
|
118
|
+
### `congressgov_senate_nominations` <sub>tool</sub>
|
|
119
|
+
|
|
120
|
+
- Nominations use `PN` numbering; `list` browses by congress, `get` returns detail, `actions`/`committees`/`hearings` cover the confirmation pipeline, `nominees` returns individuals in a batch (requires `ordinal`)
|
|
121
|
+
- Multi-part parents (e.g. `PN851`) carry no activity of their own — sub-resources live on partitioned children (`851-1`, `851-2`, …); a bare-parent sub-resource call on such a nomination returns an enrichment notice pointing at the partitioned form
|
|
122
|
+
- `ordinal` is discovered from the nomination's `nominees` array via `get` first
|
|
123
|
+
|
|
124
|
+
---
|
|
82
125
|
|
|
83
|
-
|
|
126
|
+
### `congressgov_bill_summaries` <sub>tool</sub>
|
|
84
127
|
|
|
85
|
-
-
|
|
86
|
-
-
|
|
87
|
-
- `
|
|
88
|
-
- `
|
|
128
|
+
- Filters by `congress` and `billType` (requires `congress`); date filters apply to the CRS summary's update time, not the bill's action date
|
|
129
|
+
- Defaults to summaries updated in the last 7 days when neither date bound is supplied
|
|
130
|
+
- A page stops adding rows once they reach a fixed response-character budget: at least one row always returns, `pagination.nextOffset` resumes at the first row not returned, and a notice discloses the stop
|
|
131
|
+
- A summary past the per-row window arrives as an exact character window carrying `textTotalCharacters`, `textTruncated`, and `textNextOffset`; the notice names the `congressgov_bill_lookup` call that reads on from there
|
|
132
|
+
- For summaries of one specific bill — and to read a windowed summary to the end — use `congressgov_bill_lookup` with `operation='summaries'` instead
|
|
89
133
|
|
|
90
134
|
---
|
|
91
135
|
|
|
92
|
-
### `
|
|
136
|
+
### `congressgov_crs_reports` <sub>tool</sub>
|
|
137
|
+
|
|
138
|
+
- Report IDs use letter-number codes (e.g. `R40097`, `RL33612`, `IF12345`)
|
|
139
|
+
- `list` browses the catalog; `get` returns full detail (authors, topics, summary, download formats) by `reportNumber`
|
|
140
|
+
- `limit` 1–250, `offset` pagination for `list`
|
|
93
141
|
|
|
94
|
-
|
|
142
|
+
---
|
|
95
143
|
|
|
96
|
-
|
|
97
|
-
|
|
144
|
+
### `congressgov_committee_reports` <sub>tool</sub>
|
|
145
|
+
|
|
146
|
+
- Report types: `hrpt` (House), `srpt` (Senate), `erpt` (Executive); `list` browses by congress + optional `reportType`, `get` returns citation/title/committees/associated bill
|
|
147
|
+
- `text` lists each format's `{type, url}` link (report formats arrive one per entry, unlike bill text versions); `content` then reads the actual text, a bounded character window at a time via `characterOffset`/`characterLimit` (1–100,000 chars, default 25,000)
|
|
148
|
+
- Typed failures on `content`: `document_unavailable`, `format_unavailable`, `document_fetch_failed`, `document_too_large`, `offset_past_end`
|
|
98
149
|
|
|
99
150
|
---
|
|
100
151
|
|
|
101
|
-
### `
|
|
152
|
+
### `congressgov_daily_record` <sub>tool</sub>
|
|
153
|
+
|
|
154
|
+
- Hierarchical navigation: `list` (volumes) → `issues` (within a volume) → `articles` (within an issue)
|
|
155
|
+
- `content` reads one article's text, selected by `articleIndex` (0-based) and bounded by `characterOffset`/`characterLimit`; the Congressional Record publishes Formatted Text and PDF only (no XML)
|
|
156
|
+
- Typed failures on `content`: `document_unavailable`, `format_unavailable`, `document_fetch_failed`, `document_too_large`, `offset_past_end`
|
|
102
157
|
|
|
103
|
-
|
|
158
|
+
---
|
|
104
159
|
|
|
105
|
-
|
|
106
|
-
|
|
160
|
+
### `congressgov_search_bills` <sub>tool</sub>
|
|
161
|
+
|
|
162
|
+
- **Opt-in:** off by default and absent from `tools/list` entirely until `CONGRESS_MIRROR_ENABLED=true`
|
|
163
|
+
- Keyword-searches a local SQLite FTS5 mirror of bill titles + CRS summaries — the discovery path the Congress.gov API itself lacks; policy area and full bill text are not indexed
|
|
164
|
+
- Narrows with `congress`, `billType`, and `originChamber`; returns BM25-ranked matches with each bill's derived id, ready for a follow-up `congressgov_bill_lookup` call
|
|
165
|
+
- With the flag set but the index not yet built (`bun run mirror:init`), the tool answers with an empty result and a build-the-index notice instead of an error
|
|
166
|
+
- `limit` 1–100 (a narrower cap than the other tools' 1–250), `offset` pagination
|
|
107
167
|
|
|
108
168
|
---
|
|
109
169
|
|
|
110
|
-
### `
|
|
170
|
+
### `congress://current` <sub>resource</sub>
|
|
111
171
|
|
|
112
|
-
|
|
172
|
+
- Current congress number, session dates, and chamber info — baseline context for other queries
|
|
173
|
+
- Cached publicly for 1 hour
|
|
113
174
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
### `congress://bill-types` <sub>resource</sub>
|
|
178
|
+
|
|
179
|
+
- Static reference table of the 8 valid bill type codes (`hr`, `s`, `hjres`, `sjres`, `hconres`, `sconres`, `hres`, `sres`) with chamber and an example citation
|
|
180
|
+
- Cached publicly for 24 hours — fixed by chamber rules, not fetched upstream
|
|
117
181
|
|
|
118
182
|
---
|
|
119
183
|
|
|
120
|
-
### `
|
|
184
|
+
### `congress://member/{bioguideId}` <sub>resource</sub>
|
|
121
185
|
|
|
122
|
-
|
|
186
|
+
- `bioguideId` must match one uppercase letter followed by 6 digits (e.g. `P000197`)
|
|
187
|
+
- Returns the member profile — name, state, party, terms, leadership, office, legislation counts
|
|
123
188
|
|
|
124
|
-
|
|
125
|
-
- Narrow with `congress`, `billType`, and `originChamber` filters
|
|
126
|
-
- Returns BM25-ranked matches with each bill's derived id, ready for a follow-up `congressgov_bill_lookup` call
|
|
189
|
+
---
|
|
127
190
|
|
|
128
|
-
|
|
191
|
+
### `congress://bill/{congress}/{billType}/{billNumber}` <sub>resource</sub>
|
|
129
192
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
| `congress://current` | Current congress number, session dates, chamber info |
|
|
133
|
-
| `congress://bill-types` | Reference table of valid bill type codes |
|
|
134
|
-
| `congress://member/{bioguideId}` | Member profile by bioguide ID |
|
|
135
|
-
| `congress://bill/{congress}/{billType}/{billNumber}` | Bill detail by congress, type, and number |
|
|
136
|
-
| `congress://committee/{committeeCode}` | Committee detail by committee code |
|
|
193
|
+
- `congress` and `billNumber` must be positive integers; `billType` must be a valid bill type code
|
|
194
|
+
- Returns bill detail — sponsor, status, policy area, committees, latest action
|
|
137
195
|
|
|
138
|
-
|
|
196
|
+
---
|
|
139
197
|
|
|
140
|
-
|
|
141
|
-
|:---|:---|
|
|
142
|
-
| `congressgov_bill_analysis` | Structured framework for analyzing a bill |
|
|
143
|
-
| `congressgov_legislative_research` | Research framework for a policy area across Congress |
|
|
198
|
+
### `congress://committee/{committeeCode}` <sub>resource</sub>
|
|
144
199
|
|
|
145
|
-
|
|
200
|
+
- `committeeCode` must match `h`/`s`/`j` followed by 3–8 lowercase alphanumeric characters (e.g. `hsju00`); chamber is inferred from the first letter
|
|
201
|
+
- Returns committee detail — name, chamber, subcommittees, history, legislation counts
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
### `congressgov_bill_analysis` <sub>prompt</sub>
|
|
206
|
+
|
|
207
|
+
- Arguments: `congress`, `billType`, `billNumber` — all required strings
|
|
208
|
+
- Returns one user message framing a structured analysis (summary, sponsors, committee referrals, action timeline, related legislation, policy implications, outlook) and naming which tools to call for each section
|
|
209
|
+
|
|
210
|
+
---
|
|
146
211
|
|
|
147
|
-
|
|
212
|
+
### `congressgov_legislative_research` <sub>prompt</sub>
|
|
148
213
|
|
|
149
|
-
-
|
|
150
|
-
-
|
|
151
|
-
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
214
|
+
- Arguments: `topic` required; `congress` optional (defaults to the current congress)
|
|
215
|
+
- The discovery plan is configuration-aware: with `CONGRESS_MIRROR_ENABLED` it opens with `congressgov_search_bills`; without it, it asks for a seed (a bill, member, committee, or CRS report id) since no registered tool accepts a topic string
|
|
216
|
+
- Synthesizes findings into landscape, key players, substance, recent activity, and outlook
|
|
217
|
+
|
|
218
|
+
## Features
|
|
219
|
+
|
|
220
|
+
Built on [`@cyanheads/mcp-ts-core`](https://github.com/cyanheads/mcp-ts-core): stdio and Streamable HTTP transports, pluggable auth (`none` / `jwt` / `oauth`), swappable storage (`in-memory`, `filesystem`, `Supabase`, `Cloudflare KV/R2/D1`), structured logging with optional OpenTelemetry tracing.
|
|
155
221
|
|
|
156
222
|
Congress.gov-specific:
|
|
157
223
|
|
|
158
|
-
- Type-safe client for the Congress.gov REST API v3
|
|
224
|
+
- Type-safe client for the Congress.gov REST API v3, plus a second client for the Senate's official LIS XML feed (`fast-xml-parser`) backing Senate roll votes
|
|
159
225
|
- Optional API key from [api.data.gov](https://api.data.gov/signup/) — defaults to `DEMO_KEY` (30 req/hr); own key gets 5,000 req/hr
|
|
160
|
-
-
|
|
161
|
-
-
|
|
226
|
+
- Bounded document-text retrieval for bill text, committee reports, and Congressional Record articles — a 25 MB fetch ceiling, 30s deadline, and a `www.congress.gov` host allowlist
|
|
227
|
+
- Opt-in local SQLite FTS5 mirror (`CONGRESS_MIRROR_ENABLED`) adds keyword search over bill titles and CRS summaries, the one discovery path the API itself lacks
|
|
162
228
|
- All tools are read-only and idempotent
|
|
163
229
|
|
|
230
|
+
Agent-friendly output:
|
|
231
|
+
|
|
232
|
+
- Effective-query echo and total-count enrichment on every browse/list operation, plus a notice when a query resolves to zero matches or an offset runs past the end
|
|
233
|
+
- Character-exact document windows — `content` operations return `offset`/`nextOffset` so walking a multi-megabyte bill or report never skips or repeats a character
|
|
234
|
+
- Typed failure reasons on document reads (`document_unavailable`, `format_unavailable`, `document_too_large`, `offset_past_end`, …) alongside the shared upstream-error set, each resolved to a recovery hint
|
|
235
|
+
|
|
164
236
|
## Getting started
|
|
165
237
|
|
|
166
238
|
### Public Hosted Instance
|
|
@@ -190,6 +262,8 @@ Add the following to your MCP client configuration file.
|
|
|
190
262
|
"command": "bunx",
|
|
191
263
|
"args": ["@cyanheads/congressgov-mcp-server@latest"],
|
|
192
264
|
"env": {
|
|
265
|
+
"MCP_TRANSPORT_TYPE": "stdio",
|
|
266
|
+
"MCP_LOG_LEVEL": "info",
|
|
193
267
|
"CONGRESS_API_KEY": "your-api-key"
|
|
194
268
|
}
|
|
195
269
|
}
|
|
@@ -207,6 +281,8 @@ Or with npx (no Bun required):
|
|
|
207
281
|
"command": "npx",
|
|
208
282
|
"args": ["-y", "@cyanheads/congressgov-mcp-server@latest"],
|
|
209
283
|
"env": {
|
|
284
|
+
"MCP_TRANSPORT_TYPE": "stdio",
|
|
285
|
+
"MCP_LOG_LEVEL": "info",
|
|
210
286
|
"CONGRESS_API_KEY": "your-api-key"
|
|
211
287
|
}
|
|
212
288
|
}
|
|
@@ -214,11 +290,37 @@ Or with npx (no Bun required):
|
|
|
214
290
|
}
|
|
215
291
|
```
|
|
216
292
|
|
|
293
|
+
Or with Docker:
|
|
294
|
+
|
|
295
|
+
```json
|
|
296
|
+
{
|
|
297
|
+
"mcpServers": {
|
|
298
|
+
"congressgov-mcp-server": {
|
|
299
|
+
"type": "stdio",
|
|
300
|
+
"command": "docker",
|
|
301
|
+
"args": [
|
|
302
|
+
"run", "-i", "--rm",
|
|
303
|
+
"-e", "MCP_TRANSPORT_TYPE=stdio",
|
|
304
|
+
"-e", "CONGRESS_API_KEY=your-api-key",
|
|
305
|
+
"ghcr.io/cyanheads/congressgov-mcp-server:latest"
|
|
306
|
+
]
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
```
|
|
311
|
+
|
|
217
312
|
Get a free API key at [api.data.gov/signup](https://api.data.gov/signup/) for 5,000 req/hr. Without a key the server falls back to `DEMO_KEY` (30 req/hr).
|
|
218
313
|
|
|
314
|
+
For Streamable HTTP, set the transport and start the server:
|
|
315
|
+
|
|
316
|
+
```sh
|
|
317
|
+
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 CONGRESS_API_KEY=your-api-key bun run start:http
|
|
318
|
+
# Server listens at http://localhost:3010/mcp
|
|
319
|
+
```
|
|
320
|
+
|
|
219
321
|
### Prerequisites
|
|
220
322
|
|
|
221
|
-
- [Bun v1.
|
|
323
|
+
- [Bun v1.4.0](https://bun.sh/) or higher (or Node.js v24+).
|
|
222
324
|
|
|
223
325
|
### Installation
|
|
224
326
|
|
|
@@ -240,22 +342,33 @@ cd congressgov-mcp-server
|
|
|
240
342
|
bun install
|
|
241
343
|
```
|
|
242
344
|
|
|
243
|
-
|
|
345
|
+
4. **Configure environment:**
|
|
244
346
|
|
|
245
|
-
|
|
347
|
+
```sh
|
|
348
|
+
cp .env.example .env
|
|
349
|
+
# edit .env and set required vars
|
|
350
|
+
```
|
|
351
|
+
|
|
352
|
+
## Configuration
|
|
246
353
|
|
|
247
354
|
| Variable | Description | Default |
|
|
248
355
|
|:---|:---|:---|
|
|
249
|
-
| `CONGRESS_API_KEY` |
|
|
250
|
-
| `CONGRESS_API_BASE_URL` | Congress.gov API base URL | `https://api.congress.gov/v3` |
|
|
251
|
-
| `
|
|
252
|
-
| `
|
|
253
|
-
| `
|
|
254
|
-
| `
|
|
255
|
-
| `
|
|
356
|
+
| `CONGRESS_API_KEY` | API key from [api.data.gov](https://api.data.gov/signup/). Omit to use `DEMO_KEY` (30 req/hr); own key: 5,000 req/hr. | `DEMO_KEY` |
|
|
357
|
+
| `CONGRESS_API_BASE_URL` | Congress.gov API base URL. | `https://api.congress.gov/v3` |
|
|
358
|
+
| `CONGRESS_MIRROR_ENABLED` | Enable the local bill search mirror and the `congressgov_search_bills` tool. | `false` |
|
|
359
|
+
| `CONGRESS_MIRROR_PATH` | Filesystem path to the SQLite mirror index. | `.mirror/bills.sqlite3` |
|
|
360
|
+
| `CONGRESS_MIRROR_REFRESH_CRON` | Cron schedule for the in-process mirror refresh (HTTP transport only). Unset runs `mirror:refresh` manually. | — |
|
|
361
|
+
| `CONGRESS_MIRROR_CONGRESSES` | Comma-separated congress numbers to mirror (e.g. `118,119`). | current congress + 1 prior |
|
|
362
|
+
| `MCP_TRANSPORT_TYPE` | Transport: `stdio` or `http`. | `stdio` |
|
|
363
|
+
| `MCP_HTTP_PORT` | HTTP server port. | `3010` |
|
|
364
|
+
| `MCP_AUTH_MODE` | Authentication: `none`, `jwt`, or `oauth`. | `none` |
|
|
365
|
+
| `MCP_SESSION_MODE` | HTTP session mode: `auto`, `stateful`, or `stateless`; `auto` resolves to `stateful`. | `stateless` |
|
|
366
|
+
| `MCP_LOG_LEVEL` | Log level (`debug`, `info`, `notice`, `warning`, `error`, etc.). | `info` |
|
|
256
367
|
| `LOGS_DIR` | Directory for log files (Node.js only). | `<project-root>/logs` |
|
|
257
|
-
| `STORAGE_PROVIDER_TYPE` | Storage backend | `in-memory` |
|
|
258
|
-
| `OTEL_ENABLED` | Enable [OpenTelemetry instrumentation](https://github.com/cyanheads/mcp-ts-core/tree/main/docs/telemetry) (spans, metrics, completion logs) | `false` |
|
|
368
|
+
| `STORAGE_PROVIDER_TYPE` | Storage backend. | `in-memory` |
|
|
369
|
+
| `OTEL_ENABLED` | Enable [OpenTelemetry instrumentation](https://github.com/cyanheads/mcp-ts-core/tree/main/docs/telemetry) (spans, metrics, completion logs). | `false` |
|
|
370
|
+
|
|
371
|
+
See [`.env.example`](./.env.example) for the full list of optional overrides.
|
|
259
372
|
|
|
260
373
|
## Running the server
|
|
261
374
|
|
|
@@ -269,27 +382,37 @@ All configuration is validated at startup via Zod schemas in `src/config/server-
|
|
|
269
382
|
```
|
|
270
383
|
|
|
271
384
|
- **Run checks and tests:**
|
|
385
|
+
|
|
272
386
|
```sh
|
|
273
|
-
bun run devcheck
|
|
274
|
-
bun run test
|
|
387
|
+
bun run devcheck # Lint, format, typecheck, security
|
|
388
|
+
bun run test # Vitest test suite
|
|
389
|
+
bun run lint:mcp # Validate MCP definitions against spec
|
|
275
390
|
```
|
|
276
391
|
|
|
277
392
|
### Docker
|
|
278
393
|
|
|
279
394
|
```sh
|
|
280
395
|
docker build -t congressgov-mcp-server .
|
|
281
|
-
docker run -e CONGRESS_API_KEY=your-api-key -p 3010:3010 congressgov-mcp-server
|
|
396
|
+
docker run --rm -e CONGRESS_API_KEY=your-api-key -p 3010:3010 congressgov-mcp-server
|
|
282
397
|
```
|
|
283
398
|
|
|
399
|
+
The Dockerfile defaults to HTTP transport, stateless session mode, and logs to `/var/log/congressgov-mcp-server`. OpenTelemetry peer dependencies are installed by default — build with `--build-arg OTEL_ENABLED=false` to omit them.
|
|
400
|
+
|
|
284
401
|
## Project structure
|
|
285
402
|
|
|
286
403
|
| Directory | Purpose |
|
|
287
404
|
|:---|:---|
|
|
288
|
-
| `src/
|
|
289
|
-
| `src/mcp-server/resources/definitions/` | Resource definitions. Congress, bill, member, and committee resources. |
|
|
290
|
-
| `src/mcp-server/prompts/definitions/` | Prompt definitions. Bill analysis and legislative research prompts. |
|
|
291
|
-
| `src/services/congress-api/` | Congress.gov API client — auth, pagination, rate limiting. |
|
|
405
|
+
| `src/index.ts` | `createApp()` entry point — registers tools/resources/prompts and inits services. |
|
|
292
406
|
| `src/config/` | Server-specific environment variable parsing and validation with Zod. |
|
|
407
|
+
| `src/mcp-server/tools/definitions/` | Tool definitions (`*.tool.ts`) — eleven Congress.gov tools. |
|
|
408
|
+
| `src/mcp-server/resources/definitions/` | Resource definitions (`*.resource.ts`) — congress, bill, member, and committee resources. |
|
|
409
|
+
| `src/mcp-server/prompts/definitions/` | Prompt definitions (`*.prompt.ts`) — bill analysis and legislative research. |
|
|
410
|
+
| `src/services/congress-api/` | Congress.gov API client — auth, pagination, rate limiting. |
|
|
411
|
+
| `src/services/congress-documents/` | Bounded document-text fetch — host allowlist, byte ceiling, character window. |
|
|
412
|
+
| `src/services/congress-mirror/` | Local SQLite FTS5 bill-search mirror — ingest, normalize, schema. |
|
|
413
|
+
| `src/services/senate-lis/` | Senate LIS XML client for Senate roll call votes. |
|
|
414
|
+
| `src/utils/` | Shared pure helpers — single-pass HTML/XML character-reference decoding. |
|
|
415
|
+
| `scripts/` | Mirror lifecycle CLI scripts (`mirror:init` / `mirror:refresh` / `mirror:verify`). |
|
|
293
416
|
| `tests/` | Unit and integration tests, mirroring the `src/` structure. |
|
|
294
417
|
|
|
295
418
|
## Development guide
|
|
@@ -297,12 +420,13 @@ docker run -e CONGRESS_API_KEY=your-api-key -p 3010:3010 congressgov-mcp-server
|
|
|
297
420
|
See [`CLAUDE.md`](./CLAUDE.md) for development guidelines and architectural rules. The short version:
|
|
298
421
|
|
|
299
422
|
- Handlers throw, framework catches — no `try/catch` in tool logic
|
|
300
|
-
- Use `ctx.log` for logging, `ctx.state` for storage
|
|
301
|
-
- All tools are read-only with `readOnlyHint: true` and `idempotentHint: true`
|
|
423
|
+
- Use `ctx.log` for request-scoped logging, `ctx.state` for tenant-scoped storage
|
|
424
|
+
- All tools are read-only, with `readOnlyHint: true` and `idempotentHint: true` annotations
|
|
425
|
+
- Wrap external API calls: validate raw → normalize to a domain type → return the output schema; never fabricate missing fields
|
|
302
426
|
|
|
303
427
|
## Contributing
|
|
304
428
|
|
|
305
|
-
Issues
|
|
429
|
+
Issues are welcome. Run checks and tests before submitting:
|
|
306
430
|
|
|
307
431
|
```sh
|
|
308
432
|
bun run devcheck
|
|
@@ -311,4 +435,4 @@ bun run test
|
|
|
311
435
|
|
|
312
436
|
## License
|
|
313
437
|
|
|
314
|
-
|
|
438
|
+
Apache-2.0 — see [LICENSE](./LICENSE) for details.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: Initial release — MCP server wrapping Congress.gov API v3 with 10 tools, 5 resources, and 2 prompts for U.S. legislative data
|
|
3
|
+
breaking: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 0.1.0 — 2026-03-24
|
|
7
|
+
|
|
8
|
+
Initial release. MCP server wrapping the Congress.gov API v3 — the official machine-readable interface to U.S. legislative data maintained by the Library of Congress.
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **10 read-only tools** for querying legislative data:
|
|
13
|
+
- `congressgov_bill_lookup` — browse, filter, and retrieve bill data (actions, sponsors, summaries, text, related bills)
|
|
14
|
+
- `congressgov_enacted_laws` — browse enacted public and private laws by congress
|
|
15
|
+
- `congressgov_member_lookup` — discover members by state/district/congress, retrieve legislative portfolios
|
|
16
|
+
- `congressgov_committee_lookup` — browse committees and retrieve legislation, reports, nominations
|
|
17
|
+
- `congressgov_roll_votes` — retrieve House roll call votes and member voting positions
|
|
18
|
+
- `congressgov_senate_nominations` — browse presidential nominations, track Senate confirmation pipeline
|
|
19
|
+
- `congressgov_bill_summaries` — browse recent CRS bill summaries
|
|
20
|
+
- `congressgov_crs_reports` — browse and retrieve nonpartisan CRS policy analysis reports
|
|
21
|
+
- `congressgov_committee_reports` — browse and retrieve committee reports accompanying legislation
|
|
22
|
+
- `congressgov_daily_record` — browse daily Congressional Record (floor speeches, debates, proceedings)
|
|
23
|
+
- **5 resources** for direct data access:
|
|
24
|
+
- `congress://current` — current congress number, session dates, chamber info
|
|
25
|
+
- `congress://bill-types` — reference table of valid bill type codes
|
|
26
|
+
- `congress://member/{bioguideId}` — member profile
|
|
27
|
+
- `congress://bill/{congress}/{billType}/{billNumber}` — bill detail
|
|
28
|
+
- `congress://committee/{committeeCode}` — committee detail
|
|
29
|
+
- **2 prompt templates** for structured analysis:
|
|
30
|
+
- `congressgov_bill_analysis` — framework for analyzing a bill
|
|
31
|
+
- `congressgov_legislative_research` — research framework for a policy area across Congress
|
|
32
|
+
- **Congress API service** with authentication, pagination, rate limiting, and response normalization
|
|
33
|
+
- **Server configuration** via `CONGRESS_API_KEY` env var (free key from api.data.gov)
|
|
34
|
+
- Dual transport support: stdio and streamable HTTP
|
|
35
|
+
- Docker support
|
|
36
|
+
- Built on `@cyanheads/mcp-ts-core` framework
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: API response key corrections across four endpoints, getVoteMembers + getNominee service methods, dedicated members/nominees tool operations
|
|
3
|
+
breaking: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 0.2.0 — 2026-03-24
|
|
7
|
+
|
|
8
|
+
### Fixed
|
|
9
|
+
|
|
10
|
+
- Corrected API response keys for laws (`laws` → `bills`), House votes (`houseVotes` → `houseRollCallVotes`), committee reports (`committeeReports` → `reports`), and CRS reports endpoint path (`/crs-report` → `/crsreport`)
|
|
11
|
+
- Handled array-wrapped responses from committee report detail endpoint
|
|
12
|
+
- Added nested array unwrapping in `fetchList` for endpoints that nest arrays inside objects (e.g. committee-bills)
|
|
13
|
+
- Fixed committee bills sub-resource list key (`bills` → `committee-bills`)
|
|
14
|
+
- Stripped milliseconds from default ISO date in bill summaries for API compatibility
|
|
15
|
+
|
|
16
|
+
### Added
|
|
17
|
+
|
|
18
|
+
- `getVoteMembers()` service method — dedicated endpoint for individual member voting positions
|
|
19
|
+
- `getNominee()` service method — individual nominee lookup by ordinal within a nomination
|
|
20
|
+
- Separate 'members' operation path in `congressgov_roll_votes` using the new vote members endpoint
|
|
21
|
+
- Separate 'nominees' operation in `congressgov_senate_nominations` with ordinal requirement and actionable error message
|
|
22
|
+
|
|
23
|
+
### Changed
|
|
24
|
+
|
|
25
|
+
- Added missing `idempotentHint: true` annotation to all tool definitions
|
|
26
|
+
- Updated dev dependencies: `@biomejs/biome` 2.4.7→2.4.8, `tsx` 4.19.0→4.21.0, `vitest` 4.1.0→4.1.1
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: Full test suite (10 tool + 5 resource + 2 prompt tests + service), tree.md refresh
|
|
3
|
+
breaking: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 0.2.1 — 2026-03-24
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
|
|
10
|
+
- Full test suite: 10 tool tests, 5 resource tests, 2 prompt tests, and congress-api-service tests using `createMockContext` and Vitest
|
|
11
|
+
- Updated `docs/tree.md` to reflect new `tests/` directory structure
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- Operator precedence parentheses in `congress-api-service.ts` for nullish coalescing expressions
|
|
16
|
+
- Formatting in `senate-nominations.tool.ts`
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: Scoped package rename to @cyanheads/congressgov-mcp-server, TS 5.9 → 6.0, pagination improvements, format-helpers.ts, README overhaul
|
|
3
|
+
breaking: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 0.3.0 — 2026-03-24
|
|
7
|
+
|
|
8
|
+
### Changed
|
|
9
|
+
|
|
10
|
+
- Renamed package to `@cyanheads/congressgov-mcp-server` (scoped under `@cyanheads`)
|
|
11
|
+
- Bumped TypeScript from `^5.9.3` to `^6.0.2`
|
|
12
|
+
- `getDailyIssues` now uses `fetchList` with full pagination support
|
|
13
|
+
- `getMemberLegislation` simplified to return `fetchList` result directly
|
|
14
|
+
- Removed redundant duplicate key from `fetchList` return shape
|
|
15
|
+
- README overhaul: scoped package name, npm badge, npx/Docker/HTTP config examples, cleaner table formatting
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- `format-helpers.ts` — shared `formatResult` formatter for all tool output (readable text with HTML stripping, list summarization, pagination headers)
|
|
20
|
+
- All 10 tools now use `format: formatResult` for structured text output
|
|
21
|
+
- `notFound` error for missing committee reports instead of returning empty objects
|
|
22
|
+
- Detection of Congress.gov API 500-as-404 responses (structured JSON error bodies vs. real outages)
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
|
|
26
|
+
- Daily record `issues` operation now passes `limit` and `offset` params through to the API
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: 5xx retry with exponential backoff (3 attempts, 1s/2s/4s), npm badge URL fix
|
|
3
|
+
breaking: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 0.3.1 — 2026-03-24
|
|
7
|
+
|
|
8
|
+
### Changed
|
|
9
|
+
|
|
10
|
+
- Added retry with exponential backoff for 5xx API errors (3 attempts with 1s/2s/4s delays)
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- npm badge URL now points to scoped package `@cyanheads/congressgov-mcp-server`
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: New `order` input on committee_lookup bills sub-resource, core 0.3.5 → 0.3.7 bump, tool description cleanup
|
|
3
|
+
breaking: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 0.3.10 — 2026-04-19
|
|
7
|
+
|
|
8
|
+
### Added
|
|
9
|
+
|
|
10
|
+
- Added an `order` input to `congressgov_committee_lookup` for the `bills` sub-resource (`'recent'` default, `'oldest'` alternative). `'recent'` surfaces newest-activity bills directly — the tool handles the count probe + tail fetch internally so callers no longer need the `offset = count - limit` workaround
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- Bumped `@cyanheads/mcp-ts-core` from `^0.3.5` to `^0.3.7`
|
|
15
|
+
- Cleaned tool descriptions — removed cross-references to sibling tools and resource URIs, and dropped internal API/implementation notes from `congressgov_bill_lookup`, `congressgov_bill_summaries`, `congressgov_committee_lookup`, `congressgov_enacted_laws`, and `congressgov_member_lookup`
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: Security — API key moved from query string to X-Api-Key header (rotate keys); roll-votes members operation now paginates client-side; ordinal description clarified
|
|
3
|
+
breaking: false
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 0.3.11 — 2026-04-19
|
|
7
|
+
|
|
8
|
+
### Security
|
|
9
|
+
|
|
10
|
+
- Switched Congress.gov API auth from the `?api_key=` query parameter to the `X-Api-Key` header, so the key is no longer embedded in request URLs. Previously, upstream fetch failures (e.g., HTTP 500 on an unknown CRS report ID) surfaced the full URL — including the key — in the error message returned to clients. Rotate any key that was in use before this release
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Fixed `congressgov_roll_votes` `members` operation silently ignoring `limit` and `offset` — the `/house-vote/.../members` endpoint returns the full ~435-member list and does not honor upstream pagination, so the service now paginates the `results` array client-side and returns a `pagination: { count, nextOffset }` alongside the vote record
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
|
|
18
|
+
- Clarified the `ordinal` parameter description on `congressgov_senate_nominations` — the value addresses a batch of nominees, not a single individual; the `nominees` operation returns every person in that batch
|