Instalar un servidor MCP significa registrar un proceso de servidor o un endpoint remoto con un host MCP para que el host pueda descubrir sus herramientas, recursos y prompts. El trabajo se divide en cuatro etapas: elegir el transporte, instalar los requisitos previos del entorno de ejecución, escribir una entrada de configuración del cliente y verificar el descubrimiento con una llamada de prueba controlada. Esta guía recorre cada etapa con configuración ejecutable y comandos de diagnóstico, y luego cubre los modos de fallo que más a menudo bloquean una primera conexión.
Qué significa realmente instalar un servidor MCP
Un servidor MCP no se instala en su aplicación como una biblioteca. Es un proceso separado o un servicio remoto que habla JSON-RPC con un host MCP, como un asistente de escritorio, una extensión de IDE o un agente de codificación. Por lo tanto, "instalar" significa dos cosas: hacer que el servidor sea ejecutable en su máquina (o accesible a través de la red) y agregar una entrada de configuración que le indique al host cómo iniciarlo o conectarse a él.
Esta distinción es importante porque la mayoría de los fallos en la primera ejecución son fallos de configuración, no de código. Un servidor que funciona perfectamente desde una terminal aún puede fallar dentro de un host si el directorio de trabajo, las variables de entorno o la ruta del comando del host difieren de su shell. El flujo de trabajo a continuación trata la configuración del host como el artefacto principal y la verifica de extremo a extremo.
- Los servidores locales usan el transporte stdio y el host los inicia como un proceso hijo.
- Los servidores remotos usan un transporte basado en HTTP y se accede a ellos por URL, generalmente con encabezados de autenticación.
- El host es responsable del descubrimiento: enumera herramientas, recursos y prompts después de establecer la conexión.
Requisitos previos y supuestos
Antes de escribir cualquier configuración, confirme el entorno de ejecución que espera el paquete del servidor. Los servidores basados en Node generalmente necesitan una versión LTS actual de Node.js y se inician con npx. Los servidores basados en Python generalmente necesitan un entorno Python 3 y se inician con uv o python. Los servidores remotos solo necesitan acceso a la red y, cuando sea necesario, un token.
También debe saber dónde almacena su host la configuración de MCP. Los clientes de escritorio suelen usar un archivo JSON en un directorio de soporte de la aplicación, mientras que las integraciones de IDE a menudo exponen un panel de configuración. Consulte la documentación de su host para conocer la ruta exacta; la estructura de la entrada es lo que esta guía estandariza.
- Node.js LTS y npm/npx para servidores JavaScript.
- Python 3.10 o superior más uv para servidores Python.
- Un host que admita MCP y una ubicación conocida del archivo de configuración.
- Para servidores remotos: una URL y cualquier token de portador o registro de cliente OAuth requerido.
Elección entre transportes stdio y HTTP
El transporte determina casi todo sobre cómo instala y depura el servidor. Los servidores stdio son simples de distribuir porque el host gestiona el ciclo de vida del proceso, pero están vinculados a una máquina y a una sesión de host. Los servidores HTTP se pueden compartir entre usuarios y hosts, pero introducen autenticación, gestión de sesiones y modos de fallo de red.
Una regla útil: use stdio para acceso a archivos locales, bases de datos locales y herramientas de desarrollo que no deberían salir de la máquina. Use HTTP cuando el servidor esté frente a una API compartida, requiera credenciales centralizadas o deba atender a múltiples clientes. Si aún está decidiendo qué endpoint remoto o proveedor se adapta a su stack, el RPC Assistant puede preseleccionar opciones concretas mientras esta página se centra en la mecánica de instalación.
- stdio: el host inicia el proceso; los registros deben ir a stderr, nunca a stdout.
- HTTP: el servidor se ejecuta de forma independiente; el host se conecta por URL y gestiona las sesiones.
- Mezclar ambos en una configuración está bien, pero depúrelos por separado.
Instalación y registro de un servidor stdio
La siguiente configuración registra un servidor de sistema de archivos sobre stdio. Reemplace la ruta del espacio de trabajo con un directorio que realmente desee exponer al servidor. El comando y los argumentos se pasan como un arreglo para que el host no dependa del análisis del shell.
Después de guardar el archivo, reinicie el host por completo. Muchos hosts leen la configuración de MCP solo al inicio, por lo que recargar la ventana de chat no es suficiente.
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/absolute/path/to/workspace"
],
"env": {
"LOG_LEVEL": "info"
}
}
}
}Registro de un servidor HTTP remoto
Los servidores remotos se registran por URL en lugar de por comando. El siguiente ejemplo utiliza un endpoint de marcador de posición y un token de portador leído del entorno. Nunca confirme tokens reales en un archivo de configuración compartido; prefiera secretos gestionados por el host o interpolación de variables de entorno cuando el host lo admita.
Algunos hosts requieren un campo de transporte explícito, mientras que otros infieren HTTP por la presencia de una clave url. Verifique el esquema de su host antes de agregar campos que no reconoce, porque los analizadores estrictos pueden rechazar toda la entrada.
{
"mcpServers": {
"remote-api": {
"url": "https://mcp.example.com/mcp",
"headers": {
"Authorization": "Bearer ${MCP_API_TOKEN}"
}
}
}
}Verificación del descubrimiento de herramientas desde la línea de comandos
Antes de culpar al host, verifique el servidor de forma independiente. Para un servidor HTTP remoto, envíe una solicitud de inicialización y confirme una respuesta JSON-RPC. Esto aísla los problemas de red y autenticación de los problemas de configuración del host.
Una respuesta exitosa contiene una versión de protocolo, capacidades del servidor e información del servidor. Si recibe una página de error HTML o un 401, el problema está en la capa HTTP y ninguna configuración del host lo solucionará.
curl -sS -X POST "$MCP_URL" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer $MCP_API_TOKEN" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": {},
"clientInfo": { "name": "install-check", "version": "0.1.0" }
}
}'Verificación de un servidor stdio con un arnés de Python
Para los servidores stdio, el host es el cliente, por lo que una verificación independiente requiere un pequeño arnés que inicie el proceso e intercambie mensajes JSON-RPC por stdin y stdout. El siguiente script realiza un handshake de inicialización y luego enumera las herramientas. Imprime las respuestas sin procesar para que pueda ver exactamente qué devuelve el servidor.
Ejecútelo con el mismo comando y argumentos de su configuración del host. Si el arnés tiene éxito pero el host falla, la diferencia casi siempre es el entorno, el directorio de trabajo o PATH.
import json, subprocess, sys
cmd = ["npx", "-y", "@modelcontextprotocol/server-filesystem", "/absolute/path/to/workspace"]
p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
def send(msg):
p.stdin.write(json.dumps(msg) + "\n")
p.stdin.flush()
send({"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"harness","version":"0.1.0"}}})
print("init:", p.stdout.readline())
send({"jsonrpc":"2.0","method":"notifications/initialized"})
send({"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}})
print("tools:", p.stdout.readline())
p.terminate()
print("stderr:", p.stderr.read()[:500])Registro de los resultados de verificación
Mantenga una tabla de resultados breve para cada servidor que instale, de modo que los fallos posteriores se puedan comparar con una línea base de funcionamiento conocido. La siguiente tabla es una plantilla; complétela con sus propios valores observados en lugar de valores supuestos.
| Servidor | Transporte | Inicio correcto | Herramientas listadas | Latencia (ms) | Notas |
|---|---|---|---|---|---|
| filesystem | stdio | ||||
| remote-api | http | ||||
| database | stdio |
Mida la latencia cronometrando el viaje de ida y vuelta de inicialización varias veces y registrando la mediana. No publique ni confíe en números que no haya medido en su propia máquina, porque el inicio del host, las descargas de paquetes y las condiciones de la red dominan los tiempos de la primera ejecución.
Solución de fallos comunes de instalación
La mayoría de los fallos se dividen en un pequeño número de categorías. Revíselos en orden, porque un síntoma posterior a menudo enmascara una causa anterior.
Si el servidor se inicia pero el host no muestra herramientas, confirme que el host completó la notificación initialized antes de listar las herramientas. Si el servidor sale inmediatamente, ejecute el comando exacto de la configuración en una terminal y lea stderr. Si un servidor remoto devuelve 401 o 403, verifique el alcance del token y el formato del encabezado antes de cambiar cualquier otra cosa.
- Comando no encontrado: el PATH del host difiere del de su shell; use una ruta absoluta al entorno de ejecución.
- JSON-RPC corrupto: un servidor stdio escribió registros en stdout; mueva todos los registros a stderr.
- Lista de herramientas vacía: handshake de inicialización incompleto o el servidor se bloqueó después de conectarse.
- 401/403 en HTTP: token caducado, nombre de encabezado incorrecto o registro OAuth faltante.
- Funciona localmente, falla en el host: directorio de trabajo diferente o variables de entorno faltantes.
Limitaciones y compensaciones operativas
Instalar un servidor es la parte fácil; operarlo es donde aparecen las compensaciones. Los servidores stdio heredan el ciclo de vida del host, por lo que un bloqueo deja la herramienta fuera de línea hasta que el host la reinicie. Los servidores HTTP sobreviven a los reinicios del host pero requieren que usted gestione la implementación, TLS, autenticación y el estado de la sesión.
También hay una dimensión de confianza. Cada servidor MCP que registre puede exponer datos y ejecutar acciones en su nombre. Prefiera versiones de paquetes fijas en lugar de etiquetas flotantes, revise las herramientas que anuncia un servidor antes de otorgarle acceso a directorios sensibles y limite los tokens a los permisos mínimos que necesita el servidor. Para la infraestructura que debe permanecer disponible entre equipos, un nodo dedicado o un endpoint gestionado elimina el modo de fallo de un solo portátil.
Próximos pasos para una configuración repetible
Una vez verificado un solo servidor, estandarice el patrón: mantenga la configuración en el control de versiones con los secretos excluidos, documente el comando y los argumentos exactos, y registre una tabla de resultados de referencia para cada entorno. Cuando agregue servidores remotos, aplique la misma verificación de inicialización y listado antes de integrarlos en flujos de trabajo de agentes.
Si sus servidores MCP llaman a datos de blockchain o endpoints RPC, trate la fiabilidad del endpoint como parte de la instalación. Revise las redes disponibles, compare precios y límites de RPC, y considere un nodo dedicado cuando los endpoints compartidos introduzcan latencia variable. El RPC Assistant puede ayudarle a elegir un endpoint concreto una vez que su transporte y configuración estén resueltos.
- Fije las versiones de los paquetes del servidor y regístrelas junto con la configuración.
- Almacene los tokens fuera del archivo de configuración y rótelos según un calendario.
- Vuelva a ejecutar el arnés de verificación después de cada actualización del host o del servidor.