2.2 KiB
2.2 KiB
🧠 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
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`?