@cyanheads/congressgov-mcp-server 0.3.20 → 0.3.22

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 CHANGED
@@ -1,8 +1,11 @@
1
1
  # Agent Protocol
2
2
 
3
3
  **Server:** congressgov-mcp-server
4
- **Version:** 0.3.20
5
- **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)
4
+ **Version:** 0.3.22
5
+ **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.13`
6
+ **Engines:** Bun ≥1.3.0, Node ≥24.0.0
7
+ **MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
8
+ **Zod:** ^4.4.3
6
9
 
7
10
  > **Read the framework docs first:** `node_modules/@cyanheads/mcp-ts-core/CLAUDE.md` contains the full API reference — builders, Context, error codes, exports, patterns. This file covers server-specific conventions only.
8
11
 
@@ -37,7 +40,7 @@ Tailor suggestions to what's actually missing or stale — don't recite the full
37
40
 
38
41
  | Env Var | Required | Description |
39
42
  |:--------|:---------|:------------|
40
- | `CONGRESS_API_KEY` | Yes | API key from [api.data.gov](https://api.data.gov/signup/) (free, 5,000 req/hr) |
43
+ | `CONGRESS_API_KEY` | No | Optional. Defaults to `DEMO_KEY` (30 req/hr). Own key from [api.data.gov](https://api.data.gov/signup/): 1,000 req/hr. |
41
44
  | `CONGRESS_API_BASE_URL` | No | Defaults to `https://api.congress.gov/v3` |
42
45
 
43
46
  ---
@@ -51,6 +54,7 @@ Tailor suggestions to what's actually missing or stale — don't recite the full
51
54
  - **Secrets in env vars only** — never hardcoded.
52
55
  - **All tools are read-only.** Every tool gets `annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true }`.
53
56
  - **API key stays out of logs.** The service appends `api_key` as a query param — never log full URLs.
57
+ - **Close the loop on issues.** When implementing work tracked by a GitHub issue, comment on the issue with what landed and close it. Do both — a comment without a close leaves stale issues open; a close without a comment leaves no record of what shipped. The comment is for future readers — state the concrete changes, not the conversation that produced them.
54
58
 
55
59
  ---
56
60
 
@@ -181,7 +185,7 @@ All tools share these patterns. The service layer handles them uniformly:
181
185
  ```ts
182
186
  // Framework — z is re-exported, no separate zod import needed
183
187
  import { tool, z } from '@cyanheads/mcp-ts-core';
184
- import { notFound, serviceUnavailable, rateLimited } from '@cyanheads/mcp-ts-core/errors';
188
+ import { McpError, JsonRpcErrorCode, notFound, serviceUnavailable, rateLimited, validationError } from '@cyanheads/mcp-ts-core/errors';
185
189
 
186
190
  // Server's own code — via path alias
187
191
  import { getCongressApi } from '@/services/congress-api/congress-api-service.js';
@@ -209,11 +213,14 @@ Available skills:
209
213
  | `add-service` | Scaffold a new service integration |
210
214
  | `add-test` | Scaffold test file for a tool, resource, or service |
211
215
  | `field-test` | Exercise tools/resources/prompts with real inputs, verify behavior, report issues |
216
+ | `tool-defs-analysis` | Read-only audit of MCP definition language across the surface — voice, leaks, defaults, recovery hints, output descriptions |
212
217
  | `security-pass` | Audit server for MCP-flavored security gaps: output injection, scope blast radius, input sinks, tenant isolation |
218
+ | `code-simplifier` | Post-session cleanup against `git diff` — modernize syntax, consolidate duplication, align with the codebase |
213
219
  | `devcheck` | Lint, format, typecheck, audit |
214
220
  | `polish-docs-meta` | Finalize docs, README, metadata, and agent protocol for shipping |
221
+ | `git-wrapup` | Land working-tree changes as a versioned commit + annotated tag — version bump, changelog, verify, tag. Local only. |
222
+ | `release-and-publish` | Push + npm + MCP Registry + GH Release + Docker. Picks up from `git-wrapup` |
215
223
  | `maintenance` | Investigate changelogs, adopt upstream changes, sync skills to agent dirs |
216
- | `release-and-publish` | Post-wrapup ship workflow: verification gate, push, publish to npm/MCP Registry/GHCR |
217
224
  | `report-issue-framework` | File bugs/features against `@cyanheads/mcp-ts-core` |
218
225
  | `report-issue-local` | File bugs/features against this server's repo |
219
226
  | `api-auth` | Auth modes, scopes, JWT/OAuth |
@@ -227,7 +234,6 @@ Available skills:
227
234
  | `api-testing` | createMockContext, test patterns |
228
235
  | `api-utils` | Formatting, parsing, security, pagination, scheduling, telemetry helpers |
229
236
  | `api-workers` | Cloudflare Workers runtime |
230
- | `tool-defs-analysis` | Audit MCP definition language across the surface — voice, leaks, defaults, recovery hints, output descriptions |
231
237
 
232
238
  When you complete a skill's checklist, check the boxes and add a completion timestamp at the end (e.g., `Completed: 2026-03-11`).
233
239
 
@@ -240,10 +246,14 @@ When you complete a skill's checklist, check the boxes and add a completion time
240
246
  | `bun run build` | Compile TypeScript |
241
247
  | `bun run rebuild` | Clean + build |
242
248
  | `bun run clean` | Remove build artifacts |
243
- | `bun run devcheck` | Lint + format + typecheck + security |
249
+ | `bun run devcheck` | Lint + format + typecheck + security + changelog sync |
250
+ | `bun run audit:refresh` | Delete `bun.lock`, reinstall, re-audit. Use when `devcheck` flags a transitive advisory — stale lockfile can mask already-patched deps. If advisory survives, it's real. |
244
251
  | `bun run tree` | Generate directory structure doc |
252
+ | `bun run list-skills` | List available skills from `.claude/skills/` or `skills/` |
245
253
  | `bun run format` | Auto-fix formatting |
246
254
  | `bun run lint:mcp` | Validate MCP tool/resource/prompt definitions |
255
+ | `bun run lint:packaging` | Validate env var alignment between `manifest.json` and `server.json` |
256
+ | `bun run bundle` | Build and pack as `.mcpb` for one-click Claude Desktop install |
247
257
  | `bun run changelog:build` | Regenerate `CHANGELOG.md` from `changelog/*.md` |
248
258
  | `bun run changelog:check` | Verify `CHANGELOG.md` is in sync (used by devcheck) |
249
259
  | `bun run test` | Run tests |
@@ -254,6 +264,14 @@ When you complete a skill's checklist, check the boxes and add a completion time
254
264
 
255
265
  ---
256
266
 
267
+ ## Bundling
268
+
269
+ `bun run bundle` produces a `.mcpb` extension bundle for one-click install in Claude Desktop. MCPB is stdio-only — HTTP deployments are unaffected. The bundle file ships as `dist/congressgov-mcp-server.mcpb`.
270
+
271
+ **Adding an env var requires both files:** `server.json` (registry discovery, `environmentVariables[]`) and `manifest.json` (bundle install UX, `mcp_config.env` + `user_config`). `lint:packaging` (run by `devcheck`) verifies the env var names match.
272
+
273
+ ---
274
+
257
275
  ## Changelog
258
276
 
259
277
  Directory-based, grouped by minor series using the `.x` semver-wildcard convention. Source of truth is `changelog/<major.minor>.x/<version>.md` (e.g. `changelog/0.3.x/0.3.13.md`) — one file per released version. At release time, author the per-version file with a concrete version and date, then run `bun run changelog:build` to regenerate the rollup. `changelog/template.md` is a **pristine format reference** — never edited, never renamed, never moved. `CHANGELOG.md` is a **navigation index** (header + link + one-line summary per version), regenerated by `bun run changelog:build`. Devcheck hard-fails on drift. Never hand-edit `CHANGELOG.md`.
@@ -273,6 +291,8 @@ security: false # optional — true flags security fixe
273
291
 
274
292
  `breaking: true` renders a `· ⚠️ Breaking` badge — use it when consumers must update code on upgrade (signature changes, removed APIs, config renames). `security: true` renders a `· 🛡️ Security` badge and pairs with a `## Security` body section. When both are set, badges render `· ⚠️ Breaking · 🛡️ Security`.
275
293
 
294
+ `agent-notes` is an optional free-form field for maintenance agents processing the release downstream. Content here won't appear in the rendered CHANGELOG — it's consumed by agents running the `maintenance` skill. Use it for adoption instructions that don't fit the human-facing sections: new files to create, fields to populate, one-time migration steps. Omit entirely when there's nothing to say.
295
+
276
296
  ---
277
297
 
278
298
  ## Publishing
@@ -295,14 +315,17 @@ Remind the user to run these after completing a release flow.
295
315
  ## Checklist
296
316
 
297
317
  - [ ] Zod schemas: all fields have `.describe()`, only JSON-Schema-serializable types (no `z.custom()`, `z.date()`, `z.transform()`, `z.bigint()`, `z.symbol()`, `z.void()`, `z.map()`, `z.set()`, `z.function()`, `z.nan()`)
298
- - [ ] Optional nested objects: handler guards for empty inner values from form-based clients (`if (input.obj?.field && ...)`, not just `if (input.obj)`)
318
+ - [ ] Optional nested objects: handler guards for empty inner values from form-based clients (`if (input.obj?.field && ...)`, not just `if (input.obj)`). When regex/length constraints matter, use `z.union([z.literal(''), z.string().regex(...).describe(...)])` — literal variants are exempt from `describe-on-fields`.
299
319
  - [ ] JSDoc `@fileoverview` + `@module` on every file
300
320
  - [ ] `ctx.log` for logging, `ctx.state` for storage
301
321
  - [ ] Handlers throw on failure — error factories or plain `Error`, no try/catch
302
322
  - [ ] `format()` renders all data the LLM needs — different clients forward different surfaces (Claude Code → `structuredContent`, Claude Desktop → `content[]`); both must carry the same data
303
- - [ ] Raw/domain/output schemas reviewed against real upstream sparsity/nullability before finalizing required vs optional fields
304
- - [ ] Normalization and `format()` preserve uncertainty; do not fabricate facts from missing upstream Congress.gov data
305
- - [ ] Tests include at least one sparse payload case with omitted upstream fields
323
+ - [ ] If wrapping external API: raw/domain/output schemas reviewed against real upstream sparsity/nullability before finalizing required vs optional fields
324
+ - [ ] If wrapping external API: normalization and `format()` preserve uncertainty; do not fabricate facts from missing upstream Congress.gov data
325
+ - [ ] If wrapping external API: tests include at least one sparse payload case with omitted upstream fields
306
326
  - [ ] Registered in `createApp()` arrays (directly or via barrel exports)
307
327
  - [ ] Tests use `createMockContext()` from `@cyanheads/mcp-ts-core/testing`
328
+ - [ ] `.codex-plugin/plugin.json` populated — `name`, `version`, `description`, `repository`, `license` from `package.json`; `interface.displayName` = package name; `interface.shortDescription` from `package.json` description
329
+ - [ ] `.codex-plugin/mcp.json` updated — server name key matches `package.json` name; env vars added for any required API keys
330
+ - [ ] `.claude-plugin/plugin.json` populated — `name`, `version`, `description`, `repository`, `license` from `package.json`; inline `mcpServers` entry with server name key, env vars for any required API keys
308
331
  - [ ] `bun run devcheck` passes
package/CLAUDE.md CHANGED
@@ -1,8 +1,11 @@
1
1
  # Agent Protocol
2
2
 
3
3
  **Server:** congressgov-mcp-server
4
- **Version:** 0.3.20
5
- **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)
4
+ **Version:** 0.3.22
5
+ **Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.9.13`
6
+ **Engines:** Bun ≥1.3.0, Node ≥24.0.0
7
+ **MCP SDK:** `@modelcontextprotocol/sdk` ^1.29.0
8
+ **Zod:** ^4.4.3
6
9
 
7
10
  > **Read the framework docs first:** `node_modules/@cyanheads/mcp-ts-core/CLAUDE.md` contains the full API reference — builders, Context, error codes, exports, patterns. This file covers server-specific conventions only.
8
11
 
@@ -37,7 +40,7 @@ Tailor suggestions to what's actually missing or stale — don't recite the full
37
40
 
38
41
  | Env Var | Required | Description |
39
42
  |:--------|:---------|:------------|
40
- | `CONGRESS_API_KEY` | Yes | API key from [api.data.gov](https://api.data.gov/signup/) (free, 5,000 req/hr) |
43
+ | `CONGRESS_API_KEY` | No | Optional. Defaults to `DEMO_KEY` (30 req/hr). Own key from [api.data.gov](https://api.data.gov/signup/): 1,000 req/hr. |
41
44
  | `CONGRESS_API_BASE_URL` | No | Defaults to `https://api.congress.gov/v3` |
42
45
 
43
46
  ---
@@ -51,6 +54,7 @@ Tailor suggestions to what's actually missing or stale — don't recite the full
51
54
  - **Secrets in env vars only** — never hardcoded.
52
55
  - **All tools are read-only.** Every tool gets `annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true }`.
53
56
  - **API key stays out of logs.** The service appends `api_key` as a query param — never log full URLs.
57
+ - **Close the loop on issues.** When implementing work tracked by a GitHub issue, comment on the issue with what landed and close it. Do both — a comment without a close leaves stale issues open; a close without a comment leaves no record of what shipped. The comment is for future readers — state the concrete changes, not the conversation that produced them.
54
58
 
55
59
  ---
56
60
 
@@ -181,7 +185,7 @@ All tools share these patterns. The service layer handles them uniformly:
181
185
  ```ts
182
186
  // Framework — z is re-exported, no separate zod import needed
183
187
  import { tool, z } from '@cyanheads/mcp-ts-core';
184
- import { notFound, serviceUnavailable, rateLimited } from '@cyanheads/mcp-ts-core/errors';
188
+ import { McpError, JsonRpcErrorCode, notFound, serviceUnavailable, rateLimited, validationError } from '@cyanheads/mcp-ts-core/errors';
185
189
 
186
190
  // Server's own code — via path alias
187
191
  import { getCongressApi } from '@/services/congress-api/congress-api-service.js';
@@ -209,11 +213,14 @@ Available skills:
209
213
  | `add-service` | Scaffold a new service integration |
210
214
  | `add-test` | Scaffold test file for a tool, resource, or service |
211
215
  | `field-test` | Exercise tools/resources/prompts with real inputs, verify behavior, report issues |
216
+ | `tool-defs-analysis` | Read-only audit of MCP definition language across the surface — voice, leaks, defaults, recovery hints, output descriptions |
212
217
  | `security-pass` | Audit server for MCP-flavored security gaps: output injection, scope blast radius, input sinks, tenant isolation |
218
+ | `code-simplifier` | Post-session cleanup against `git diff` — modernize syntax, consolidate duplication, align with the codebase |
213
219
  | `devcheck` | Lint, format, typecheck, audit |
214
220
  | `polish-docs-meta` | Finalize docs, README, metadata, and agent protocol for shipping |
221
+ | `git-wrapup` | Land working-tree changes as a versioned commit + annotated tag — version bump, changelog, verify, tag. Local only. |
222
+ | `release-and-publish` | Push + npm + MCP Registry + GH Release + Docker. Picks up from `git-wrapup` |
215
223
  | `maintenance` | Investigate changelogs, adopt upstream changes, sync skills to agent dirs |
216
- | `release-and-publish` | Post-wrapup ship workflow: verification gate, push, publish to npm/MCP Registry/GHCR |
217
224
  | `report-issue-framework` | File bugs/features against `@cyanheads/mcp-ts-core` |
218
225
  | `report-issue-local` | File bugs/features against this server's repo |
219
226
  | `api-auth` | Auth modes, scopes, JWT/OAuth |
@@ -227,7 +234,6 @@ Available skills:
227
234
  | `api-testing` | createMockContext, test patterns |
228
235
  | `api-utils` | Formatting, parsing, security, pagination, scheduling, telemetry helpers |
229
236
  | `api-workers` | Cloudflare Workers runtime |
230
- | `tool-defs-analysis` | Audit MCP definition language across the surface — voice, leaks, defaults, recovery hints, output descriptions |
231
237
 
232
238
  When you complete a skill's checklist, check the boxes and add a completion timestamp at the end (e.g., `Completed: 2026-03-11`).
233
239
 
@@ -240,10 +246,14 @@ When you complete a skill's checklist, check the boxes and add a completion time
240
246
  | `bun run build` | Compile TypeScript |
241
247
  | `bun run rebuild` | Clean + build |
242
248
  | `bun run clean` | Remove build artifacts |
243
- | `bun run devcheck` | Lint + format + typecheck + security |
249
+ | `bun run devcheck` | Lint + format + typecheck + security + changelog sync |
250
+ | `bun run audit:refresh` | Delete `bun.lock`, reinstall, re-audit. Use when `devcheck` flags a transitive advisory — stale lockfile can mask already-patched deps. If advisory survives, it's real. |
244
251
  | `bun run tree` | Generate directory structure doc |
252
+ | `bun run list-skills` | List available skills from `.claude/skills/` or `skills/` |
245
253
  | `bun run format` | Auto-fix formatting |
246
254
  | `bun run lint:mcp` | Validate MCP tool/resource/prompt definitions |
255
+ | `bun run lint:packaging` | Validate env var alignment between `manifest.json` and `server.json` |
256
+ | `bun run bundle` | Build and pack as `.mcpb` for one-click Claude Desktop install |
247
257
  | `bun run changelog:build` | Regenerate `CHANGELOG.md` from `changelog/*.md` |
248
258
  | `bun run changelog:check` | Verify `CHANGELOG.md` is in sync (used by devcheck) |
249
259
  | `bun run test` | Run tests |
@@ -254,6 +264,14 @@ When you complete a skill's checklist, check the boxes and add a completion time
254
264
 
255
265
  ---
256
266
 
267
+ ## Bundling
268
+
269
+ `bun run bundle` produces a `.mcpb` extension bundle for one-click install in Claude Desktop. MCPB is stdio-only — HTTP deployments are unaffected. The bundle file ships as `dist/congressgov-mcp-server.mcpb`.
270
+
271
+ **Adding an env var requires both files:** `server.json` (registry discovery, `environmentVariables[]`) and `manifest.json` (bundle install UX, `mcp_config.env` + `user_config`). `lint:packaging` (run by `devcheck`) verifies the env var names match.
272
+
273
+ ---
274
+
257
275
  ## Changelog
258
276
 
259
277
  Directory-based, grouped by minor series using the `.x` semver-wildcard convention. Source of truth is `changelog/<major.minor>.x/<version>.md` (e.g. `changelog/0.3.x/0.3.13.md`) — one file per released version. At release time, author the per-version file with a concrete version and date, then run `bun run changelog:build` to regenerate the rollup. `changelog/template.md` is a **pristine format reference** — never edited, never renamed, never moved. `CHANGELOG.md` is a **navigation index** (header + link + one-line summary per version), regenerated by `bun run changelog:build`. Devcheck hard-fails on drift. Never hand-edit `CHANGELOG.md`.
@@ -273,6 +291,8 @@ security: false # optional — true flags security fixe
273
291
 
274
292
  `breaking: true` renders a `· ⚠️ Breaking` badge — use it when consumers must update code on upgrade (signature changes, removed APIs, config renames). `security: true` renders a `· 🛡️ Security` badge and pairs with a `## Security` body section. When both are set, badges render `· ⚠️ Breaking · 🛡️ Security`.
275
293
 
294
+ `agent-notes` is an optional free-form field for maintenance agents processing the release downstream. Content here won't appear in the rendered CHANGELOG — it's consumed by agents running the `maintenance` skill. Use it for adoption instructions that don't fit the human-facing sections: new files to create, fields to populate, one-time migration steps. Omit entirely when there's nothing to say.
295
+
276
296
  ---
277
297
 
278
298
  ## Publishing
@@ -295,14 +315,17 @@ Remind the user to run these after completing a release flow.
295
315
  ## Checklist
296
316
 
297
317
  - [ ] Zod schemas: all fields have `.describe()`, only JSON-Schema-serializable types (no `z.custom()`, `z.date()`, `z.transform()`, `z.bigint()`, `z.symbol()`, `z.void()`, `z.map()`, `z.set()`, `z.function()`, `z.nan()`)
298
- - [ ] Optional nested objects: handler guards for empty inner values from form-based clients (`if (input.obj?.field && ...)`, not just `if (input.obj)`)
318
+ - [ ] Optional nested objects: handler guards for empty inner values from form-based clients (`if (input.obj?.field && ...)`, not just `if (input.obj)`). When regex/length constraints matter, use `z.union([z.literal(''), z.string().regex(...).describe(...)])` — literal variants are exempt from `describe-on-fields`.
299
319
  - [ ] JSDoc `@fileoverview` + `@module` on every file
300
320
  - [ ] `ctx.log` for logging, `ctx.state` for storage
301
321
  - [ ] Handlers throw on failure — error factories or plain `Error`, no try/catch
302
322
  - [ ] `format()` renders all data the LLM needs — different clients forward different surfaces (Claude Code → `structuredContent`, Claude Desktop → `content[]`); both must carry the same data
303
- - [ ] Raw/domain/output schemas reviewed against real upstream sparsity/nullability before finalizing required vs optional fields
304
- - [ ] Normalization and `format()` preserve uncertainty; do not fabricate facts from missing upstream Congress.gov data
305
- - [ ] Tests include at least one sparse payload case with omitted upstream fields
323
+ - [ ] If wrapping external API: raw/domain/output schemas reviewed against real upstream sparsity/nullability before finalizing required vs optional fields
324
+ - [ ] If wrapping external API: normalization and `format()` preserve uncertainty; do not fabricate facts from missing upstream Congress.gov data
325
+ - [ ] If wrapping external API: tests include at least one sparse payload case with omitted upstream fields
306
326
  - [ ] Registered in `createApp()` arrays (directly or via barrel exports)
307
327
  - [ ] Tests use `createMockContext()` from `@cyanheads/mcp-ts-core/testing`
328
+ - [ ] `.codex-plugin/plugin.json` populated — `name`, `version`, `description`, `repository`, `license` from `package.json`; `interface.displayName` = package name; `interface.shortDescription` from `package.json` description
329
+ - [ ] `.codex-plugin/mcp.json` updated — server name key matches `package.json` name; env vars added for any required API keys
330
+ - [ ] `.claude-plugin/plugin.json` populated — `name`, `version`, `description`, `repository`, `license` from `package.json`; inline `mcpServers` entry with server name key, env vars for any required API keys
308
331
  - [ ] `bun run devcheck` passes
package/README.md CHANGED
@@ -7,9 +7,15 @@
7
7
 
8
8
  <div align="center">
9
9
 
10
- [![npm](https://img.shields.io/npm/v/@cyanheads/congressgov-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/congressgov-mcp-server) [![Version](https://img.shields.io/badge/Version-0.3.20-blue.svg?style=flat-square)](./CHANGELOG.md) [![Framework](https://img.shields.io/badge/Built%20on-@cyanheads/mcp--ts--core-259?style=flat-square)](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/)
10
+ [![Version](https://img.shields.io/badge/Version-0.3.22-blue.svg?style=flat-square)](./CHANGELOG.md) [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![Docker](https://img.shields.io/badge/Docker-ghcr.io-2496ED?style=flat-square&logo=docker&logoColor=white)](https://github.com/users/cyanheads/packages/container/package/congressgov-mcp-server) [![MCP SDK](https://img.shields.io/badge/MCP%20SDK-^1.29.0-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![npm](https://img.shields.io/npm/v/@cyanheads/congressgov-mcp-server?style=flat-square&logo=npm&logoColor=white)](https://www.npmjs.com/package/@cyanheads/congressgov-mcp-server) [![TypeScript](https://img.shields.io/badge/TypeScript-^6.0.3-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.3.2-blueviolet.svg?style=flat-square)](https://bun.sh/)
11
11
 
12
- [![License](https://img.shields.io/badge/License-Apache%202.0-orange.svg?style=flat-square)](./LICENSE) [![TypeScript](https://img.shields.io/badge/TypeScript-^6.0.3-3178C6.svg?style=flat-square)](https://www.typescriptlang.org/) [![Bun](https://img.shields.io/badge/Bun-v1.3.2-blueviolet.svg?style=flat-square)](https://bun.sh/)
12
+ </div>
13
+
14
+ <div align="center">
15
+
16
+ [![Install in Claude Desktop](https://img.shields.io/badge/Install_in-Claude_Desktop-D97757?style=for-the-badge&logo=anthropic&logoColor=white)](https://github.com/cyanheads/congressgov-mcp-server/releases/latest/download/congressgov-mcp-server.mcpb) [![Install in Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=congressgov-mcp-server&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBjeWFuaGVhZHMvY29uZ3Jlc3Nnb3YtbWNwLXNlcnZlciJdLCJlbnYiOnsiQ09OR1JFU1NfQVBJX0tFWSI6InlvdXItYXBpLWtleSJ9fQ==) [![Install in VS Code](https://img.shields.io/badge/VS_Code-Install_Server-0098FF?style=for-the-badge&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect?url=vscode:mcp/install?%7B%22name%22%3A%22congressgov-mcp-server%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40cyanheads/congressgov-mcp-server%22%5D%2C%22env%22%3A%7B%22CONGRESS_API_KEY%22%3A%22your-api-key%22%7D%7D)
17
+
18
+ [![Framework](https://img.shields.io/badge/Built%20on-@cyanheads/mcp--ts--core-67E8F9?style=flat-square)](https://www.npmjs.com/package/@cyanheads/mcp-ts-core)
13
19
 
14
20
  </div>
15
21
 
@@ -136,9 +142,9 @@ Built on [`@cyanheads/mcp-ts-core`](https://github.com/cyanheads/mcp-ts-core):
136
142
  Congress.gov-specific:
137
143
 
138
144
  - Type-safe client for the Congress.gov REST API v3
139
- - Authentication via free API key from [api.data.gov](https://api.data.gov/signup/)
145
+ - Optional API key from [api.data.gov](https://api.data.gov/signup/) — defaults to `DEMO_KEY` (30 req/hr); own key gets 1,000 req/hr
140
146
  - Automatic pagination and response normalization
141
- - Rate limiting awareness (5,000 requests/hour per key)
147
+ - Rate limiting awareness
142
148
  - All tools are read-only and idempotent
143
149
 
144
150
  ## Getting started
@@ -194,7 +200,7 @@ Or with npx (no Bun required):
194
200
  }
195
201
  ```
196
202
 
197
- Get a free API key at [api.data.gov/signup](https://api.data.gov/signup/) (5,000 requests/hour).
203
+ Get a free API key at [api.data.gov/signup](https://api.data.gov/signup/) for 1,000 req/hr. Without a key the server falls back to `DEMO_KEY` (30 req/hr).
198
204
 
199
205
  ### Prerequisites
200
206
 
@@ -226,7 +232,7 @@ All configuration is validated at startup via Zod schemas in `src/config/server-
226
232
 
227
233
  | Variable | Description | Default |
228
234
  |:---|:---|:---|
229
- | `CONGRESS_API_KEY` | **Required.** API key from [api.data.gov](https://api.data.gov/signup/) | |
235
+ | `CONGRESS_API_KEY` | Optional. API key from [api.data.gov](https://api.data.gov/signup/). Omit to use `DEMO_KEY` (30 req/hr); own key: 1,000 req/hr. | `DEMO_KEY` |
230
236
  | `CONGRESS_API_BASE_URL` | Congress.gov API base URL | `https://api.congress.gov/v3` |
231
237
  | `MCP_TRANSPORT_TYPE` | Transport: `stdio` or `http` | `stdio` |
232
238
  | `MCP_HTTP_PORT` | HTTP server port | `3010` |
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { z } from '@cyanheads/mcp-ts-core';
6
6
  declare const ServerConfigSchema: z.ZodObject<{
7
- apiKey: z.ZodString;
7
+ apiKey: z.ZodDefault<z.ZodString>;
8
8
  baseUrl: z.ZodDefault<z.ZodString>;
9
9
  }, z.core.$strip>;
10
10
  export type ServerConfig = z.infer<typeof ServerConfigSchema>;
@@ -1 +1 @@
1
- {"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAG3C,QAAA,MAAM,kBAAkB;;;iBAOtB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D,wBAAgB,eAAe,IAAI,YAAY,CAM9C"}
1
+ {"version":3,"file":"server-config.d.ts","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAG3C,QAAA,MAAM,kBAAkB;;;iBAYtB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAI9D,wBAAgB,eAAe,IAAI,YAAY,CAM9C"}
@@ -5,7 +5,10 @@
5
5
  import { z } from '@cyanheads/mcp-ts-core';
6
6
  import { parseEnvConfig } from '@cyanheads/mcp-ts-core/config';
7
7
  const ServerConfigSchema = z.object({
8
- apiKey: z.string().min(1).describe('Congress.gov API key from api.data.gov'),
8
+ apiKey: z
9
+ .string()
10
+ .default('DEMO_KEY')
11
+ .describe('Congress.gov API key from api.data.gov — optional (DEMO_KEY: 30 req/hr, own key: 1000 req/hr)'),
9
12
  baseUrl: z
10
13
  .string()
11
14
  .url()
@@ -1 +1 @@
1
- {"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,wCAAwC,CAAC;IAC5E,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,EAAE;SACL,OAAO,CAAC,6BAA6B,CAAC;SACtC,QAAQ,CAAC,2BAA2B,CAAC;CACzC,CAAC,CAAC;AAIH,IAAI,OAAiC,CAAC;AAEtC,MAAM,UAAU,eAAe;IAC7B,OAAO,KAAK,cAAc,CAAC,kBAAkB,EAAE;QAC7C,MAAM,EAAE,kBAAkB;QAC1B,OAAO,EAAE,uBAAuB;KACjC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC"}
1
+ {"version":3,"file":"server-config.js","sourceRoot":"","sources":["../../src/config/server-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,wBAAwB,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,MAAM,EAAE,CAAC;SACN,MAAM,EAAE;SACR,OAAO,CAAC,UAAU,CAAC;SACnB,QAAQ,CACP,+FAA+F,CAChG;IACH,OAAO,EAAE,CAAC;SACP,MAAM,EAAE;SACR,GAAG,EAAE;SACL,OAAO,CAAC,6BAA6B,CAAC;SACtC,QAAQ,CAAC,2BAA2B,CAAC;CACzC,CAAC,CAAC;AAIH,IAAI,OAAiC,CAAC;AAEtC,MAAM,UAAU,eAAe;IAC7B,OAAO,KAAK,cAAc,CAAC,kBAAkB,EAAE;QAC7C,MAAM,EAAE,kBAAkB;QAC1B,OAAO,EAAE,uBAAuB;KACjC,CAAC,CAAC;IACH,OAAO,OAAO,CAAC;AACjB,CAAC"}
package/dist/index.js CHANGED
@@ -59,6 +59,7 @@ await createApp({
59
59
  landing: {
60
60
  repoRoot: REPO_ROOT,
61
61
  tagline: 'U.S. legislative data — bills, votes, members, committees — via MCP.',
62
+ requireAuth: false,
62
63
  },
63
64
  setup() {
64
65
  initCongressApi();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cyanheads/congressgov-mcp-server",
3
- "version": "0.3.20",
3
+ "version": "0.3.22",
4
4
  "description": "Access U.S. congressional data - bills, votes, members, committees - through MCP. STDIO & Streamable HTTP.",
5
5
  "mcpName": "io.github.cyanheads/congressgov-mcp-server",
6
6
  "type": "module",
@@ -15,9 +15,13 @@
15
15
  "rebuild": "bun scripts/clean.ts && bun scripts/build.ts",
16
16
  "clean": "bun scripts/clean.ts",
17
17
  "devcheck": "bun scripts/devcheck.ts",
18
+ "audit:refresh": "rm -f bun.lock && bun install && bun audit",
18
19
  "tree": "bun scripts/tree.ts",
20
+ "list-skills": "bun scripts/list-skills.ts",
19
21
  "format": "biome check --write --unsafe .",
20
22
  "lint:mcp": "bun scripts/lint-mcp.ts",
23
+ "lint:packaging": "bun scripts/lint-packaging.ts",
24
+ "bundle": "bun run build && npx -y @anthropic-ai/mcpb pack . dist/congressgov-mcp-server.mcpb",
21
25
  "changelog:build": "bun scripts/build-changelog.ts",
22
26
  "changelog:check": "bun scripts/build-changelog.ts --check",
23
27
  "test": "vitest run",
@@ -37,7 +41,10 @@
37
41
  "bills",
38
42
  "legislative-data",
39
43
  "typescript",
40
- "us-government"
44
+ "us-government",
45
+ "bun",
46
+ "stdio",
47
+ "streamable-http"
41
48
  ],
42
49
  "author": "cyanheads <casey@caseyjhand.com> (https://github.com/cyanheads/congressgov-mcp-server#readme)",
43
50
  "funding": [
@@ -68,11 +75,12 @@
68
75
  "access": "public"
69
76
  },
70
77
  "dependencies": {
71
- "@cyanheads/mcp-ts-core": "^0.9.1",
72
- "pino-pretty": "^13.1.3"
78
+ "@cyanheads/mcp-ts-core": "^0.9.13",
79
+ "pino-pretty": "^13.1.3",
80
+ "zod": "^4.4.3"
73
81
  },
74
82
  "devDependencies": {
75
- "@biomejs/biome": "^2.4.15",
83
+ "@biomejs/biome": "^2.4.16",
76
84
  "@types/node": "^25.9.1",
77
85
  "depcheck": "^1.4.7",
78
86
  "ignore": "^7.0.5",
package/server.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "url": "https://github.com/cyanheads/congressgov-mcp-server",
7
7
  "source": "github"
8
8
  },
9
- "version": "0.3.20",
9
+ "version": "0.3.22",
10
10
  "remotes": [
11
11
  {
12
12
  "type": "streamable-http",
@@ -19,7 +19,7 @@
19
19
  "registryBaseUrl": "https://registry.npmjs.org",
20
20
  "identifier": "@cyanheads/congressgov-mcp-server",
21
21
  "runtimeHint": "bun",
22
- "version": "0.3.20",
22
+ "version": "0.3.22",
23
23
  "packageArguments": [
24
24
  {
25
25
  "type": "positional",
@@ -33,9 +33,9 @@
33
33
  "environmentVariables": [
34
34
  {
35
35
  "name": "CONGRESS_API_KEY",
36
- "description": "API key from api.data.gov for the Congress.gov API.",
36
+ "description": "API key from api.data.gov \u2014 optional (falls back to DEMO_KEY: 30 req/hr). Own key: 1000 req/hr. Free signup at api.data.gov.",
37
37
  "format": "string",
38
- "isRequired": true
38
+ "isRequired": false
39
39
  },
40
40
  {
41
41
  "name": "MCP_LOG_LEVEL",
@@ -54,7 +54,7 @@
54
54
  "registryBaseUrl": "https://registry.npmjs.org",
55
55
  "identifier": "@cyanheads/congressgov-mcp-server",
56
56
  "runtimeHint": "bun",
57
- "version": "0.3.20",
57
+ "version": "0.3.22",
58
58
  "packageArguments": [
59
59
  {
60
60
  "type": "positional",
@@ -68,9 +68,9 @@
68
68
  "environmentVariables": [
69
69
  {
70
70
  "name": "CONGRESS_API_KEY",
71
- "description": "API key from api.data.gov for the Congress.gov API.",
71
+ "description": "API key from api.data.gov \u2014 optional (falls back to DEMO_KEY: 30 req/hr). Own key: 1000 req/hr. Free signup at api.data.gov.",
72
72
  "format": "string",
73
- "isRequired": true
73
+ "isRequired": false
74
74
  },
75
75
  {
76
76
  "name": "MCP_HTTP_HOST",