Context7
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Description from the maker (original English)
District of Columbia Code — DC statutes by citation, and topic/chapter search. Fleet #2887 (one of…
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
PIPEWORX_API_KEYValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Works in Claude on the web, desktop and mobile:
https://gateway.pipeworx.io/dc-code/mcpOpen Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"dc-code": {
"command": "npx",
"args": [
"-y",
"@pipeworx/mcp-dc-code"
],
"env": {
"PIPEWORX_API_KEY": "your-value"
}
}
}
}Run this in your terminal
claude mcp add --transport http dc-code https://gateway.pipeworx.io/dc-code/mcpclaude mcp add dc-code --env PIPEWORX_API_KEY=your-value -- npx -y @pipeworx/mcp-dc-codeFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"dc-code": {
"url": "https://gateway.pipeworx.io/dc-code/mcp"
}
}
}Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"dc-code": {
"command": "npx",
"args": [
"-y",
"@pipeworx/mcp-dc-code"
],
"env": {
"PIPEWORX_API_KEY": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"dc-code": {
"type": "http",
"url": "https://gateway.pipeworx.io/dc-code/mcp"
}
}
}Paste into .vscode/mcp.json in your project
{
"servers": {
"dc-code": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@pipeworx/mcp-dc-code"
],
"env": {
"PIPEWORX_API_KEY": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
ChatGPT connects only to servers on the internet:
https://gateway.pipeworx.io/dc-code/mcpMenu names can differ slightly by plan and over time.
Your choice stays on this device in a cookie; no account needed.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
We have not read this server’s tool list yet; we check endpoints in rotation.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The registry name was verified with the GitHub account pipeworx-io, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Not checked yet; we check endpoints in rotation
Not checked yet; we check endpoints in rotation
Not checked yet; we read the tool list when we check the endpoint
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: PIPEWORX_API_KEY
Either way works: install it on your computer or connect to the cloud version.
The GitHub repo last changed –, and the latest version (0.2.1) reached the registry 5 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Context7, Codebase Memory, Exa
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Feeds AI the latest docs for libraries and frameworks before it answers, so code it writes does not use outdated, removed functions.
Codebase knowledge graph for AI agents — 162 languages, sub-ms queries, 99% fewer tokens.
Connect AI agents to Exa for web search, content fetching, and multi-step research.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
District of Columbia Code (D.C. Code — DC statutes) — full section text by citation, and topic/chapter search over official headings.
Part of Pipeworx — an MCP gateway connecting AI agents to 1863+ live data sources. This is an independent, unofficial integration — not affiliated with, endorsed by, or published by the upstream provider.
dc_statute(citation) — full current text of one D.C. Code section (e.g. "22-2101", murder in the first degree), with the official heading, disposition (in force / repealed / transferred / reserved), legislative History annotations, Prior Codifications, and Cross References.dc_search(query?, title?, limit?) — topic/keyword search over every section's official heading (e.g. "eviction notice", "concealed carry permit"), optionally scoped to one title. Pass title alone (no query) to list every section under that title — a chapter-list/browse mode. Not full-text search — the DC Council does not publish one.Keyless.
https://raw.githubusercontent.com/DCCouncil/law-xml-codified/{branch}/us/dc/council/code/titles/{title}/sections/{citation}.xml — one section's current XML (its heading, body text, and annotations). dc_statute calls this live, per request, pinned to the branch baked below.us/dc/council/code/index.xml and titles/{title}/index.xml — structure only (title/chapter/subchapter headings + section citation lists, no catchlines). Used only by scripts/bake-index.mjs.https://api.github.com/repos/DCCouncil/law-xml-codified/branches — used only by scripts/bake-index.mjs to resolve the current publication branch (see below).code.dccouncil.gov's own footer: *"The codes and laws on this website are in the public domain."* The same footer: *"Please do not scrape. Instead, bulk download the HTML or XML"* from the Council's GitHub organization. This pack follows that instruction literally — it never touches code.dccouncil.gov, only raw.githubusercontent.com content from DCCouncil/law-xml-codified. Public-domain content plus the publisher's own explicit redistribution channel means baking a catchline index from this repo needs no separate grant (root CLAUDE.md, "mirror-needs-grant-proxy-does-not" — the licence-permits-it branch, not the silent/forbidden one). Statutory text itself is also never baked — dc_statute always fetches it live, per call.
GET /repos/DCCouncil/law-xml-codified reports default_branch: "publication/2021-10-18" — real git metadata, frozen at a 2021 codification, five years stale, even though the repo is actively published: 406 branches existed at bake time, the newest a publication/{base-date}.{amendment-date} pair updated within days. GitHub's "default branch" setting is unrelated to which branch is current. scripts/bake-index.mjs lists every branch (paginated, ~5 unauthenticated requests) and picks the lexicographically-latest name — safe because every name is an ISO-8601 date or a dotted pair of them, so string order is chronological order. The resolved name is baked as DC_CODE_BRANCH and is what dc_statute's live fetch pins to.
A short section is one flat element; a section with lettered/numbered subsections nests elements, each with its own ("(a)") and , repeatedly — sometimes nested one level deeper. A reason element reading "Repealed" (or Reserved/Transferred) marks a non-substantive stub whose body text is literally "Repealed." — surfaced as disposition rather than left for the caller to infer. A trailing annotations block (History, Prior Codifications, Cross References, Editor's Notes) is excluded from the body-text walk and returned as its own grouped fields.
One parsing trap worth knowing: a num or heading element can carry a NESTED inline element (e.g. Title 7 Chapter 2B's chapter number carries an embedded effective-date annotation tag inside its own num element) — a tight "no-nested-tag" regex silently drops that chapter's number instead of erroring. scripts/bake-index.mjs strips any nested tag content rather than assuming num/heading are always tag-free.
dc_statute. Direct URL construction from the citation; no index lookup needed (title is the citation's own prefix before its first -).dc_search, over official headings only (see below). Matches 24,198 sections' real headings, baked once per scripts/bake-index.mjs run — see its header for why per-section fetches were unavoidable (the index tree carries no catchlines, unlike South Dakota's or Oklahoma's siblings).annotations block carries one or more type="History" entries naming the enacting/amending Act; dc_statute returns these as history. There is no single canonical "effective date" field separate from these citations.DCCouncil/law-xml-codified publishes only the CURRENT codified text, no per-amendment archive and no endpoint returning a prior version's text.DC Council publishes a new amendment branch roughly every few days and a new base codification a few times a year. Re-run node scripts/bake-index.mjs > src/dc-index-data.ts whenever a caller's index_live_mismatch or a stale data_as_of suggests the baked index has fallen behind the live branch — nothing else in the pack needs to change; dc_statute always fetches section text live, pinned to whatever branch the bake most recently resolved. No scheduled workflow exists for this (same as every sibling state-code pack in this family) — it is a manual re-run.
Add to your MCP client (Claude Desktop, Cursor, Windsurf, etc.):
{
"mcpServers": { "dc-code": { "url": "https://gateway.pipeworx.io/dc-code/mcp" } } }
tools/list at https://gateway.pipeworx.io/dc-code/mcp returns the tools in the table above plus the shared Pipeworx meta-tools — ask_pipeworx, discover_tools, search_within, remember/recall and the rest of the gateway-wide set. So the tool count you see is larger than this table: a single-pack endpoint currently lists roughly 30 shared tools alongside the pack's own. The connection's initialize response states its exact scope, and is the authoritative answer for a given day.
This is deliberate, not multiplexing by accident. The meta-tools are what let a scoped connection answer a question this pack does not cover — via ask_pipeworx, which routes across the whole catalog — without you adding a second MCP server. There is currently no way to mount a pack endpoint without them; if the extra schemas cost you more context than the routing is worth, connect to the full gateway once rather than to several pack endpoints.
Or connect to the full Pipeworx gateway to get every pack's tools listed directly, instead of just this one's:
{
"mcpServers": { "pipeworx": { "url": "https://gateway.pipeworx.io/mcp" } } }
Both URLs reach the same gateway and the same 1863+ data sources. The only difference is which pack's tools are listed directly; ask_pipeworx reaches all of them from either one.
curl -X POST https://gateway.pipeworx.io/v1/tools/dc_statute \
-H 'Content-Type: application/json' \ -d '{"citation":"22-2101"}'
No account needed for the first calls. Inspect any tool: GET https://gateway.pipeworx.io/v1/tools/dc_statute. Find one: POST https://gateway.pipeworx.io/v1/tools/search_packs with {"query":"..."}.
@pipeworx/mcp-dc-code is a local stdio bridge to the Pipeworx gateway: your MCP client starts it with npx, and it forwards every call to the same https://gateway.pipeworx.io/dc-code/mcp endpoint shown above. It needs network access; there is no offline mode.
{
"mcpServers": { "dc-code": { "command": "npx", "args": ["-y", "@pipeworx/mcp-dc-code"] } } }
Without a key it calls anonymously, capped at 50 calls a day. A free account raises that to 200 a day: get a key at https://pipeworx.io/signup and add "env": { "PIPEWORX_API_KEY": " " } to the server entry. The key is sent as a Bearer token, the same way a hosted connection sends it, so calls are metered and billed exactly as they are there.
It lists only this pack's tools by default. Set PIPEWORX_META_TOOLS=1 to also list ask_pipeworx and the other gateway-wide tools.
Behind an HTTPS proxy: Node's built-in fetch does not read HTTPS_PROXY by default. Newer Node releases honour it when NODE_USE_ENV_PROXY=1 is set; check your Node version's documentation.
Instead of calling tools directly, you can ask questions in plain English — this works on the pack endpoint above as well as on the full gateway:
ask_pipeworx({ question: "your question about Dc Code data" })
The gateway picks the right tool and fills the arguments automatically.
MIT