Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MCP Station

Administrador local de servidores MCP con delegacion a OpenCode. Conecta tu agente XiaoZhi a herramientas reales del sistema operativo potenciadas por OpenCode.

Que hace

XiaoZhi (voz)
    │
    ▼
┌─────────────────────┐
│     MCP Station      │  ← esta app
│  ┌───────────────┐   │
│  │ OpenCode Serve │   │  ← opencode como cerebro
│  └───────────────┘   │
│  ┌───────────────┐   │
│  │  Tool Registry │   │  ← tools reales (filesystem, comandos, apps)
│  └───────────────┘   │
└─────────────────────┘
  • Delega tareas a OpenCode — cuando XiaoZhi pide algo complejo, MCP Station se lo pasa a OpenCode (opencode serve) que tiene acceso a modelos potentes y sus propias herramientas
  • Expone tools realesread_file, create_file, list_directory, open_application, execute_command (con whitelist)
  • Conecta con XiaoZhi via Custom Services MCP endpoint (WebSocket wss://api.xiaozhi.me/mcp/?token=...)
  • Interfaz web para administrar modulos, servidores MCP, tools y monitorear conexiones

Requisitos

  • Go 1.24+ — backend
  • Node.js 20+ — frontend
  • OpenCode CLI instalado (curl -fsSL https://opencode.ai/install | bash)

Inicializacion

# 1. Instalar dependencias
cd apps/web && npm install && cd ../..
cd apps/server && go mod tidy && cd ../..

# 2. Iniciar backend (puerto 8080)
cd apps/server && go run .

# 3. Iniciar frontend (puerto 5173, proxy al :8080)
cd apps/web && npm run dev

El backend arranca automaticamente opencode serve en el puerto 4096. Si ya tienes uno corriendo, lo detecta y se conecta a el.

Abre http://localhost:5173 para ver la interfaz.

Arquitectura

apps/
├── server/          # Backend Go
│   ├── main.go      # Entry point, arranca OpenCode serve
│   └── internal/
│       ├── api/     # HTTP API (REST + WebSocket MCP en /ws)
│       ├── mcp/     # Runtime (inbound WS) + Client (outbound a XiaoZhi)
│       ├── opencode/# HTTP client contra opencode serve, manager de proceso
│       ├── tool/    # Registry de tools con implementaciones reales
│       ├── storage/ # SQLite (integraciones, modulos, servidores, logs)
│       └── model/   # Tipos compartidos
└── web/             # Frontend React + TypeScript + Vite + Tailwind
    └── src/
        ├── pages/       # Integracion MCP, Modulos, Servidores, Monitor, Logs
        ├── components/  # Cards, ToolTestPanel, UI components
        └── store/       # Zustand stores

Paneles

Ruta Funcion
/ Dashboard — estado general, modulos activos, conexion
/mcp Integracion MCP — conectar/desconectar endpoint XiaoZhi, probar tools
/modulos Activar/desactivar modulos (OpenCode Adapter, File System, etc.)
/servidores Registrar servidores MCP externos adicionales
/opencode Sesiones OpenCode — tracking, limpieza, estado
/logs Bitacora de eventos, tool calls, errores
/monitor Uso de recursos del servidor

Flujo con XiaoZhi

  1. Ve a la consola de XiaoZhi → Configure RoleMCP SettingsCustom Services
  2. Copia el endpoint wss://api.xiaozhi.me/mcp/?token=...
  3. Pegalo en MCP Station (/mcp) y haz clic en Conectar
  4. MCP Station se conecta al relay de XiaoZhi y expone sus tools
  5. Cuando le hablas a XiaoZhi, el agente puede usar opencode_ask, read_file, create_file, etc.

Tools disponibles

Tool Funcion
read_file Lee archivos del sistema
create_file Crea archivos con contenido
list_directory Lista directorios
open_application Abre aplicaciones (xdg-open / open / start)
execute_command Ejecuta comandos con whitelist
opencode_ask Envia prompt a OpenCode y espera respuesta
opencode_run Despacha tarea async a OpenCode

Configuracion de OpenCode

El backend usa opencode serve internamente. Para configurar modelos, API keys y MCP servers de OpenCode, usa tu opencode.jsonc habitual:

{
  "mcp": {
    "mcp-station": {
      "type": "remote",
      "url": "http://localhost:8081/mcp"
    }
  }
}

Opcional: setea OPENCODE_SERVER_PASSWORD si quieres proteger el acceso:

OPENCODE_SERVER_PASSWORD=tu-password go run .

Variables de entorno

Variable Default Descripcion
OPENCODE_SERVER_USERNAME opencode Usuario para basic auth
OPENCODE_SERVER_PASSWORD (ninguna) Password para basic auth

Stack

  • Backend: Go, SQLite, gorilla/websocket, JSON-RPC 2.0
  • Frontend: React, TypeScript, Tailwind CSS, shadcn/ui, Zustand, Vite
  • Protocolo: MCP sobre WebSocket (JSON-RPC 2.0)

About

Local control center for MCP servers. Easily install, configure, and manage AI tools for XiaoZhi and other LLM clients.

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages