# 🧠 mi-mcp-server Servidor MCP (Model Context Protocol) personalizado para exponer herramientas propias como funciones accesibles desde LLMs compatibles (Gemini, Claude, etc). Este server corre en Docker y puede ser usado directamente desde stdio usando el SDK de MCP. --- ## 📦 Herramientas expuestas Actualmente expone: - `saludar`: saluda a una persona por su nombre. Podés modificar o agregar más herramientas editando el archivo `tools.js`. --- ## 🛠️ Estructura del proyecto . ├── Dockerfile # Imagen mínima de Node.js con tu server MCP ├── index.js # Punto de entrada, arranca el servidor MCP ├── tools.js # Define tus herramientas y su lógica ├── package.json # Dependencias (usa @modelcontextprotocol/server) └── .gitea/workflows/ └── build.yml # Workflow para construir y subir imagen a tu Gitea registry yaml Copy Edit --- ## 🐳 Construcción local ```bash docker build -t mi-mcp-server . docker run -it --rm mi-mcp-server 🐙 Construcción automática (Gitea Actions) Este repositorio ya incluye un workflow (.gitea/workflows/build.yml) que: Se activa en cada push a main Construye la imagen La sube al registry interno: gitea.interno.com/tu_usuario/mi-mcp-server:latest 🧪 Uso desde un cliente MCP js Copy Edit import { Client } from '@modelcontextprotocol/sdk/client'; import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio'; const client = new Client({ name: 'local', version: '1.0.0' }); await client.connect(new StdioClientTransport({ command: 'docker', args: ['run', '-i', '--rm', 'gitea.interno.com/tu_usuario/mi-mcp-server:latest'] })); const tools = await client.listTools(); // ver herramientas disponibles const result = await client.callTool({ name: 'saludar', arguments: { nombre: 'Darío' } }); console.log(result.content[0].text); // → Hola, Darío! 👋 🔐 Notas Si tu imagen necesita variables de entorno, podés usar -e en el args de Docker. Asegurate de que tu bot o app tenga acceso a Docker en el entorno donde corre. ©️ Licencia MIT — ajustala si vas a distribuir como código cerrado. go Copy Edit ¿Querés que te empaquete esto como zip inicial listo para clonar, con `package.json`, `Dockerfile` y `tools.js`?