civic-awareness-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@civic-awareness-mcpShow me recent bills on healthcare in Congress"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Civic Awareness MCP
Two MCP servers for US civic data — one for Congress + federal campaign finance, one for 50-state legislatures.
Servers
Server | Source | Jurisdictions | Package |
| Congress.gov + OpenFEC | US federal |
|
| OpenStates | 50 states + DC |
|
Each server reads/writes-through to a local SQLite store as a TTL cache. Every response includes a sources: { name, url }[] array for provenance. No tool synthesizes summaries — that is the LLM's job.
Related MCP server: LegiScan MCP Server
Tools
civic-federal-mcp (9 tools)
Tool | Kind | What it answers |
| feed | Bills introduced or acted on in the last N days (Congress.gov) |
| feed | Roll-call votes in the last N days, yea/nay/present tallies |
| feed | Federal campaign contributions in a date window (OpenFEC) |
| search | Title search across cached federal bills, votes, contributions |
| entity | Name search across Members of Congress + FEC candidates/committees |
| entity | Entity detail + role history + recent documents |
| entity | Disambiguate a name into one or more Person entity IDs |
| entity | Co-occurrence graph via bills, votes, contributions (depth 1–2) |
| detail | Full roll-call vote with per-legislator positions |
civic-state-mcp (8 tools)
Tool | Kind | What it answers |
| feed | Bills by jurisdiction; filters for sponsor, subject, classification, session, dates |
| feed | Roll-call votes in the last N days, chamber + tally (OpenStates, per jurisdiction) |
| detail | Full bill detail: actions, versions, sponsors, subjects |
| search | Title search across cached state bills |
| entity | Name search across state legislators (OpenStates) |
| entity | Entity detail + role history + recent documents |
| entity | Disambiguate a name into one or more Person entity IDs |
| entity | Co-occurrence graph via shared sponsored bills (depth 1–2) |
Installation
Prerequisites
Node.js ≥ 22
API keys: api.data.gov (covers Congress.gov + OpenFEC), OpenStates — all free tier
Build + run
npm install
npm run build
# federal server
npm run bootstrap:federal
npm run start:federal
# state server
npm run bootstrap:state
npm run start:stateFor development (no build step):
npm run dev:federal
npm run dev:stateData hydration
The server fetches data automatically on cache miss. For bulk pre-population:
# federal
npm run refresh:federal -- --source=congress --max-pages=1
npm run refresh:federal -- --source=openfec --max-pages=1
# state (one jurisdiction)
npm run refresh:state -- --source=openstates --jurisdictions=tx --max-pages=1To prune stale fetch-log rows (recommended monthly):
npm run evict-fetch-logDevelopment
npm test # mocked unit + integration suite (MSW)
npm run test:watch # rerun on change
npm run test:drift # live-API drift tests (requires .env.local)
npm run typecheck # tsc --noEmit
npm run lint # eslint
npm run format # prettier --writeClaude Desktop config
To run both servers locally, add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"civic-federal-mcp": {
"command": "node",
"args": ["/absolute/path/to/civic-awareness-mcp/dist/federal/index.js"],
"env": {
"API_DATA_GOV_KEY": "your-key",
"CIVIC_FEDERAL_DB_PATH": "/absolute/path/to/federal.db"
}
},
"civic-state-mcp": {
"command": "node",
"args": ["/absolute/path/to/civic-awareness-mcp/dist/state/index.js"],
"env": {
"OPENSTATES_API_KEY": "your-key",
"CIVIC_STATE_DB_PATH": "/absolute/path/to/state.db"
}
}
}
}Environment variables
Variable | Server | Description |
| federal | api.data.gov key (Congress.gov + OpenFEC) |
| state | OpenStates v3 API key |
| federal | SQLite path (default |
| state | SQLite path (default |
| both | Optional daily API spend cap (unused by default) |
| both |
|
CI
Four workflows in .github/workflows/:
ci.yml— format, lint, typecheck, tests, build, MCP stdio smoke. Matrix on Node 22/24. Runs on push tomainand on every PR.codeql.yml— CodeQL static analysis. Runs on push/PR/weekly.scorecard.yml— OpenSSF Scorecard. Runs on push/weekly.nightly-drift.yml— live-API shape checks against OpenStates, Congress.gov, OpenFEC. Runs daily at 09:00 UTC and on-demand viaworkflow_dispatch.
The drift workflow requires repo secrets OPENSTATES_API_KEY and API_DATA_GOV_KEY (separate from user keys — those are configured locally via .env.local).
Security
See SECURITY.md. Highlights:
Never writes to upstream APIs
All sources are sanctioned free-tier APIs with documented rate limits
Rate-limited fetch with per-host token bucket;
Retry-AfterhonouredZod-validated inputs; parameterized SQLite queries
No contributor PII in responses
License
MIT — see LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/julianken/civic-awareness-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server