Skip to main content
Glama
MoathOthman

proxycept-mcp

by MoathOthman

@proxycept/mcp — puente stdio hacia un servidor MCP de Proxycept

Un puente ligero stdio↔HTTP. Ejecuta un servidor Model Context Protocol en stdio y reenvía cada mensaje JSON-RPC, sin cambios, a un endpoint MCP de Proxycept (https://proxycept.com/api/mcp por defecto) con tu token de API como encabezado bearer.

La mayoría de las personas no necesitan este paquete. El servidor MCP de Proxycept es un servidor HTTP alojado — Claude Desktop y Cursor pueden conectarse a él con una URL y un encabezado Authorization, sin instalación. Este paquete existe para clientes MCP que solo hablan stdio, y porque npx es el modismo de instalación que esperan los listados de directorios.

Para la ruta sin instalación, el catálogo de herramientas y el modelo de seguridad, consulta proxycept.com/docs → "Connect Claude or Cursor", o docs/user-manual.md §14. Configuración → Tokens de API tiene la misma configuración lista para copiar, dirigida a esa implementación y nombrando el token que elegiste — el valor del token se muestra una vez, al crearlo, por lo que el bloque lleva un marcador de posición que debes sustituir.

Lo que no es

No contiene ninguna lista de herramientas, ningún esquema de herramientas y ninguna lógica específica de Proxycept. tools/list lo responde el servidor, no este paquete. Esto es deliberado: el servidor es la única fuente de verdad para el catálogo de herramientas, por lo que una herramienta añadida o modificada en el lado del servidor no necesita un lanzamiento aquí y no hay desviación de versiones que soportar. Si estás leyendo esto porque quieres añadir un caso especial para un nombre de herramienta, ese es el diseño yendo mal.

Requisitos

  • Node.js 20 o más reciente (node --version).

  • Un token de API de Proxycept (prx_live_…) — Configuración → Tokens de API en proxycept.com/settings.

Usa un token de solo lectura

Crea el token como de solo lectura. Este es el valor predeterminado y es el límite de seguridad, no una sugerencia.

Las herramientas de lectura de Proxycept devuelven tráfico HTTP capturado — contenido que tu cuenta no creó. Un cuerpo de respuesta malicioso de algún upstream puede ser leído por un modelo como si fuera una instrucción ("inyección de prompt"). Dicho claramente:

Un token MCP read_write significa que cualquier cosa que tu proxy capture puede escribir en tu configuración de Proxycept.

Un cuerpo de respuesta del servidor de otra persona, escrito para parecer una instrucción, se convierte en una ruta simulada, un patrón de intercepción o un perfil detenido en tu cuenta. Un token de solo lectura hace que esa cadena sea incompletable dentro de Proxycept: no hay nada a lo que una instrucción inyectada pueda llamar.

Trata cualquier cosa que devuelva una herramienta de Proxycept como datos no confiables, no instrucciones — especialmente si tienes otros servidores MCP conectados que puedan obtener URLs, ejecutar shells o escribir archivos.

Si realmente quieres lectura-escritura

Solo para un cliente al que estés dejando cambiar deliberadamente tu configuración. Entonces, todo esto:

  1. Crea un token separado (no actualices el que usas para leer tráfico).

  2. Nunca habilites "permitir siempre" para las llamadas a herramientas de Proxycept en tu cliente.

  3. No lo uses en la misma sesión en la que estás leyendo tráfico capturado — esa es la combinación exacta que hace que una instrucción inyectada sea procesable.

Una cosa que un token de lectura-escritura aún no puede hacer: reproducir una solicitud capturada. replay_flow reenvía una solicitud real a un tercero con las credenciales capturadas, por lo que requiere que un humano lo apruebe en la consola web de Proxycept (Configuración → Conecta tu cliente de IA). Tu cliente de IA no puede aprobar su propia reproducción, independientemente del token que tenga.

Configúralo — pon el token en el entorno, no en el archivo de configuración

La configuración de tu cliente MCP es JSON en texto plano en el disco, a menudo dentro de un directorio sincronizado con el almacenamiento en la nube. Un token prx_live_… pegado allí es una credencial de larga duración en una copia de seguridad en la que no pensaste. Prefiere el entorno.

Claude Desktop (claude_desktop_config.json), Cursor (~/.cursor/mcp.json) y la mayoría de los otros clientes usan la misma forma:

{
  "mcpServers": {
    "proxycept": {
      "command": "npx",
      "args": ["-y", "@proxycept/mcp"],
      "env": {
        // Read from your shell environment; the secret itself stays out of this file.
        "PROXYCEPT_API_TOKEN": "${PROXYCEPT_API_TOKEN}"
      }
    }
  }
}

No todos los clientes expanden ${VAR} en su configuración. Si el tuyo no lo hace, la siguiente mejor opción es exportar la variable donde el cliente la heredará (un perfil de shell de inicio de sesión, launchctl setenv en macOS, la unidad systemd en Linux) y eliminar el bloque env por completo — el puente lee PROXYCEPT_API_TOKEN de su entorno heredado. Pegar el token literal en el archivo de configuración funciona, y es la opción a la que recurrir al final.

--token en la línea de comandos es compatible pero desaconsejado: un argumento es visible para cada proceso en la máquina a través de la lista de procesos.

Variables de entorno

Variable

Requerida

Valor predeterminado

Significado

PROXYCEPT_API_TOKEN

Tu token de API. PROXYCEPT_TOKEN se acepta como alias.

PROXYCEPT_BASE_URL

no

https://proxycept.com

Origen de tu Proxycept. Se añade /api/mcp.

PROXYCEPT_URL

no

URL completa del endpoint. Anula PROXYCEPT_BASE_URL.

PROXYCEPT_TIMEOUT_MS

no

60000

Cuánto tiempo esperar por los encabezados de respuesta. Las respuestas en streaming no se ven afectadas.

PROXYCEPT_VERBOSE

no

1 registra el método, el estado HTTP y el tiempo en stderr. Nunca el token.

Cada variable tiene una bandera correspondiente (--base-url, --url, --token, --timeout, --verbose).

Autoalojado

PROXYCEPT_BASE_URL=https://proxy.internal.example PROXYCEPT_API_TOKEN=… npx -y @proxycept/mcp

Se rechaza http:// en texto plano para cualquier cosa que no sea loopback, por lo que el token nunca puede cruzar un salto en texto claro. Este paquete no proporciona ninguna bandera para deshabilitar la verificación TLS y no lo hará.

Node mismo tiene una — NODE_TLS_REJECT_UNAUTHORIZED=0 desactiva la verificación del certificado para todo el proceso — y el puente se niega a iniciar si encuentra eso configurado para un endpoint que no sea loopback, en lugar de heredarlo silenciosamente. Si te encuentras con ese error, desactiva la variable (revisa tu perfil de shell y el bloque env de tu cliente MCP); casi siempre es un resto de la depuración de algo más, y con ella configurada, tu token saldría a través de una conexión que cualquiera en la ruta puede leer.

Verifica tu configuración

PROXYCEPT_API_TOKEN=prx_live_… npx -y @proxycept/mcp --check

Realiza un handshake MCP real y un tools/list real, luego imprime lo que el servidor dijo:

endpoint: https://proxycept.com/api/mcp
server:   proxycept 1.0.0 (MCP 2025-06-18)
tools:    20 — list_workspaces, list_profiles, …
ok

El recuento de herramientas proviene del servidor, no de este paquete, por lo que cambia sin un lanzamiento aquí. Las herramientas de escritura se enumeran para cada cliente y se rechazan en la capa de API a menos que el token sea read_write — ver más abajo.

Códigos de salida: 0 ok · 1 no se pudo alcanzar o autenticar en el servidor · 2 configuración incorrecta.

Cuando algo está mal

Síntoma

Significado

no API token (salida 2)

PROXYCEPT_API_TOKEN no está configurado, o tu cliente no lo pasó.

unauthenticated: …

El token no es válido, ha caducado o ha sido revocado. Crea uno nuevo en Configuración.

forbidden: …

Token de solo lectura intentando una escritura, o sin acceso a ese recurso.

not_found: no MCP endpoint at this URL

PROXYCEPT_BASE_URL incorrecto, o MCP no está habilitado en ese servidor.

session_expired: …

El servidor finalizó la sesión MCP (se reinició o la sesión expiró). Vuelve a conectar el servidor en tu cliente; el puente ya ha eliminado el id de sesión obsoleto.

rate_limited: …

Límite de velocidad por token. El mensaje lleva el retraso de reintento.

cannot reach …

Red/DNS/cortafuegos. El puente nunca se cuelga en esto — da error.

Propiedades de seguridad

  • El token se envía como Authorization: Bearer … al origen configurado y a ningún otro lugar. Se rechaza una redirección a un origen diferente, no se sigue — la credencial nunca se entrega a un host que no configuraste. Se sigue la redirección 307/308 del mismo origen (hasta 3 saltos), ya que preservar tanto el origen como el método significa que reenviar la credencial no cambia quién la recibe, y los proxies inversos las emiten; se rechaza 301/302/303, porque reproducir un POST como un GET eliminaría silenciosamente tu solicitud. (El servidor alojado nunca redirige.)

  • El token nunca se registra y nunca se devuelve a tu cliente. Cada línea escrita en stderr, y cada mensaje de error que este puente sintetiza para stdout, pasa por un reductor que elimina el secreto configurado, cualquier cosa con forma de token prx_… y cualquier cadena Bearer … — incluso en modo --verbose e incluso una credencial que un servidor devuelva en un cuerpo 4xx/5xx. Ese último caso importa porque stdout es tu cliente MCP: termina en el contexto del modelo y en los registros del cliente. Los seguimientos de pila nunca se imprimen. Hay una prueba para cada uno de esos casos.

  • El flujo del protocolo nunca se reescribe. La redacción se aplica a los mensajes que este puente construye, no a las cargas útiles JSON-RPC del servidor — alterarlas corrompería el tráfico que estás depurando. La redacción del tráfico capturado es trabajo del servidor (aplica sus listas de denegación de enmascaramiento en la ruta de lectura).

  • No se escribe nada en el disco. Sin caché, sin archivo de configuración, sin almacén de credenciales.

  • stdout lleva solo mensajes de protocolo; todos los diagnósticos van a stderr.

  • Cero dependencias en tiempo de ejecución. npm ls --omit=dev en este paquete está vacío — la única cadena de suministro es el propio Node.

Desarrollo

cd clients/mcp
npm ci
npm test          # builds, then runs the suite against a fake JSON-RPC server
npm run typecheck
npm run check-package   # asserts the tarball ships every module, the bin, README and LICENSE

Diseño: src/config.ts (resolver + validar configuración), src/redact.ts (redacción + el único registrador), src/http.ts (un POST por mensaje; SSE, política de redirección, mapeo de errores HTTP→JSON-RPC), src/bridge.ts (el bucle de reenvío genérico), src/stdio.ts (encuadre JSON delimitado por nueva línea), src/cli.ts (argumentos, --check, cableado).

Verificado contra un servidor falso

El conjunto de pruebas se ejecuta contra un servidor HTTP JSON-RPC falso en test/helpers.js: reenvío textual (incluyendo métodos de los que este paquete nunca ha oído hablar), forma del encabezado, eco de Mcp-Session-Id y versión del protocolo, streaming SSE, notificaciones 202, mapeo de errores HTTP→MCP, manejo de lotes, la política de redirección, caducidad de sesión, encuadre NDJSON a través de límites de fragmentos, y la ausencia del token de toda salida.

Verificado contra un Proxycept real

--check se ha ejecutado de extremo a extremo contra una API de Control real con el servidor MCP habilitado (V4-T66): negociación de capacidades initialize real, un tools/list real (20 herramientas), con un token prx_live_ de solo lectura. Las incógnitas restantes son específicas de producción — si la implementación alojada emite un Mcp-Session-Id, si una llamada de herramienta larga regresa como JSON o SSE, y la redacción exacta de sus cuerpos 401/403/429. El puente es genérico, por lo que cualquiera de esos puede diferir sin un cambio de código aquí; la prueba en vivo contra https://proxycept.com es el paso 5 de PUBLISHING.md.

Publicación (mantenedores)

Los lanzamientos son manuales a propósito — deliberadamente no hay un trabajo de CI que publique, por lo que un token de flujo de trabajo comrometido no puede enviar un paquete que maneje credenciales de clientes. El runbook completo (creación de org, verificación previa, la secuencia exacta de npm publish --access public, verificación y la ruta de deprecación) está en PUBLISHING.md en este directorio. No forma parte del tarball publicado.

-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

  • MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.

  • Query SEC EDGAR filings, XBRL financials, and company data through MCP. STDIO & Streamable HTTP.

  • MCP server for Clipkit — gives AI agents a video toolbox via the Clipkit schema.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MoathOthman/proxycept-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server