Prototipo · Versión preliminar: todos los servidores del registro oficial, sincronizados cada 30 minutos. Las reseñas y las cuentas llegarán en una etapa posterior.
PopNx MCPServidores MCP para quienes usan IA · explicados con palabras sencillas

HAI-MCP

de smlfgversión 0.1.0i★ –iSe ejecuta en tu computadora
Nombre en el registroio.github.smlfg/hai-mcp

Instalar

Resumen

Descripción del creador (original en inglés)

Model-agnostic MCP control plane for HAI: bounded missions, owner-gated actions, drift checks.

Los tres pilares de PopNx MCP

Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.

Qué puedes hacer con él

Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.

  • Conexión: Se ejecuta en tu computadora
  • Transporte: stdio
  • Categoría: Otros
  • Debes completar: HAI_HTTP_TOKEN

Instalación

Elige la app de IA que usas y copia la configuración.

Antes de instalar

  • Revisiones básicas: 1 de 1 superadas
  • Se ejecuta en tu computadora con los permisos de tu usuario (archivos, red, apps).
  • Debes completar tú: HAI_HOME, HAI_OWNER_HOME, HAI_TRANSPORT, HAI_HTTP_HOST, HAI_HTTP_PORT, HAI_HTTP_TOKEN

Los valores marcados como secretos son llaves de tu cuenta. Nunca los compartas ni los pegues en un chat.

Necesitas

  • PyPIuv de Python instalado (para el comando uvx)

¿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": {
    "hai": {
      "command": "uvx",
      "args": [
        "hai-mcp"
      ],
      "env": {
        "HAI_HOME": "your-value",
        "HAI_OWNER_HOME": "your-value",
        "HAI_TRANSPORT": "your-value",
        "HAI_HTTP_HOST": "your-value",
        "HAI_HTTP_PORT": "your-value",
        "HAI_HTTP_TOKEN": "your-value"
      }
    }
  }
}

Ejecuta esto en tu terminal

claude mcp add hai --env HAI_HOME=your-value --env HAI_OWNER_HOME=your-value --env HAI_TRANSPORT=your-value --env HAI_HTTP_HOST=your-value --env HAI_HTTP_PORT=your-value --env HAI_HTTP_TOKEN=your-value -- uvx hai-mcp

Completa los valores vacíos antes de ejecutarlo.

Abrir en Cursor

O copia la configuración tú

Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json

{
  "mcpServers": {
    "hai": {
      "command": "uvx",
      "args": [
        "hai-mcp"
      ],
      "env": {
        "HAI_HOME": "your-value",
        "HAI_OWNER_HOME": "your-value",
        "HAI_TRANSPORT": "your-value",
        "HAI_HTTP_HOST": "your-value",
        "HAI_HTTP_PORT": "your-value",
        "HAI_HTTP_TOKEN": "your-value"
      }
    }
  }
}

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ú.

Abrir en VS Code

O copia la configuración tú

Pégalo en .vscode/mcp.json de tu proyecto

{
  "servers": {
    "hai": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "hai-mcp"
      ],
      "env": {
        "HAI_HOME": "your-value",
        "HAI_OWNER_HOME": "your-value",
        "HAI_TRANSPORT": "your-value",
        "HAI_HTTP_HOST": "your-value",
        "HAI_HTTP_PORT": "your-value",
        "HAI_HTTP_TOKEN": "your-value"
      }
    }
  }
}

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.

Valores que debes completar

  • HAI_HOME env
    Directory for the global HAI state (missions, leases, proofs). Default: ~/.hai
  • HAI_OWNER_HOME env
    Directory for the owner out-of-band channel (one-time nonces). Deliberately outside HAI_HOME. Default: ~/.hai-owner
  • HAI_TRANSPORT env
    Transport selection: 'stdio' (default) or 'streamable-http'.
  • HAI_HTTP_HOST env
    Host for streamable-http transport. Refused unless loopback or HAI_HTTP_TOKEN is set.
  • HAI_HTTP_PORT env
    Port for streamable-http transport.
  • HAI_HTTP_TOKEN secreto env
    Bearer token required to accept non-loopback streamable-http connections. Loopback binds without a token.

Esta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.

Qué puede hacer

Se ejecuta en tu computadora; la lista de herramientas aparece en tu app de IA después de instalarlo.

Revisiones básicasi

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

  • ✓ Superada

    El creador coincide con el repo

    El nombre en el registro se verificó con la cuenta de GitHub smlfg, dueña del repo

  • … Aún sin revisar

    Sigue en mantenimiento

    Todavía no hemos leído este repo en GitHub

  • … Aún sin revisar

    Tiene licencia

    Todavía no hemos leído este repo en GitHub

  • – No aplica

    El endpoint responde

    Este se ejecuta en tu computadora; no hay endpoint en internet

  • – No aplica

    Inicio de sesión con OAuth

    Se ejecuta en tu computadora y usa ajustes locales en su lugar

  • … Aún sin revisar

    Sin instrucciones ocultas en las descripciones de herramientas

    Se ejecuta en tu computadora; solo podemos leer listas de herramientas de endpoints en internet

Comparado con otros en Otrosi

  • Más estrellas que el 0% de los otros 18352 servidores de esta categoría
  • Publicado en el registro más recientemente que el 64% de los otros 18352 servidores de esta categoría
  • Revisiones básicas iguales o mejores que el 100% de los otros 18352 servidores de esta categoría

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.

Preguntas frecuentes

¿Es seguro HAI-MCP?

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.

¿Qué claves o códigos necesita?

Debes completar: HAI_HTTP_TOKEN

¿Se ejecuta en mi computadora o en la nube?

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).

¿Sigue en mantenimiento?

El repo de GitHub cambió por última vez –, y la última versión (0.1.0) llegó al registro hace 25 días.

¿Qué apps pueden usarlo?

Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. También necesitas Python (uv) en tu computadora.

¿Qué puedo usar en su lugar?

En la misma categoría: Spec Driven Development, Remote Desktop Commander, Hunter Killer

Alternativas

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

Spec Driven Development

de formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

Se ejecuta en tu computadora★ 440MITActualizado hace 14 meses
Instalar

Remote Desktop Commander

de desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

Se ejecuta en la nube★ 211Actualizado anteayer
Instalar

Hunter Killer

de Irishman-Management-LLC

Liquidation walls, snapshot age, evidence labels and a public record. Managed OAuth.

Se ejecuta en la nubeActualizado hoy
Instalar

README del creador

Abrir el README

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.

HAI-MCP · Model-agnostic MCP control-plane for the Human Agent Interface (HAI) approach


Why this repo exists

Agents are now driving shells, editors, browsers, and CI. Most of them work without a human in the loop long enough for the human to lose the thread. HAI — the Human Agent Interface — is an opinionated, evidence-based way to keep agentic work observable, bounded, owner-gated, and recoverable so a human can still *own* the work even when an agent is doing it.

HAI-MCP is the open-source, model-agnostic implementation of that approach. It is one of the pieces of Samuel Fleig's HAI stack — the part that any Model-Context-Protocol-speaking client can talk to, regardless of which LLM sits behind it.

Canonical site: https://www.human-agent-interface.com/ ·

About Samuel: https://www.human-agent-interface.com/samuel/


What "MCP control-plane" means here

MCP — the Model Context Protocol — is a standard JSON-RPC interface that lets a tool server expose tools, resources, and prompts to an LLM-backed client (Claude Code, Codex, Cursor, Grok, OpenCode, Hermes, …). The client discovers the server's tools and calls them during a conversation; the server stays stateless from the model's point of view.

A control-plane server is one that does not do the work itself — it governs how work is authorised, scoped, recorded, and handed back to the human. Concretely, an MCP control-plane:

ConcernWhat HAI-MCP exposes for it
Mission contracthai_open_mission, hai_get_contract, hai_recontract
Session leasinghai_authorize_session — time-bounded, contract-versioned
Activity classificationhai_check_activity / hai_drift_check — on-contract vs. off-contract
Focus & laneshai_set_focus, hai_status — at most 2 ACTIVE lanes
Owner gateone-time nonces out-of-band (HAI_OWNER_HOME or ntfy), or Touch ID on macOS, for accept / recontract / abandon
Evidence & closurehai_proof, hai_close_mission, hai_stop
Inbox & intakehai_intake, hai_distill, hai_park, hai_park_item
Recoveryhai_checkpoint, hai_recover

HAI-MCP is deliberately not an agent runtime. It never calls an LLM, never runs shell, never pushes to git, and never deletes files. It is the judge — agents call it to ask *"may I?"* and to record *"I did"*.


Features

  • One state engine, 23 tools — three surfaces (legacy control plane, mission lifecycle, daily-loop wrappers) sharing one hardened core.
  • Strict fail-closed boundary — inputs are typed and rejected, not coerced. A String "2" is refused for an Integer field; the server stays reachable instead of silently mangling types.
  • Versioned mission contracts — every mission has a contract with a monotonic version. Recontracting produces a visible field-level diff and revokes every existing lease.
  • Time-bounded session leases — hai_authorize_session binds a lease to a mission id, a contract version, a duration, a role, a contribution, and a claimed criterion set.
  • Deterministic drift check — hai_check_activity classifies planned or observed activity against the contract without ever calling an LLM.
  • Two-principal owner gate:
  • Default (nonce): the server delivers a one-time code to the owner channel (HAI_OWNER_HOME / file, or ntfy). The client never sees the code. The code is bound to the exact change, single-use, expiring; only the hash is stored in HAI_HOME.
  • `touchid` (macOS): the server process shows a Touch ID prompt for that exact change. There is no code. The agent's follow-up call applies it; the client cannot approve itself.
  • `ack_legacy`: the old self-asserted owner_ack flag — an honor system, surfaced as such by hai_health.
  • Mount table — hai_bind_project joins a logical project_id to a device-local directory behind owner_ack + reason.
  • Model-agnostic — same binary, same tools, same contract. Switch LLMs without rewriting governance.
  • Two transports — stdio (default) and streamable-http with optional bearer-token binding (loopback only by default).
  • Checkpoint & recover — hai_checkpoint snapshots context; hai_recover returns the smallest recovery next action.
  • 203 tests green — the engine is covered; the slice remains open for the learning-budget and owner-instrument follow-ups.

Install & run

Requires Python ≥ 3.12 and uv.

git clone https://github.com/smlfg/hai-mcp.git

cd hai-mcp uv sync --all-extras uv run hai-mcp # stdio transport, default

Streamable-HTTP transport:

HAI_TRANSPORT=streamable-http \

HAI_HTTP_HOST=127.0.0.1 \ HAI_HTTP_PORT=8765 \ HAI_HTTP_TOKEN="$(openssl rand -hex 32)" \ uv run hai-mcp

HTTP binding to non-loopback hosts is refused unless HAI_HTTP_TOKEN is

set. See docs/OWNER_GATE.md and the --help output.


Sample usage — wiring the server into a client

The server is transport-agnostic; every MCP client gets the same 23 tools. Drop the snippet into the client's MCP config and restart.

Claude Code / Claude Desktop
{

"mcpServers": { "hai": { "command": "uv", "args": [ "run", "--directory", "/absolute/path/to/hai-mcp", "hai-mcp" ], "env": { "HAI_HOME": "/home/you/.hai", "HAI_OWNER_HOME": "/home/you/.hai-owner" } } } }

Cursor

Cursor plugin: this repo is also a Cursor plugin (.cursor-plugin/plugin.json + mcp.json). It starts the server from PyPI with uvx hai-mcp, state goes to ~/.hai and ~/.hai-owner by default. Requires uv.

Manual config:

{

"mcpServers": { "hai": { "command": "uv", "args": [ "run", "--directory", "/absolute/path/to/hai-mcp", "hai-mcp" ], "env": { "HAI_HOME": "/home/you/.hai", "HAI_OWNER_HOME": "/home/you/.hai-owner" } } } }

Codex / Hermes / any MCP stdio client

Same shape — point at the uv run --directory … hai-mcp command and pass the two env vars. More snippets live in docs/client-snippets/.


Sample usage — driving the protocol

A typical agent loop calls HAI-MCP before it acts and after it acts.

1. Open a bounded mission
hai_mission_start(

problem = "Refactor the evaluator harness to be deterministic.", artifact = "Pull request titled 'evaluator: deterministic harness'.", done_criteria = [ {"id": "C1", "description": "Two A/B cases produce identical verdicts on three reruns."}, {"id": "C2", "description": "Harness runs offline; no live network calls."}, ], owner = "samuel", time_limit_hours = 6, non_goals = ["Do not touch the MCP server.", "Do not change contract shapes."], constraints = {"python": ">=3.12", "branch": "slice/eval-determinism"}, )

2. Authorise a session lease
hai_authorize_session(

mission_id = " ", contract_version = 1, agent_identity = "codex-cli", role = "implementer", contribution = "Deterministic A/B harness", expected_result = "Green pytest with frozen inputs.", duration_minutes = 90, criterion_ids = ["C1", "C2"], device_id = "mbp-mirgraatin", harness_id = "codex-cli/0.45", )

3. Check an activity before running it
hai_check_activity(

session_id = " ", activity_step = "Replace random.seed with a seeded fixture in tests/test_eval_ab.py", criterion_id = "C1", affected_paths = ["tests/test_eval_ab.py", "tests/fixtures/ab/case1.json"], )

→ {"verdict": "on_contract", ...}

4. Close with evidence
hai_proof(

mission_id = " ", contract_version = 1, outcome_summary = "A/B cases produce identical verdicts on three reruns; harness offline.", evidence = { "C1": {"command": "pytest tests/test_eval_ab.py -q", "exit_code": 0, "reruns": [0, 0, 0]}, "C2": {"command": "pytest tests/test_eval_ab.py -q --offline", "exit_code": 0}, }, )

5. Owner-gated promotion

For hai_accept_next_step, hai_recontract, or abandoning a mission, the first call without owner_code asks the owner out of band.

  • `file` / `ntfy`: a one-time code is delivered to HAI_OWNER_HOME or an ntfy topic. Relaying it back as owner_code= completes the action. The client never sees the code; only its hash is stored in HAI_HOME.
  • `touchid` (macOS): set HAI_OWNER_CHANNEL=touchid on the server. The server shows a Touch ID prompt and returns status: owner_approved. Call the same tool again with the same arguments (no code) to apply that exact change. Optional: HAI_OWNER_TOUCHID_TIMEOUT (default 60), HAI_OWNER_TOUCHID_HELPER (a compiled binary), and HAI_OWNER_TOUCHID_FALLBACK=file only when Touch ID cannot run.

The approval is bound to the exact change and is single-use. On a Mac, uv run python scripts/manual_touchid.py prompt and … gate exercise the real sensor; CI mocks the helper. Detail: docs/OWNER_GATE.md.


State layout

  • Global: $HAI_HOME — default ~/.hai
  • Owner channel: $HAI_OWNER_HOME — default ~/.hai-owner (deliberately outside HAI_HOME so the agent cannot read it)
  • Per-project: /Projek-Managment/ (legacy) or device mount + relative prefixes when a project_id is bound
  • Mount table: HAI_HOME/core/projects.json

All writes are resolved and confined to these roots.


Project layout

hai-mcp/

├── docs/ │ ├── TOOL_CONTRACT.md # normative tool contract (gates, errors, schemas) │ ├── OWNER_GATE.md # nonce + ack_legacy owner-gate spec │ ├── BUILD_HANDOFF.md │ ├── client-snippets/ # ready-to-paste mcp.json snippets │ ├── eval/ # A/B harness contract │ ├── plans/ # dated design slices │ └── visuals/ # mission-lifecycle banner assets ├── scripts/ # stdio smoke + impact-eval runner ├── src/hai_mcp/ # the server └── tests/ # 203 tests


Limitations

HAI-MCP is intentionally narrow. It does not:

  • Call any LLM. The server is dumb on purpose — governance is a separate concern from generation.
  • Execute code, run shells, push git, or delete files. It refuses tools like *"commit & push"*, *"run pytest"*, *"rm -rf"*. Agents are expected to do those things and report back via hai_check_activity / hai_proof.
  • Merge with `hai-intake` packages. The intake pipeline is a separate stack; coexistence is fine, fusion is not.
  • Provide a UI. There is no das

Solo se muestra el principio; lee el resto en el repo

Pregunta a PopNx