@cyanheads/congressgov-mcp-server 0.8.1 → 0.9.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/AGENTS.md +20 -8
- package/CLAUDE.md +20 -8
- package/Dockerfile +4 -0
- package/README.md +26 -120
- package/changelog/0.9.x/0.9.0.md +25 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +6 -5
- package/server.json +3 -3
- package/skills/congressgov-guide/SKILL.md +50 -0
package/AGENTS.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Agent Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** congressgov-mcp-server
|
|
4
|
-
**Version:** 0.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.13.
|
|
4
|
+
**Version:** 0.9.0
|
|
5
|
+
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.13.18`
|
|
6
6
|
**Engines:** Bun ≥1.4.0, Node ≥24.0.0
|
|
7
|
-
**MCP SDK:** `@modelcontextprotocol/server` ^2.
|
|
7
|
+
**MCP SDK:** `@modelcontextprotocol/server` ^2.4.0
|
|
8
8
|
**Zod:** ^4.6.7
|
|
9
9
|
|
|
10
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.
|
|
@@ -83,7 +83,7 @@ Tailor suggestions to what's actually missing or stale — don't recite the full
|
|
|
83
83
|
|
|
84
84
|
**Summary bounding** (`src/mcp-server/tools/summary-window.ts`, constants in `tool-helpers.ts`). Both summary surfaces enforce two limits. `SUMMARY_PAGE_CHARACTERS` stops a page once its serialized rows reach the budget — the first row always returns, `pagination.nextOffset` counts the rows actually returned, and an enrichment notice discloses the stop. `DEFAULT_SUMMARY_TEXT_CHARACTERS` bounds one row's upstream `text`; a windowed row gains `textTotalCharacters` / `textTruncated` / `textNextOffset`, and its window end is retracted off any HTML tag or character reference it would otherwise split (unless the construct is wider than the whole window, where the requested limit wins). A row inside both limits is returned untouched, so an unbounded page stays byte-identical. `congressgov_bill_lookup` `summaries` overrides the row window with `characterOffset`/`characterLimit` and selects one version with `versionCode` — Congress.gov publishes no version filter, so selection reads the bill's whole summary list and matches client-side.
|
|
85
85
|
|
|
86
|
-
### Resources (
|
|
86
|
+
### Resources (6)
|
|
87
87
|
|
|
88
88
|
| URI Template | Description |
|
|
89
89
|
|:-------------|:------------|
|
|
@@ -92,6 +92,7 @@ Tailor suggestions to what's actually missing or stale — don't recite the full
|
|
|
92
92
|
| `congress://member/{bioguideId}` | Member profile |
|
|
93
93
|
| `congress://bill/{congress}/{billType}/{billNumber}` | Bill detail |
|
|
94
94
|
| `congress://committee/{committeeCode}` | Committee detail |
|
|
95
|
+
| `skill://congressgov-guide/SKILL.md` | Published legislative research guide |
|
|
95
96
|
|
|
96
97
|
### Prompts (2)
|
|
97
98
|
|
|
@@ -256,9 +257,18 @@ import { getServerConfig } from '@/config/server-config.js';
|
|
|
256
257
|
|
|
257
258
|
## Skills
|
|
258
259
|
|
|
259
|
-
|
|
260
|
+
Two skill trees live at the project root, written for different readers:
|
|
260
261
|
|
|
261
|
-
|
|
262
|
+
| Tree | For | Written by |
|
|
263
|
+
|:-----|:----|:-----------|
|
|
264
|
+
| `framework-skills/` | The agent developing this server — framework skills (`metadata.audience: external`) plus any development-time skills of the server's own | `init` and the `maintenance` sync (framework skills); you (your own) |
|
|
265
|
+
| `skills/` | The agents that install the server and call its tools — tool chains, identifier sources, gates | `congressgov-guide/SKILL.md`, maintained with the `add-skill` skill |
|
|
266
|
+
|
|
267
|
+
Development skills are modular instructions. Read them directly when a task matches — e.g., `framework-skills/add-tool/SKILL.md` when adding a tool. `bun run list-skills` prints the full registry. Their directory is deliberately not `skills/`: Claude Code and Codex auto-load a plugin's root `skills/`, so a server that ships `.claude-plugin/` or `.codex-plugin/` would hand them to every agent that installs it.
|
|
268
|
+
|
|
269
|
+
`skills/congressgov-guide/SKILL.md` reaches plugin installs and the `.mcpb` bundle as-is and ships in the npm package and Docker image. `createApp({ skills: 'skills' })` serves it through the MCP Skills extension and the `skill://congressgov-guide/SKILL.md` resource. `lint:packaging` validates the tree.
|
|
270
|
+
|
|
271
|
+
**Agent skill directory:** Copy `framework-skills/` into the directory your agent discovers (Claude Code: `.claude/skills/`, others: equivalent). Skills then load as context without referencing `framework-skills/` paths. After framework updates, run the `maintenance` skill — Phase B re-syncs the agent directory.
|
|
262
272
|
|
|
263
273
|
Available skills:
|
|
264
274
|
|
|
@@ -270,6 +280,7 @@ Available skills:
|
|
|
270
280
|
| `add-app-tool` | Scaffold an MCP App tool + paired UI resource |
|
|
271
281
|
| `add-resource` | Scaffold a new resource definition |
|
|
272
282
|
| `add-prompt` | Scaffold a new prompt definition |
|
|
283
|
+
| `add-skill` | Author a skill the server publishes in root `skills/` for the agents that use it — when one earns its place, structure, validation, delivery |
|
|
273
284
|
| `add-service` | Scaffold a new service integration |
|
|
274
285
|
| `add-test` | Scaffold test file for a tool, resource, or service |
|
|
275
286
|
| `field-test` | Exercise tools/resources/prompts with real inputs, verify behavior, report issues |
|
|
@@ -317,7 +328,7 @@ When you complete a skill's checklist, check the boxes and add a completion time
|
|
|
317
328
|
| `bun run format` | Auto-fix formatting (safe fixes only) |
|
|
318
329
|
| `bun run format:unsafe` | Also apply Biome's unsafe autofixes — review the diff; they can change behavior |
|
|
319
330
|
| `bun run lint:mcp` | Validate MCP tool/resource/prompt definitions |
|
|
320
|
-
| `bun run lint:packaging` | Validate env var alignment
|
|
331
|
+
| `bun run lint:packaging` | Validate bundle exclusions, plugin manifests, published skills, env var alignment, and version parity |
|
|
321
332
|
| `bun run bundle` | Build and pack as `.mcpb` for one-click Claude Desktop install |
|
|
322
333
|
| `bun run changelog:build` | Regenerate `CHANGELOG.md` from `changelog/*.md` |
|
|
323
334
|
| `bun run changelog:check` | Verify `CHANGELOG.md` is in sync (used by devcheck) |
|
|
@@ -334,7 +345,7 @@ When you complete a skill's checklist, check the boxes and add a completion time
|
|
|
334
345
|
|
|
335
346
|
## Bundling
|
|
336
347
|
|
|
337
|
-
`bun run bundle` produces a `.mcpb` extension bundle for one-click install in Claude Desktop.
|
|
348
|
+
`bun run bundle` produces a `.mcpb` extension bundle for one-click install in Claude Desktop. `.mcpbignore` excludes root development paths with anchored patterns; root `skills/` ships. `scripts/clean-mcpb.ts` prunes dev dependencies and strips dependency agent docs, platform-specific native bindings, node-gyp build output that records host paths, and framework build-only files. Compiled native addons stay. Run `lint:packaging` after the completed bundle. MCPB is stdio-only; HTTP deployments are unaffected. The bundle file ships as `dist/congressgov-mcp-server.mcpb`.
|
|
338
349
|
|
|
339
350
|
**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, every `user_config` option is wired into `mcp_config.env` as `"X": "${user_config.X}"`, and an optional string option carries `"default": ""`. The host substitutes only the `user_config` reference; `"${X}"` reaches the server literally.
|
|
340
351
|
|
|
@@ -400,6 +411,7 @@ The `release-and-publish` run handles npm, MCP Registry, bundle, GitHub Release,
|
|
|
400
411
|
- [ ] If wrapping external API: tests include at least one sparse payload case with omitted upstream fields
|
|
401
412
|
- [ ] Registered in `createApp()` arrays (directly or via barrel exports)
|
|
402
413
|
- [ ] Tests use `createMockContext()` from `@cyanheads/mcp-ts-core/testing`
|
|
414
|
+
- [ ] Root `plugin.json` metadata matches `package.json`; `mcp.json` uses the unscoped server key, `npx -y <full package name>`, and the fixed env from `.codex-plugin/mcp.json`. User variables remain in the overlays; `.codex-plugin/plugin.json` retains `mcpServers: './.codex-plugin/mcp.json'`
|
|
403
415
|
- [ ] `.codex-plugin/plugin.json` populated — `name` and `interface.displayName` = unscoped repo name; `version`, `description`, `repository`, `license` and `interface.shortDescription` from `package.json`
|
|
404
416
|
- [ ] `.codex-plugin/mcp.json` updated — server name key is the unscoped repo name; every user-supplied variable is listed in `env_vars`. Never write `"KEY": ""` into `env` — it overrides the user's exported key
|
|
405
417
|
- [ ] `.claude-plugin/plugin.json` populated — unscoped `name`, `version`, `description`, `author`, `repository`, `license`, `keywords`; inline `mcpServers` entry keyed by the unscoped repo name. User-supplied variables use `userConfig` and `"KEY": "${user_config.<option>}"` env references, matching `manifest.json`
|
package/CLAUDE.md
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
# Agent Protocol
|
|
2
2
|
|
|
3
3
|
**Server:** congressgov-mcp-server
|
|
4
|
-
**Version:** 0.
|
|
5
|
-
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.13.
|
|
4
|
+
**Version:** 0.9.0
|
|
5
|
+
**Framework:** [@cyanheads/mcp-ts-core](https://www.npmjs.com/package/@cyanheads/mcp-ts-core) `^0.13.18`
|
|
6
6
|
**Engines:** Bun ≥1.4.0, Node ≥24.0.0
|
|
7
|
-
**MCP SDK:** `@modelcontextprotocol/server` ^2.
|
|
7
|
+
**MCP SDK:** `@modelcontextprotocol/server` ^2.4.0
|
|
8
8
|
**Zod:** ^4.6.7
|
|
9
9
|
|
|
10
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.
|
|
@@ -83,7 +83,7 @@ Tailor suggestions to what's actually missing or stale — don't recite the full
|
|
|
83
83
|
|
|
84
84
|
**Summary bounding** (`src/mcp-server/tools/summary-window.ts`, constants in `tool-helpers.ts`). Both summary surfaces enforce two limits. `SUMMARY_PAGE_CHARACTERS` stops a page once its serialized rows reach the budget — the first row always returns, `pagination.nextOffset` counts the rows actually returned, and an enrichment notice discloses the stop. `DEFAULT_SUMMARY_TEXT_CHARACTERS` bounds one row's upstream `text`; a windowed row gains `textTotalCharacters` / `textTruncated` / `textNextOffset`, and its window end is retracted off any HTML tag or character reference it would otherwise split (unless the construct is wider than the whole window, where the requested limit wins). A row inside both limits is returned untouched, so an unbounded page stays byte-identical. `congressgov_bill_lookup` `summaries` overrides the row window with `characterOffset`/`characterLimit` and selects one version with `versionCode` — Congress.gov publishes no version filter, so selection reads the bill's whole summary list and matches client-side.
|
|
85
85
|
|
|
86
|
-
### Resources (
|
|
86
|
+
### Resources (6)
|
|
87
87
|
|
|
88
88
|
| URI Template | Description |
|
|
89
89
|
|:-------------|:------------|
|
|
@@ -92,6 +92,7 @@ Tailor suggestions to what's actually missing or stale — don't recite the full
|
|
|
92
92
|
| `congress://member/{bioguideId}` | Member profile |
|
|
93
93
|
| `congress://bill/{congress}/{billType}/{billNumber}` | Bill detail |
|
|
94
94
|
| `congress://committee/{committeeCode}` | Committee detail |
|
|
95
|
+
| `skill://congressgov-guide/SKILL.md` | Published legislative research guide |
|
|
95
96
|
|
|
96
97
|
### Prompts (2)
|
|
97
98
|
|
|
@@ -256,9 +257,18 @@ import { getServerConfig } from '@/config/server-config.js';
|
|
|
256
257
|
|
|
257
258
|
## Skills
|
|
258
259
|
|
|
259
|
-
|
|
260
|
+
Two skill trees live at the project root, written for different readers:
|
|
260
261
|
|
|
261
|
-
|
|
262
|
+
| Tree | For | Written by |
|
|
263
|
+
|:-----|:----|:-----------|
|
|
264
|
+
| `framework-skills/` | The agent developing this server — framework skills (`metadata.audience: external`) plus any development-time skills of the server's own | `init` and the `maintenance` sync (framework skills); you (your own) |
|
|
265
|
+
| `skills/` | The agents that install the server and call its tools — tool chains, identifier sources, gates | `congressgov-guide/SKILL.md`, maintained with the `add-skill` skill |
|
|
266
|
+
|
|
267
|
+
Development skills are modular instructions. Read them directly when a task matches — e.g., `framework-skills/add-tool/SKILL.md` when adding a tool. `bun run list-skills` prints the full registry. Their directory is deliberately not `skills/`: Claude Code and Codex auto-load a plugin's root `skills/`, so a server that ships `.claude-plugin/` or `.codex-plugin/` would hand them to every agent that installs it.
|
|
268
|
+
|
|
269
|
+
`skills/congressgov-guide/SKILL.md` reaches plugin installs and the `.mcpb` bundle as-is and ships in the npm package and Docker image. `createApp({ skills: 'skills' })` serves it through the MCP Skills extension and the `skill://congressgov-guide/SKILL.md` resource. `lint:packaging` validates the tree.
|
|
270
|
+
|
|
271
|
+
**Agent skill directory:** Copy `framework-skills/` into the directory your agent discovers (Claude Code: `.claude/skills/`, others: equivalent). Skills then load as context without referencing `framework-skills/` paths. After framework updates, run the `maintenance` skill — Phase B re-syncs the agent directory.
|
|
262
272
|
|
|
263
273
|
Available skills:
|
|
264
274
|
|
|
@@ -270,6 +280,7 @@ Available skills:
|
|
|
270
280
|
| `add-app-tool` | Scaffold an MCP App tool + paired UI resource |
|
|
271
281
|
| `add-resource` | Scaffold a new resource definition |
|
|
272
282
|
| `add-prompt` | Scaffold a new prompt definition |
|
|
283
|
+
| `add-skill` | Author a skill the server publishes in root `skills/` for the agents that use it — when one earns its place, structure, validation, delivery |
|
|
273
284
|
| `add-service` | Scaffold a new service integration |
|
|
274
285
|
| `add-test` | Scaffold test file for a tool, resource, or service |
|
|
275
286
|
| `field-test` | Exercise tools/resources/prompts with real inputs, verify behavior, report issues |
|
|
@@ -317,7 +328,7 @@ When you complete a skill's checklist, check the boxes and add a completion time
|
|
|
317
328
|
| `bun run format` | Auto-fix formatting (safe fixes only) |
|
|
318
329
|
| `bun run format:unsafe` | Also apply Biome's unsafe autofixes — review the diff; they can change behavior |
|
|
319
330
|
| `bun run lint:mcp` | Validate MCP tool/resource/prompt definitions |
|
|
320
|
-
| `bun run lint:packaging` | Validate env var alignment
|
|
331
|
+
| `bun run lint:packaging` | Validate bundle exclusions, plugin manifests, published skills, env var alignment, and version parity |
|
|
321
332
|
| `bun run bundle` | Build and pack as `.mcpb` for one-click Claude Desktop install |
|
|
322
333
|
| `bun run changelog:build` | Regenerate `CHANGELOG.md` from `changelog/*.md` |
|
|
323
334
|
| `bun run changelog:check` | Verify `CHANGELOG.md` is in sync (used by devcheck) |
|
|
@@ -334,7 +345,7 @@ When you complete a skill's checklist, check the boxes and add a completion time
|
|
|
334
345
|
|
|
335
346
|
## Bundling
|
|
336
347
|
|
|
337
|
-
`bun run bundle` produces a `.mcpb` extension bundle for one-click install in Claude Desktop.
|
|
348
|
+
`bun run bundle` produces a `.mcpb` extension bundle for one-click install in Claude Desktop. `.mcpbignore` excludes root development paths with anchored patterns; root `skills/` ships. `scripts/clean-mcpb.ts` prunes dev dependencies and strips dependency agent docs, platform-specific native bindings, node-gyp build output that records host paths, and framework build-only files. Compiled native addons stay. Run `lint:packaging` after the completed bundle. MCPB is stdio-only; HTTP deployments are unaffected. The bundle file ships as `dist/congressgov-mcp-server.mcpb`.
|
|
338
349
|
|
|
339
350
|
**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, every `user_config` option is wired into `mcp_config.env` as `"X": "${user_config.X}"`, and an optional string option carries `"default": ""`. The host substitutes only the `user_config` reference; `"${X}"` reaches the server literally.
|
|
340
351
|
|
|
@@ -400,6 +411,7 @@ The `release-and-publish` run handles npm, MCP Registry, bundle, GitHub Release,
|
|
|
400
411
|
- [ ] If wrapping external API: tests include at least one sparse payload case with omitted upstream fields
|
|
401
412
|
- [ ] Registered in `createApp()` arrays (directly or via barrel exports)
|
|
402
413
|
- [ ] Tests use `createMockContext()` from `@cyanheads/mcp-ts-core/testing`
|
|
414
|
+
- [ ] Root `plugin.json` metadata matches `package.json`; `mcp.json` uses the unscoped server key, `npx -y <full package name>`, and the fixed env from `.codex-plugin/mcp.json`. User variables remain in the overlays; `.codex-plugin/plugin.json` retains `mcpServers: './.codex-plugin/mcp.json'`
|
|
403
415
|
- [ ] `.codex-plugin/plugin.json` populated — `name` and `interface.displayName` = unscoped repo name; `version`, `description`, `repository`, `license` and `interface.shortDescription` from `package.json`
|
|
404
416
|
- [ ] `.codex-plugin/mcp.json` updated — server name key is the unscoped repo name; every user-supplied variable is listed in `env_vars`. Never write `"KEY": ""` into `env` — it overrides the user's exported key
|
|
405
417
|
- [ ] `.claude-plugin/plugin.json` populated — unscoped `name`, `version`, `description`, `author`, `repository`, `license`, `keywords`; inline `mcpServers` entry keyed by the unscoped repo name. User-supplied variables use `userConfig` and `"KEY": "${user_config.<option>}"` env references, matching `manifest.json`
|
package/Dockerfile
CHANGED
|
@@ -28,6 +28,9 @@ RUN --mount=type=cache,target=/root/.bun/install/cache \
|
|
|
28
28
|
# Copy the rest of the source code
|
|
29
29
|
COPY . .
|
|
30
30
|
|
|
31
|
+
# Published agent skills are read from the application root at runtime.
|
|
32
|
+
RUN mkdir -p skills
|
|
33
|
+
|
|
31
34
|
# Build the application
|
|
32
35
|
RUN bun run build
|
|
33
36
|
|
|
@@ -134,6 +137,7 @@ COPY --from=deps /usr/src/app/node_modules ./node_modules
|
|
|
134
137
|
|
|
135
138
|
# Copy the compiled application code from the build stage
|
|
136
139
|
COPY --from=build /usr/src/app/dist ./dist
|
|
140
|
+
COPY --from=build /usr/src/app/skills ./skills
|
|
137
141
|
|
|
138
142
|
# Copy the mirror lifecycle scripts (mirror:init / mirror:refresh / mirror:verify)
|
|
139
143
|
# and the shared context shim they import, then emit a runtime tsconfig so Bun
|
package/README.md
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
<h1>@cyanheads/congressgov-mcp-server</h1>
|
|
3
3
|
<p><b>Access U.S. congressional data (bills, votes, members, committees) via MCP. STDIO or Streamable HTTP.</b>
|
|
4
|
-
<div>11 Tools •
|
|
4
|
+
<div>11 Tools • 6 Resources • 2 Prompts • 1 Skill</div>
|
|
5
5
|
</p>
|
|
6
6
|
</div>
|
|
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
|
|
|
@@ -56,6 +56,7 @@ US congressional data from Congress.gov and the Senate's official vote feed: bil
|
|
|
56
56
|
| `congress://member/{bioguideId}` | Member profile by bioguide ID |
|
|
57
57
|
| `congress://bill/{congress}/{billType}/{billNumber}` | Bill detail by congress, type, and number |
|
|
58
58
|
| `congress://committee/{committeeCode}` | Committee detail by committee code |
|
|
59
|
+
| `skill://congressgov-guide/SKILL.md` | Legislative research guide: identifier sources, discovery boundaries, votes, and document evidence |
|
|
59
60
|
|
|
60
61
|
Bill, member, and committee data is also reachable through `congressgov_bill_lookup`, `congressgov_member_lookup`, and `congressgov_committee_lookup` (operation `get`), since many MCP clients are tool-only and never surface resources.
|
|
61
62
|
|
|
@@ -66,6 +67,10 @@ Bill, member, and committee data is also reachable through `congressgov_bill_loo
|
|
|
66
67
|
| `congressgov_bill_analysis` | Structured framework for analyzing a bill |
|
|
67
68
|
| `congressgov_legislative_research` | Research framework for a policy area across Congress |
|
|
68
69
|
|
|
70
|
+
### Agent skill
|
|
71
|
+
|
|
72
|
+
[`congressgov-guide`](./skills/congressgov-guide/SKILL.md) guides research across bills, laws, members, committees, votes, and floor debate. It covers identifier provenance, discovery limits, and version-specific document evidence. The guide ships with plugin installs, npm, MCPB, and Docker, and is served over MCP through the Skills extension and its `skill://` resource.
|
|
73
|
+
|
|
69
74
|
## Capability reference
|
|
70
75
|
|
|
71
76
|
### `congressgov_bill_lookup` <sub>tool</sub>
|
|
@@ -220,140 +225,32 @@ Agent-friendly output:
|
|
|
220
225
|
|
|
221
226
|
## Getting started
|
|
222
227
|
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
A public instance is available at `https://congressgov.caseyjhand.com/mcp` — no installation required. It serves Streamable HTTP; each client takes its own config shape.
|
|
226
|
-
|
|
227
|
-
For Claude Code:
|
|
228
|
+
Connect to the hosted instance:
|
|
228
229
|
|
|
229
230
|
```sh
|
|
230
231
|
claude mcp add --transport http congressgov-mcp-server https://congressgov.caseyjhand.com/mcp
|
|
231
232
|
```
|
|
232
233
|
|
|
233
|
-
|
|
234
|
+
Or run it locally:
|
|
234
235
|
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
"mcpServers": {
|
|
238
|
-
"congressgov-mcp-server": {
|
|
239
|
-
"type": "streamableHttp",
|
|
240
|
-
"url": "https://congressgov.caseyjhand.com/mcp"
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
```
|
|
245
|
-
|
|
246
|
-
For Cursor (`mcp.json`):
|
|
247
|
-
|
|
248
|
-
```json
|
|
249
|
-
{
|
|
250
|
-
"mcpServers": {
|
|
251
|
-
"congressgov-mcp-server": {
|
|
252
|
-
"url": "https://congressgov.caseyjhand.com/mcp"
|
|
253
|
-
}
|
|
254
|
-
}
|
|
255
|
-
}
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
Claude Desktop adds remote servers under Settings → Connectors.
|
|
259
|
-
|
|
260
|
-
### Self-Hosted / Local
|
|
261
|
-
|
|
262
|
-
Add the following to your MCP client configuration file.
|
|
263
|
-
|
|
264
|
-
```json
|
|
265
|
-
{
|
|
266
|
-
"mcpServers": {
|
|
267
|
-
"congressgov-mcp-server": {
|
|
268
|
-
"type": "stdio",
|
|
269
|
-
"command": "bunx",
|
|
270
|
-
"args": ["@cyanheads/congressgov-mcp-server@latest"],
|
|
271
|
-
"env": {
|
|
272
|
-
"MCP_TRANSPORT_TYPE": "stdio",
|
|
273
|
-
"MCP_LOG_LEVEL": "info",
|
|
274
|
-
"CONGRESS_API_KEY": "your-api-key"
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
}
|
|
236
|
+
```sh
|
|
237
|
+
claude mcp add congressgov-mcp-server -- npx -y @cyanheads/congressgov-mcp-server
|
|
279
238
|
```
|
|
280
239
|
|
|
281
|
-
|
|
240
|
+
For other clients, add this to the MCP config file:
|
|
282
241
|
|
|
283
242
|
```json
|
|
284
243
|
{
|
|
285
244
|
"mcpServers": {
|
|
286
245
|
"congressgov-mcp-server": {
|
|
287
|
-
"type": "stdio",
|
|
288
246
|
"command": "npx",
|
|
289
|
-
"args": ["-y", "@cyanheads/congressgov-mcp-server
|
|
290
|
-
"env": {
|
|
291
|
-
"MCP_TRANSPORT_TYPE": "stdio",
|
|
292
|
-
"MCP_LOG_LEVEL": "info",
|
|
293
|
-
"CONGRESS_API_KEY": "your-api-key"
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
}
|
|
298
|
-
```
|
|
299
|
-
|
|
300
|
-
Or with Docker:
|
|
301
|
-
|
|
302
|
-
```json
|
|
303
|
-
{
|
|
304
|
-
"mcpServers": {
|
|
305
|
-
"congressgov-mcp-server": {
|
|
306
|
-
"type": "stdio",
|
|
307
|
-
"command": "docker",
|
|
308
|
-
"args": [
|
|
309
|
-
"run", "-i", "--rm",
|
|
310
|
-
"-e", "MCP_TRANSPORT_TYPE=stdio",
|
|
311
|
-
"-e", "CONGRESS_API_KEY=your-api-key",
|
|
312
|
-
"ghcr.io/cyanheads/congressgov-mcp-server:latest"
|
|
313
|
-
]
|
|
247
|
+
"args": ["-y", "@cyanheads/congressgov-mcp-server"]
|
|
314
248
|
}
|
|
315
249
|
}
|
|
316
250
|
}
|
|
317
251
|
```
|
|
318
252
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
```sh
|
|
322
|
-
MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 CONGRESS_API_KEY=your-api-key bun run start:http
|
|
323
|
-
# Server listens at http://localhost:3010/mcp
|
|
324
|
-
```
|
|
325
|
-
|
|
326
|
-
### Prerequisites
|
|
327
|
-
|
|
328
|
-
- [Bun v1.4.0](https://bun.sh/) or higher (or Node.js v24+).
|
|
329
|
-
- Optional: a free [api.data.gov key](https://api.data.gov/signup/) raises the limit to 5,000 requests/hour from the demo key's 30/hour and 50/day per IP.
|
|
330
|
-
|
|
331
|
-
### Installation
|
|
332
|
-
|
|
333
|
-
1. **Clone the repository:**
|
|
334
|
-
|
|
335
|
-
```sh
|
|
336
|
-
git clone https://github.com/cyanheads/congressgov-mcp-server.git
|
|
337
|
-
```
|
|
338
|
-
|
|
339
|
-
2. **Navigate into the directory:**
|
|
340
|
-
|
|
341
|
-
```sh
|
|
342
|
-
cd congressgov-mcp-server
|
|
343
|
-
```
|
|
344
|
-
|
|
345
|
-
3. **Install dependencies:**
|
|
346
|
-
|
|
347
|
-
```sh
|
|
348
|
-
bun install
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
4. **Configure environment:**
|
|
352
|
-
|
|
353
|
-
```sh
|
|
354
|
-
cp .env.example .env
|
|
355
|
-
# edit .env and set CONGRESS_API_KEY (and the mirror vars, if you want keyword search)
|
|
356
|
-
```
|
|
253
|
+
Optional: set `CONGRESS_API_KEY` to a free [api.data.gov key](https://api.data.gov/signup/) for 5,000 requests/hour instead of the demo key's 30/hour and 50/day per IP. For Docker or a source build, see [Running the server](#running-the-server).
|
|
357
254
|
|
|
358
255
|
## Configuration
|
|
359
256
|
|
|
@@ -381,6 +278,15 @@ See [`.env.example`](./.env.example) for the full list of optional overrides.
|
|
|
381
278
|
|
|
382
279
|
## Running the server
|
|
383
280
|
|
|
281
|
+
Requires [Bun v1.4.0](https://bun.sh/) or higher (or Node.js v24+).
|
|
282
|
+
|
|
283
|
+
```sh
|
|
284
|
+
git clone https://github.com/cyanheads/congressgov-mcp-server.git
|
|
285
|
+
cd congressgov-mcp-server && bun install
|
|
286
|
+
cp .env.example .env
|
|
287
|
+
# Optionally set CONGRESS_API_KEY and the mirror variables in .env.
|
|
288
|
+
```
|
|
289
|
+
|
|
384
290
|
### Local development
|
|
385
291
|
|
|
386
292
|
- **Build and run the production version:**
|
|
@@ -411,17 +317,17 @@ See [`.env.example`](./.env.example) for the full list of optional overrides.
|
|
|
411
317
|
### Docker
|
|
412
318
|
|
|
413
319
|
```sh
|
|
414
|
-
docker
|
|
415
|
-
docker run --rm -e CONGRESS_API_KEY=your-api-key -p 3010:3010 congressgov-mcp-server
|
|
320
|
+
docker run --rm -e CONGRESS_API_KEY=your-api-key -p 3010:3010 ghcr.io/cyanheads/congressgov-mcp-server:latest
|
|
416
321
|
```
|
|
417
322
|
|
|
418
|
-
The
|
|
323
|
+
The image defaults to HTTP transport, stateless session mode, and logs to `/var/log/congressgov-mcp-server`. For stdio, use `docker run -i --rm -e MCP_TRANSPORT_TYPE=stdio ghcr.io/cyanheads/congressgov-mcp-server:latest`. To build locally, run `docker build -t congressgov-mcp-server .`; OpenTelemetry peer dependencies are installed by default, with `--build-arg OTEL_ENABLED=false` to omit them. The image carries the mirror scripts, so `docker exec <container> bun run mirror:init` builds the index in place.
|
|
419
324
|
|
|
420
325
|
## Project structure
|
|
421
326
|
|
|
422
327
|
| Directory | Purpose |
|
|
423
328
|
|:---|:---|
|
|
424
329
|
| `src/index.ts` | `createApp()` entry point: registers tools, resources, and prompts, inits services, and schedules the mirror refresh. |
|
|
330
|
+
| `skills/` | Published legislative research guide for agents calling the server. |
|
|
425
331
|
| `src/config/` | Server-specific environment variable parsing and validation with Zod. |
|
|
426
332
|
| `src/mcp-server/tools/` | Tool definitions (`definitions/*.tool.ts`) plus shared input, formatting, and summary-window helpers. |
|
|
427
333
|
| `src/mcp-server/resources/definitions/` | Resource definitions (`*.resource.ts`). |
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
summary: "Publish a legislative research guide over MCP and refresh framework and bundle delivery."
|
|
3
|
+
breaking: false
|
|
4
|
+
security: false
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 0.9.0 — 2026-10-28
|
|
8
|
+
|
|
9
|
+
## Added
|
|
10
|
+
|
|
11
|
+
- Publish congressgov-guide as the skill://congressgov-guide/SKILL.md MCP resource for legislative research workflows.
|
|
12
|
+
- **Agent Plugins manifests** add the root `plugin.json` and `mcp.json` pair alongside the existing client overlays.
|
|
13
|
+
|
|
14
|
+
## Changed
|
|
15
|
+
|
|
16
|
+
- **MCPB delivery** excludes root development paths, dependency agent documentation, node-gyp build output, and build-only package files while retaining executable SDK skill modules ([mcp-ts-core #794](https://github.com/cyanheads/mcp-ts-core/issues/794)).
|
|
17
|
+
- **HTTP lifecycle** adopts the framework fix that releases request signals after responses finish.
|
|
18
|
+
- **Maintenance references** sync framework guidance, simplify installation examples, and correct legislative data and service documentation.
|
|
19
|
+
|
|
20
|
+
## Dependencies
|
|
21
|
+
|
|
22
|
+
- `@cyanheads/mcp-ts-core` ^0.13.16 → ^0.13.18.
|
|
23
|
+
- `@biomejs/biome` ^2.6.2 → ^2.6.3.
|
|
24
|
+
- `ignore` ^7.0.13 → ^7.0.14.
|
|
25
|
+
- `tsc-alias` ^1.9.8 → ^1.9.9.
|
package/dist/index.js
CHANGED
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
|
+
"version": "0.9.0",
|
|
4
4
|
"description": "Access U.S. congressional data (bills, votes, members, committees) via MCP. STDIO or Streamable HTTP.",
|
|
5
5
|
"mcpName": "io.github.cyanheads/congressgov-mcp-server",
|
|
6
6
|
"type": "module",
|
|
@@ -11,6 +11,7 @@
|
|
|
11
11
|
},
|
|
12
12
|
"files": [
|
|
13
13
|
"changelog/",
|
|
14
|
+
"skills/",
|
|
14
15
|
"dist/",
|
|
15
16
|
"!dist/*.mcpb",
|
|
16
17
|
"scripts/_mirror-context.ts",
|
|
@@ -95,7 +96,7 @@
|
|
|
95
96
|
"access": "public"
|
|
96
97
|
},
|
|
97
98
|
"dependencies": {
|
|
98
|
-
"@cyanheads/mcp-ts-core": "^0.13.
|
|
99
|
+
"@cyanheads/mcp-ts-core": "^0.13.18",
|
|
99
100
|
"better-sqlite3": "^13.0.3",
|
|
100
101
|
"fast-xml-parser": "^5.11.2",
|
|
101
102
|
"node-cron": "^4.6.0",
|
|
@@ -103,12 +104,12 @@
|
|
|
103
104
|
"zod": "^4.6.7"
|
|
104
105
|
},
|
|
105
106
|
"devDependencies": {
|
|
106
|
-
"@biomejs/biome": "^2.6.
|
|
107
|
+
"@biomejs/biome": "^2.6.3",
|
|
107
108
|
"@socketsecurity/bun-security-scanner": "^1.1.3",
|
|
108
109
|
"@types/node": "^26.6.5",
|
|
109
110
|
"depcheck": "^1.4.7",
|
|
110
|
-
"ignore": "^7.0.
|
|
111
|
-
"tsc-alias": "^1.9.
|
|
111
|
+
"ignore": "^7.0.14",
|
|
112
|
+
"tsc-alias": "^1.9.9",
|
|
112
113
|
"typescript": "^7.0.2",
|
|
113
114
|
"vitest": "^5.0.5"
|
|
114
115
|
}
|
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.
|
|
9
|
+
"version": "0.9.0",
|
|
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": "npx",
|
|
22
|
-
"version": "0.
|
|
22
|
+
"version": "0.9.0",
|
|
23
23
|
"environmentVariables": [
|
|
24
24
|
{
|
|
25
25
|
"name": "CONGRESS_API_KEY",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"registryBaseUrl": "https://registry.npmjs.org",
|
|
45
45
|
"identifier": "@cyanheads/congressgov-mcp-server",
|
|
46
46
|
"runtimeHint": "npx",
|
|
47
|
-
"version": "0.
|
|
47
|
+
"version": "0.9.0",
|
|
48
48
|
"environmentVariables": [
|
|
49
49
|
{
|
|
50
50
|
"name": "MCP_TRANSPORT_TYPE",
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: congressgov-guide
|
|
3
|
+
description: Use congressgov_* tools for legislative research across bills, enacted laws, members, committees, votes, and Congressional Record documents. Resolve linked identifiers, select the relevant document version, and check discovery coverage before reporting absence.
|
|
4
|
+
license: Apache-2.0
|
|
5
|
+
metadata:
|
|
6
|
+
author: "cyanheads"
|
|
7
|
+
version: "1.0"
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Scope
|
|
11
|
+
|
|
12
|
+
Use for U.S. congressional research that follows legislation into its sponsors, committees, votes, reports, or floor debate. A topic alone needs a discovery path: the optional bill mirror searches titles and CRS summaries, not full bill text, CRS reports, or the Congressional Record.
|
|
13
|
+
|
|
14
|
+
## Identifiers
|
|
15
|
+
|
|
16
|
+
Carry identifiers from returned records across tool calls:
|
|
17
|
+
|
|
18
|
+
| Entity | Provenance |
|
|
19
|
+
|:---|:---|
|
|
20
|
+
| Bill | Congress, bill type, and bill number from bill discovery, member portfolios, or related bills |
|
|
21
|
+
| Member | `bioguideId` from member discovery or a bill's sponsors and cosponsors |
|
|
22
|
+
| Committee | `systemCode` from committee discovery; resolve a committee name and inspect the candidates before following its legislation |
|
|
23
|
+
| Enacted law | `laws[].number` on an enacted-law row; the row's own bill number identifies the origin bill |
|
|
24
|
+
| Roll call | Chamber, congress, session, and roll number from vote discovery; retain the complete identity when reading detail and positions |
|
|
25
|
+
| Record article | Volume and issue from Record discovery, then the article's absolute position within the issue |
|
|
26
|
+
|
|
27
|
+
## Gates
|
|
28
|
+
|
|
29
|
+
- Before topical discovery, check whether `congressgov_search_bills` is offered. If absent, obtain a bill, member, committee, or CRS report seed; do not send a topic to browse-only tools. Committee name matching resolves committee names, not policy topics.
|
|
30
|
+
- Before reporting no relevant bills, inspect search notices and coverage. An unbuilt mirror returns no results, and a ready mirror covers a bounded congress window and only titles and summaries. Broaden overly specific terms; report the search boundary with any negative finding.
|
|
31
|
+
- Before interpreting recent activity, distinguish a record's update date from its `latestAction.actionDate`. The update date does not establish when legislative action occurred.
|
|
32
|
+
- Before comparing provisions or quoting legislation, select the relevant published text version and inspect its label and any supplied date. A date may be absent; do not infer one from the bill's update date. A discovery preview or CRS summary is not the bill text; preserve the version and source URL with the evidence.
|
|
33
|
+
- Before interpreting a member's vote as support for a bill, inspect the roll call's question, associated measure, and result. Match the requested chamber and session; a vote associated with a bill does not by itself establish final passage.
|
|
34
|
+
- Before concluding a committee was resolved, inspect whether the response contains the requested detail or candidate rows. Choose a candidate by its returned name, chamber, and code; approximate matches need the same check.
|
|
35
|
+
|
|
36
|
+
## Core chain
|
|
37
|
+
|
|
38
|
+
Start from a discovered bill identity and read `congressgov_bill_lookup` detail. Use its summaries for orientation and its latest action for status; inspect published text when the answer depends on a provision. Follow sponsor identities into `congressgov_member_lookup` and related bill identities back into bill lookup. Resolve committees through committee discovery. Keep each claim attached to its bill and version when combining findings across these branches.
|
|
39
|
+
|
|
40
|
+
## Workflows
|
|
41
|
+
|
|
42
|
+
**Topic research.** When available, use `congressgov_search_bills` to obtain candidate bills, then verify candidates through live bill lookup. Search terms are AND-combined ordinary text; use fewer terms or separate searches for alternatives rather than FTS Boolean operators. Follow related bills and relevant sponsor portfolios to widen the investigation. Search silence says nothing about whether CRS analysis or floor debate exists.
|
|
43
|
+
|
|
44
|
+
**Enacted law.** Use `congressgov_enacted_laws` to resolve a law citation, then follow the returned origin bill through bill lookup. Keep the law citation and bill identity distinct. Read the intended published version before describing the enacted provisions.
|
|
45
|
+
|
|
46
|
+
**Member voting.** Resolve the person through member discovery or a bill's sponsor records. Find the relevant roll call with `congressgov_roll_votes`, inspect its detail, then read positions for that same roll call. House data comes from Congress.gov and Senate data from the Senate LIS feed; inspect the returned roster fields before joining them to member profiles.
|
|
47
|
+
|
|
48
|
+
**Floor debate.** Navigate `congressgov_daily_record` from volumes to issues to articles. When an article comes from a later page, its content selection uses the absolute issue position, not its position within that page. Read the selected article's content and retain its title and source URL.
|
|
49
|
+
|
|
50
|
+
**Document evidence.** Bill and committee-report text listings expose versions or formats; they do not contain the document body. Use the corresponding content operation to read it. Continue with the returned content offset while preserving the same document selection and format. Summary text has a separate continuation offset: use the summary row's continuation and retain its version code instead of advancing the list page. Distinguish an unfinished text window from the end of a list.
|