Command-Line MCP Server
Command-Line MCP Server
Un servidor remoto Model Context Protocol que expone una única herramienta, run_command, que permite a Claude (a través de la función Connectors de Claude Desktop) ejecutar comandos de shell en la máquina que ejecuta este servidor.
El servidor implementa OAuth 2.1 (Dynamic Client Registration + PKCE) porque los conectores de Claude Desktop requieren un handshake OAuth — un conector sin servidor de autenticación es rechazado al iniciar sesión. Este servidor auto-aprueba la autorización (sin prompt de usuario), lo cual es adecuado para un servidor personal expuesto a través de un túnel.
⚠️ Advertencia de seguridad: Cualquiera que pueda alcanzar este servidor y completar el flujo OAuth (automático) puede ejecutar comandos arbitrarios como el usuario que lo ejecuta. Solo expóngalo a través de un túnel privado (cloudflared / ngrok) y nunca en una red pública.
Cómo funciona
Transporte: Streamable HTTP (el transporte que requieren los conectores de Claude Desktop).
Sin estado: cada solicitud crea una nueva instancia de servidor/transporte (no se necesita almacén de sesiones).
Endpoint:
POST /mcpHealth check:
GET /health
Related MCP server: Claude MCP Command Server
Herramientas
run_command
Ejecuta un comando de shell. En Windows, el shell predeterminado es cmd.exe (use dir, cd, no ls/pwd) a menos que pase shell: "powershell".
Parámetro | Tipo | Obligatorio | Descripción |
| string | sí | El comando de shell a ejecutar. |
| string | no | Directorio de trabajo. |
| number | no | Tiempo máximo (máx. 600000). Por defecto 120000. |
| string | no |
|
get_info
Devuelve el sistema operativo, la arquitectura, el shell predeterminado (cmd.exe en Windows) y el directorio de trabajo actual — llámelo una vez para que el cliente sepa qué shell usar.
read_file
Lee un archivo de texto (rango de líneas opcional offset/limit). path es absoluto o relativo al cwd.
list_files
Lista un directorio. recursive: true recorre el árbol (limitado a profundidad 4).
edit_file
Reemplazo exacto de cadena — la forma preferida de editar código (sin necesidad de escape de shell).
path, old_text, new_text, replace_all opcional. old_text debe ser único a menos que se establezca replace_all. Devuelve un diff corto.
apply_patch
Aplica un diff unificado mediante git apply (con un fallback --3way). cwd = raíz del repositorio, patch = texto del diff.
write_file
Escribe contenido completo en un archivo (overwrite, o append).
batch_read
Lee varios archivos en una sola llamada. files: array de { path, offset?, limit? }.
batch_edit
Aplica muchas ediciones de texto exacto en uno o más archivos en una sola llamada. Transaccional: cada old_text se valida antes de escribir cualquier archivo, por lo que una coincidencia faltante/ambigua aborta todo el lote (no cambia nada). Cada edición: { path, old_text, new_text, replace_all? }.
Paso directo de git nativo
git_status (-sb), git_diff (opciones staged + paths), git_log (max_count, revision), git_show (revision). Cada uno acepta un cwd opcional.
Todas las rutas de archivo se resuelven en el host que ejecuta el servidor — apuntan a esta máquina, no al sandbox de Claude.
Ejecutar localmente
npm install
npm start
# server listens on http://localhost:3000/mcpVariables de entorno opcionales: PORT, CMD_TIMEOUT_MS, CMD_MAX_BUFFER.
npm start ejecuta start.js, que libera el puerto 3000 (mata cualquier proceso que lo tenga) antes de lanzar el servidor, para que nunca encuentre EADDRINUSE.
Exponerlo a Claude Desktop
Opción A — Cloudflare Worker (URL estable, sin trycloudflare, sin dominio necesario)
Un agente local pequeño mantiene un WebSocket abierto hacia un Cloudflare Worker, que se convierte en su endpoint público estable *.workers.dev para MCP. El Worker solo retransmite a su máquina mientras el agente (autenticado con PROXY_SECRET) esté conectado.
wrangler login(cuenta gratuita de Cloudflare).Desplegar:
wrangler deploy→ anote su URL, p. ej.https://command-line-mcp.<subdomain>.workers.dev.Establezca el secreto (el mismo valor que ya está en su
.dev.varsignorado por git):wrangler secret put PROXY_SECRET(pegue elPROXY_SECRETde.dev.vars).Apunte el agente al Worker desplegado: establezca
WORKER_URLen.dev.varsa esa URL.En su máquina, ejecute ambos:
npm start # the MCP server on :3000 npm run agent # connects to the Worker with the secretEn Claude Desktop: Customize → Connectors → Add custom connector, pegue
https://command-line-mcp.<subdomain>.workers.dev/mcp.
Pruebas locales sin desplegar: wrangler dev --port 8787 (Worker en :8787),
luego npm run agent — el agente lee WORKER_URL de .dev.vars.
Opción B — Túnel cloudflared / ngrok (URL efímera)
Los conectores de Claude Desktop necesitan una URL HTTPS, así que ejecute el servidor localmente y túnel:
cloudflared tunnel --url http://localhost:3000 --protocol http2
# or: ngrok http 3000Copie la URL https://… generada y añada /mcp, p. ej.
https://abc-123.trycloudflare.com/mcp.
Añadir a Claude Desktop
Abra Customize → Connectors → Add custom connector.
Pegue la URL (con
/mcp), p. ej. la URL del Worker de la Opción A.Nómbrelo Command-Line.
Guarde. Claude descubre los metadatos OAuth, registra un cliente y abre un navegador hacia el endpoint de autorización (auto-aprobación), luego redirige de vuelta y está listo. No es necesario introducir manualmente un "OAuth Client ID" — DCR lo maneja.
Pruebas sin Claude
Use el MCP Inspector:
npx @modelcontextprotocol/inspector
# Transport: Streamable HTTP, URL: http://localhost:3000/mcpEndurecimiento (para uso no personal)
OAuth ya está implementado (ver oauthProvider.js). Para cualquier cosa más allá de un
túnel personal debería:
Reemplazar el
authorize()de auto-aprobación con una pantalla de consentimiento real, o al menos un conjunto de URIs de redirección / clientes en lista blanca.Persistir clientes/tokens (actualmente en memoria — se reinician al reiniciar).
Alojar detrás de un dominio HTTPS estable (p. ej. un VPS, Cloudflare Workers, Fly.io).
Considerar una lista blanca de comandos permitidos para limitar el radio de explosión.
Licencia
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Remote MCP server for supportsheep: run AI interviews and manage support content for your blog.
Remote MCP server to read and manage your Atako AI agents, messages, files, and integrations.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA high-speed MCP server that enables AI assistants like Claude to interact with local filesystems, manage Git repositories, and provide interactive experiences through a standardized JSON-based protocol.6MIT
- FlicenseNot gradedqualityDmaintenanceA server implementation for the Model Context Protocol (MCP) that allows Claude AI to execute commands through a command-line interface, enabling direct system interactions from within Claude.-
- AlicenseNot gradedqualityDmaintenanceA local MCP server that proxies file and shell tools (Read, Write, Edit, Bash, etc.) to a remote Linux host over SSH, enabling MCP clients like Claude Code to operate on remote codebases.MIT
- FlicenseNot gradedqualityDmaintenanceMCP server for Claude Code to execute commands on any remote server over SSH. Provides tools for remote execution, file operations, and connection info.-