Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Descripción del creador (original en inglés)
Generic HAR analysis MCP server: index and query captures without burning tokens on raw files.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Abre Claude Desktop → Settings → Developer → Edit Config y pega esto en claude_desktop_config.json
{
"mcpServers": {
"hardly": {
"command": "uvx",
"args": [
"hardly",
"serve"
]
}
}
}Ejecuta esto en tu terminal
claude mcp add hardly -- uvx hardly servePégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"hardly": {
"command": "uvx",
"args": [
"hardly",
"serve"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"hardly": {
"type": "stdio",
"command": "uvx",
"args": [
"hardly",
"serve"
]
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Este se ejecuta en tu computadora, y ChatGPT solo puede conectarse a servidores en internet. Elige otra app.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 7 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub b1tninja, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Este se ejecuta en tu computadora; no hay endpoint en internet
Se ejecuta en tu computadora y usa ajustes locales en su lugar
Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
El registro no indica ninguna clave obligatoria, aunque algunos servidores te piden iniciar sesión la primera vez que los usas.
Se ejecuta en tu computadora. Tu app de IA lo inicia cuando hace falta, y los datos no pasan por los servidores del creador (a menos que el propio servidor llame a un servicio en línea).
El repo de GitHub cambió por última vez –, y la última versión (1.0.0) llegó al registro hace 9 días.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Python (uv) en tu computadora.
En la misma categoría: Spec Driven Development, Remote Desktop Commander, Agent Data Tools: Utilities
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
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.
103 tools: JSON repair, CSV, hashes, cron, dates, units, validators. 25 free calls.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
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.