Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Generic HAR analysis MCP server: index and query captures without burning tokens on raw files.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"hardly": {
"command": "uvx",
"args": [
"hardly",
"serve"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add hardly -- uvx hardly serveวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"hardly": {
"command": "uvx",
"args": [
"hardly",
"serve"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"hardly": {
"type": "stdio",
"command": "uvx",
"args": [
"hardly",
"serve"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 7 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub b1tninja ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (1.0.0) เข้า registry 9 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, Systemdox
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.
Your architecture in your agents' context: checks, specs, ADRs and docs over MCP, at write time.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
A generic, content-neutral CLI and MCP server for reading and capturing HAR files and turning them into what a client SDK needs: endpoints, forms and labels, data and media kinds, and how credentials and authentication work.
Browser HAR captures are often tens of megabytes. Agents that read them burn tokens and still miss structure. hardly streams a HAR into SQLite once, then exposes small, redacted, paginated tools over MCP (and a matching CLI). Bodies are truncated, secrets are redacted, lists are paginated: you *hardly* need the whole file.
hardly knows technologies (HTML forms, ASP.NET WebForms, GraphQL, OAuth/OIDC, cookies/CSRF, bot walls, ArcGIS REST...) and resource kinds (JSON, CSV, HTML tables, PDF, images...), not any particular site. Downstream SDKs keep their own recipes and vocabularies. See docs/scope.md.
pip install hardly # or: pipx install hardly / uv tool install hardly
pip install 'hardly[capture]' && python -m playwright install chromium # optional: record HARs
To work on hardly itself: pip install -e ".[dev]" (CONTRIBUTING.md).
Python 3.10+. Give an output path to save; otherwise nothing is written. Everything lives in memory unless you pass output_path (hardly session open HAR -o index.db). Python: with open_session(har) as s: ... (integrating.md).
hardly guide mode # which of the three modes fits
hardly session overview path/to/capture.har # counts per server, method and status hardly session site-brief path/to/capture.har # one-screen digest of a server-rendered site hardly endpoint list path/to/capture.har --host api.example.com hardly session report path/to/capture.har # one-pass findings with severity hardly write export path/to/capture.har --format openapi -o api.yaml hardly write export path/to/capture.har --format client_python --host api.example.com -o client.py
For agents, start with hardly_guide_task_plan(goal, har_path, url) (CLI: hardly guide task-plan --goal ...): it returns an ordered plan with example calls and the current environment state.
The CLI and the MCP server share one vocabulary: the command is the tool name without hardly_ (hardly_session_open is hardly session open HAR, hardly_send_entry is hardly send entry HAR 12 --confirm).
| First word | Meaning |
|---|---|
send | sends requests to a real server; needs confirm=true (CLI --confirm), otherwise returns only a plan |
write | writes a file; refuses to replace one unless overwrite=true (--overwrite) |
browser | drives or reads a real browser |
| anything else | only reads loaded data |
Merged tools take a sections list, for example hardly_auth_report(sections=['credentials', 'cookies']). Reference: docs/tools.md (71 tools), docs/cli.md (commands); stability promise: docs/api-stability.md.
| Mode | When | Entry |
|---|---|---|
| archive | A HAR file already exists | hardly_session_open(har_path) then hardly_session_site_brief / hardly_endpoint_list |
| headless | Only a URL; an agent can drive the page | hardly_browser_capture_discover(url, analyze=true, confirm=true) (CLI hardly browser capture-discover URL --analyze --confirm) |
| interactive | Bot wall, captcha, MFA, complex UI | hardly_browser_start(headed=true), ask the person, then hardly_browser_stop |
After any capture, continue in archive mode on the returned session_id. hardly never evades captchas or bot walls: it identifies them and tells you to stop, ask a person, or re-run elsewhere (docs/gate-policy.md). Details: docs/capture.md.
uvx hardly serve # MCP server over stdio (archive mode)
uvx --from 'hardly[capture]' hardly browser --help # with the Playwright capture extra pipx install 'hardly[capture]' # or install the CLI permanently hardly skill install # copy the Agent Skill into ~/.claude/skills/hardly
MCP client config for the published package:
{ "mcpServers": { "hardly": { "command": "uvx", "args": ["hardly", "serve"] } } }
Browser capture needs a local install ([capture] extra, then python -m playwright install chromium; headed capture needs a display). The container image ghcr.io/b1tninja/hardly (multi-arch, built on each release) is for archive/headless analysis only; mount your working directory at /workspace. Release and verification details: docs/releasing.md.
Local venv (recommended; headed capture needs a display):
{
"mcpServers": { "hardly": { "command": "/path/to/hardly/.venv/bin/python", "args": ["-m", "hardly"] } } }
On Windows use ...\\.venv\\Scripts\\python.exe. hardly serve starts the same server.
Docker (offline analysis only; mount your working directory):
python scripts/build_image.py # builds hardly-mcp:latest (Windows: scripts\deploy-docker.ps1)
{
"mcpServers": { "hardly": { "command": "docker", "args": ["run", "--rm", "-i", "-v", "/home/me/work:/workspace", "-e", "HARDLY_WORKSPACE=/workspace", "hardly-mcp:latest"] } } }
Host paths under the mount map to /workspace/.... To skip building locally, use the published image ghcr.io/b1tninja/hardly:latest in place of hardly-mcp:latest.
hardly_guide_task_plan, hardly_guide_mode, hardly_server_status (stale MCP? restart the server), hardly_guide_help(topic).analyze_har, discover_apis, capture_portal, document_api, find_auth_flow, reverse_engineer_api, build_client_sdk, diagnose_blocked_capture, verify_client.hardly://cheatsheet and hardly://docs/ for the bundled docs.hardly skill install [--dest DIR] (default ~/.claude/skills/hardly), or hardly skill print. Source: skills/hardly.| Doc | Contents |
|---|---|
| docs/README.md | Index of all docs |
| docs/scope.md | What is in and out of scope; change checklist |
| docs/cheatsheet.md | One-page quick reference |
| docs/concepts.md | Sessions, index, redaction, modes |
| docs/sdk-workflow.md | Capture to client SDK, step by step |
| docs/reporting.md | hardly_session_report findings |
| docs/catalog.md | Target catalog, TargetAdapter, batch verify |
| docs/capture.md | Headless and interactive capture, recipes, env vars |
| docs/technologies.md | What is detected, per technology |
| docs/architecture.md | Data flow and design rules |
| docs/troubleshooting.md | Common first-use problems |
| docs/tools.md | Generated reference for every MCP tool |
| docs/cli.md | CLI grammar and every command (generated) |
| docs/api-stability.md | What is public and the v1 compatibility policy |
| docs/api-decisions.md | How the v1 names were chosen; old to new names |
from hardly import open_session
with open_session("capture.har") as s: # in memory; pass output_path= to save the index print(s.conn.execute("select count(*) from entries").fetchone()[0])
pytest -q # offline; HARDLY_LIVE_CAPTURE=1 enables live Playwright tests
ruff check .
Live soak against public demo sites (no private HARs): hardly soak live --list, then hardly soak live (or --ids datatables-ajax,quotes-login,…). Catalog covers loopback WebForms/token login, HTML/AJAX tables, form logins, GraphQL, and JSON/OpenAPI — see hardly.live_targets and docs/test-targets.md. CONTRIBUTING.md, AGENTS.md; release notes in CHANGELOG.md.
HAR files often contain live passwords and session tokens. hardly redacts by default, but treat captures as secrets: do not commit or share them, and rotate credentials if one leaked. Use hardly only on targets you are authorised to access. See SECURITY.md.
MPL-2.0. Generated output (stubs, OpenAPI, reports) is not covered; see NOTICE.md.