Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Wyoming Statutes (W.S.) — state statutes by citation and by topic. Fleet #2744.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
PIPEWORX_API_KEYค่าที่ติดป้ายความลับคือกุญแจของบัญชีคุณ อย่าส่งให้ใคร และอย่าวางในแชต
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
ใช้ได้ทั้ง Claude บนเว็บ แอปคอมพิวเตอร์ และมือถือ:
https://gateway.pipeworx.io/wyoming-code/mcpเปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"wyoming-code": {
"command": "npx",
"args": [
"-y",
"@pipeworx/mcp-wyoming-code"
],
"env": {
"PIPEWORX_API_KEY": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add --transport http wyoming-code https://gateway.pipeworx.io/wyoming-code/mcpclaude mcp add wyoming-code --env PIPEWORX_API_KEY='ใส่ค่าของคุณ' -- npx -y @pipeworx/mcp-wyoming-codeเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"wyoming-code": {
"url": "https://gateway.pipeworx.io/wyoming-code/mcp"
}
}
}วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"wyoming-code": {
"command": "npx",
"args": [
"-y",
"@pipeworx/mcp-wyoming-code"
],
"env": {
"PIPEWORX_API_KEY": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"wyoming-code": {
"type": "http",
"url": "https://gateway.pipeworx.io/wyoming-code/mcp"
}
}
}วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"wyoming-code": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@pipeworx/mcp-wyoming-code"
],
"env": {
"PIPEWORX_API_KEY": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ChatGPT ต่อได้เฉพาะ server ที่อยู่บนอินเทอร์เน็ต:
https://gateway.pipeworx.io/wyoming-code/mcpชื่อเมนูอาจต่างกันเล็กน้อยตามแพ็กเกจและรุ่นของแอป
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
ยังไม่ได้อ่านรายการเครื่องมือของตัวนี้ เราตรวจ endpoint ทีละชุดวนไป
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub pipeworx-io ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้ตรวจ เราตรวจ endpoint ทีละชุดวนไป
ยังไม่ได้ตรวจ เราตรวจ endpoint ทีละชุดวนไป
ยังไม่ได้ตรวจ เราอ่านรายการเครื่องมือตอนตรวจ endpoint
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: PIPEWORX_API_KEY
ได้ทั้งสองแบบ จะลงในเครื่องหรือต่อผ่านคลาวด์ก็ได้
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.2.0) เข้า registry 8 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต่อผ่าน URL จึงใช้กับโปรแกรมที่รับ remote MCP ได้ เช่น ChatGPT ที่เปิดโหมดนักพัฒนา
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Reelsaw
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Drive a self-hosted Reelsaw: turn long videos into vertical clips, edit, re-render and export them.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
Wyoming Statutes by citation, plus full-text topic search. Keyless.
Part of Pipeworx — an MCP gateway connecting AI agents to 1857+ live data sources. This is an independent, unofficial integration — not affiliated with, endorsed by, or published by the upstream provider.
The Wyoming Legislative Service Office (wyoleg.gov) runs an Angular SPA for its "Wyoming Statutes & Constitution" page. Probed live 2026-10-06 by downloading the SPA's own JS bundles (main-*.js, the lazily-loaded chunk-_lXRwsur.js for its StateStatutesModule) and grepping for an API base URL or any lsoservice.wyoleg.gov reference — none exists for statute TEXT. The "Download the Wyoming Statutes" page is a plain static list of links to per-TITLE PDFs:
https://wyoleg.gov/statutes/compress/title06.pdf (Title 6, Crimes and Offenses)
A .docx sibling (the task's other named possibility) does NOT exist — every .docx path probed (several casings and locations) returns the SPA's own catch-all shell (HTTP 200, not a real 404), confirmed by checking content-type/length rather than status code. PDF is the only route.
shared/src/pdf-text.ts needed extendingWyoming's per-title PDFs are PDF 1.6, linearized, and store their Catalog and Pages root inside a compressed object stream (/Type/ObjStm) — a shape shared/src/pdf-text.ts explicitly did not support before this pack (its own header said so; Kentucky's PDFs, the only prior user, never hit it). Verified directly against Title 6's PDF: 5205 0 obj (its Pages root) never appears literally in the file at all; it exists only as an entry inside a decompressed ObjStm. Separately, the Catalog object IS direct but the original discovery regex broke the moment a nested dict (/MarkInfo< >) appeared before /Type/Catalog in the same object — also true here, not Wyoming- specific bad luck.
Both gaps are now fixed in shared/src/pdf-text.ts itself (see that file's header for the mechanism), not worked around in this pack, since a future PDF-only state with a compressing producer hits the identical wall. Verified end-to-end: Title 6 (441 KB, 210 pages) extracts to 387,932 characters with zero warnings, and W.S. 6-2-101 ("Murder in the first degree") comes back with its correct text.
Per-title PDFs run from ~300 KB (Title 97, the Constitution — not covered, see below) to ~2.9 MB (Title 35, Public Health and Safety) across the 44 titles this pack covers. Exactly like mcps/indiana-code, one JSON bundle per title is pre-fetched into the shared pipeworx-datasets R2 bucket (statutes/wy/ .json, via scripts/ingest-wyoming-statutes.mjs) plus a full-text search shard (wy-statutes). wy_statute reads the pre-sliced section straight out of the bundle; a live PDF fetch is the FALLBACK only — for a title the bundle does not yet cover, or a standalone (non-hosted) install with no R2 binding — and even then fetches only the ONE requested title's PDF, never the whole corpus.
wy_statute(citation) — full text of a Wyoming Statutes section by citation ("6-2-101" is murder in the first degree, Title 6; "20-1-105" is divorce grounds, Title 20). Accepts "6-2-101", "W.S. 6-2-101", "§ 6-2-101". Returns the current text, the section heading, and — only where the source carries one cleanly — an enactment history note (see below).wy_search(query, limit?) — full-text search over the statutory body text across all 44 covered titles via the shared FTS5 search shard. Returns matching citations and headings; call wy_statute for the full text.Wyoming cites title-chapter-section, dash separated, e.g. "6-2-101" or "20-1-105". A few titles carry a decimal number (e.g. "34.1-1-101", the Uniform Commercial Code). Title numbers map directly to the PDF filename (title06.pdf, title34.1.pdf, title99.pdf — single-digit titles are zero-padded, everything else is used as-is).
Wyoming's extracted PDF text has no HTML-style structural markers (unlike Indiana's ) — it is one long run per page, because the content streams use relative Td/T* text positioning rather than the absolute Tm this repo's PDF extractor tracks for line breaks. The citation itself is what locates a section: every real heading is typeset "N-N-N. Caption text." (a two-space sentence gap, confirmed in the raw content stream and used consistently throughout). A plain citation match is not enough on its own, though — a cross-reference ("...sentenced in accordance with the provisions of W.S. 6-2-102.") uses the exact same two-space convention after ITS OWN trailing period, so a naive match finds both the real heading and every inline cross-reference to the same number.
This pack uses the shared sliceSection "most text wins" heuristic (shared/src/statute-html.ts, already relied on by the Colorado/Iowa/ Nevada/Oregon pack family) rather than inventing a Wyoming-specific one: among every literal occurrence of the target citation followed by two spaces, the real heading is whichever has the most text before the next citation-shaped boundary. Proven on 6-2-101 specifically — its only other occurrence in Title 6 is a cross-reference that sits one sentence before the immediately next real section (6-2-202), so it resolves to near-zero trailing text and loses decisively. The ingest script applies the same "longest wins" principle in one pass across a whole title (grouping every boundary by citation) rather than per-citation, since a full crawl has no single "target" to search for.
wy_statute.wy_search.(Laws 1985, ch. ...) parenthetical per section, which wy_statute pulls into a separate history field when present. Title 6 (the current recodified criminal code) carries NO such trailing block — amendment/repeal notes appear INLINE at the subsection level ("(E) Repealed by Laws 2020, ch. 90, § 3.") as ordinary statutory text, with no structural marker separating them. history is null on most sections; that is not an extraction failure.wy_statute says so explicitly in its response rather than omitting the field silently.Title 97 (the Wyoming Constitution) cites "Article N, Section N" rather than "N-N-N" — a different grammar entirely — and is excluded from this pack's citation parsing and from the ingest script's title list. A Wyoming Constitution pack, if built, is a separate source. Title 99 (Noncodified Statutes) DOES use the standard "N-N-N" scheme and IS included.
All 44 titles that use the title-chapter-section citation scheme: 1-42, the decimal 34.1 (Uniform Commercial Code), and 99 (Noncodified Statutes). 21,268 sections ingested.
node scripts/ingest-wyoming-statutes.mjs — re-run periodically (the Legislature convenes annually; no daily-freshness need). No schedule is wired up: dispatch by hand, following scripts/ingest-indiana-statutes.mjs's pattern. PDF extraction is duplicated as plain JS in scripts/lib/pdf-text.mjs (a deliberate line-for-line port of shared/src/pdf-text.ts's extractPdfText) because scripts/ cannot resolve a bare @pipeworx/shared specifier outside the pnpm workspace's own per-package node_modules link — see that file's header.
Official state legislature site (wyoleg.gov). Wyoming statutes are public record; no reuse restriction was found on the per-title PDF paths used here.
Add to your MCP client (Claude Desktop, Cursor, Windsurf, etc.):
{
"mcpServers": { "wyoming-code": { "url": "https://gateway.pipeworx.io/wyoming-code/mcp" } } }
tools/list at https://gateway.pipeworx.io/wyoming-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 1857+ 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/wy_statute \
-H 'Content-Type: application/json' \ -d '{"citation":"6-2-101"}'
No account needed for the first calls. Inspect any tool: GET https://gateway.pipeworx.io/v1/tools/wy_statute. Find one: POST https://gateway.pipeworx.io/v1/tools/search_packs with {"query":"..."}.
@pipeworx/mcp-wyoming-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/wyoming-code/mcp endpoint shown above. It needs network access; there is no offline mode.
{
"mcpServers": { "wyoming-code": { "command": "npx", "args": ["-y", "@pipeworx/mcp-wyoming-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 Wyoming Code data" })
The gateway picks the right tool and fills the arguments automatically.
MIT