Skip to main content
Glama
README.md
# higpertext-mcp

## Eventos canónicos

Los adapters traducen los eventos nativos de cada asistente a un catálogo
independiente de plataforma: `SESSION_STARTED`, `PROMPT_RECEIVED`,
`PLAN_CREATED`, `ACTION_REQUESTED`, `ACTION_AUTHORIZED`, `ACTION_STARTED`,
`ACTION_COMPLETED`, `ACTION_FAILED`, `CONTEXT_COMPACTING` y
`SESSION_FINISHED`.

La traducción se implementa en `higpertext_mcp.events` y
`higpertext_mcp.hook_protocol`. Cada adapter declara qué eventos puede
observar y sus limitaciones. En particular, `ACTION_AUTHORIZED` no lo emite
un hook: la autorización efectiva pertenece al gateway/controller.

Servidor MCP que expone capabilities de `higpertext-cli` como tools reales
(function-calling), en vez del interceptor de texto sobre Bash que usaba antes el motor.

> Documentación completa: [docs/installation.md](./docs/installation.md)
> (instalación, `.mcp.json`, cómo probarlo desde Postman) y
> [docs/api/README.md](./docs/api/README.md) (contrato de respuesta y catálogo
> de tools con ejemplos de `arguments`).

## Por qué existe

Ver la discusión de diseño en el historial del proyecto `higpertext-cli`
(`bash_rules.py`, `hook_bash_guard.py`): los redirects de texto sobre Bash
(`grep`, `git diff/status`, etc.) interceptaban el comando, ejecutaban la capability
en un subprocess aparte y el comando original corría de todos modos — ruido sin
efecto real. Este servidor reemplaza esa capa con tools MCP genuinas: el modelo
invoca la capability directamente, con schema validado, sin pasar por Bash.

## Contrato de resultados

Cada invocación devuelve `structuredContent`, no una transcripción de terminal:

```json
{
  "ok": true,
  "summary": "Resultado breve para el agente",
  "data": {},
  "artifacts": [],
  "warnings": [],
  "error": null
}
```

Las capabilities que todavía escriben texto se encapsulan temporalmente en
`data.text`; el mensaje visible del tool contiene sólo `summary`. El CLI `htx`
sigue disponible para personas y CI, pero ya no imprime el `stdout` completo de
una capability exitosa.

## Qué capabilities se exponen

No es un set fijo: se registra como tool cualquier capability que (a) el
motor `higpertext-cli` instalado traiga y (b) esté listada en `capabilities`
del perfil activo del proyecto destino (`.higpertext/config/environment.json`
→ `active_profile` → `src/config/profiles/<perfil>.json`). Sin perfil activo o
legible, no se expone ninguna tool (fail-closed).

El catálogo probado hasta ahora (9 capabilities reales, documentadas con
ejemplos en [docs/api/tools.md](./docs/api/tools.md)):
`common.grep-search`, `git.diff`, `git.ls-files`, `common.smart-read`,
`common.code-skeletonizer`, `common.memory-manager`, `git.committer`,
`security.secret-scanner`, `common.quality-resolver`. Un décimo id,
`common.knowledge-asker`, sigue en `annotations.py` pero no tiene definición
JSON en el motor instalado — nunca se expone hasta que exista.

## Instalación

`higpertext-cli` es un paquete propietario, no está en PyPI — se instala editable
apuntando al checkout local, igual que `agent-bootstrap` lo hace para agentes
externos:

```bash
python3 -m venv .venv
.venv/bin/pip install -e /ruta/a/higpertext-cli
.venv/bin/pip install -e .
```

## Uso con Claude Code

Agregar en `.mcp.json` del proyecto destino (el que tiene su propio
`.higpertext/`):

```json
{
  "mcpServers": {
    "higpertext": {
      "command": "/ruta/a/higpertext-mcp/.venv/bin/python",
      "args": ["-m", "higpertext_mcp.server"]
    }
  }
}
```

El servidor resuelve la raíz del proyecto por `cwd` del proceso (el cliente MCP
local lo lanza con cwd = raíz del proyecto). Para forzar otra raíz, setear
`HIGPERTEXT_PROJECT_ROOT` en el bloque `env` de la entrada del server en
`.mcp.json`.

**Limitación conocida (v1)**: la lista de tools se arma una sola vez, al conectar.
Si cambiás de perfil (`htx profile load`) a mitad de sesión, hay que reconectar el
server para que la lista de tools se actualice — no hay refresh automático todavía.

## Tests

```bash
.venv/bin/python -m pytest tests -q
```

Dos tests (`test_load_tool_spec_real_grep_search`,
`test_call_capability_real_grep_search_on_this_repo`) son de integración real: usan
la definición real de `common.grep-search` del motor instalado, así que hay que
correrlos con `higpertext-cli` instalado editable (ver Instalación) y cwd dentro de
un checkout de `higpertext-cli` real.

## Roadmap (no construido todavía)

- Resto de las ~37 capabilities restantes del motor.
- Refresh de tools al cambiar de perfil sin reconectar.
- Confirmación explícita antes de invocar capabilities con side-effects
  destructivos (`git.committer`, `common.memory-manager`).

TDQS

A4.1/5.0

Scored across 3 tools

Disambiguation4/5

Each tool targets a distinct stage: project setup, Codex-specific rules generation, and multi-adapter rendering. There is slight potential confusion between generate-codex-rules and render-adapters since both involve producing Codex-related outputs, but their specific outputs and purposes are clearly separated.

Naming Consistency5/5

All tool names follow the consistent pattern `higpertext-<verb>-<object>`, using lowercase with hyphens throughout. The verbs 'configure', 'generate', and 'render' clearly indicate different actions while maintaining a uniform grammatical structure.

Tool Count5/5

With only three tools, the set is compact and well-scoped to the server's apparent purpose: setting up and generating higpertext configuration outputs. Each tool addresses a necessary step in the workflow without unnecessary redundancy or bloat.

Completeness4/5

The three tools cover the main lifecycle: initialize project config, generate Codex rules, and render adapters for multiple assistants. Minor gaps exist, such as lacking a tool to inspect or validate current profiles or configurations, but agents can work around these by reading the generated files directly.

Maintenance

ActivityMaintained
ResponsivenessNo issues