From f12dea512e8977464fa5bdcabaece289a2398ca0 Mon Sep 17 00:00:00 2001 From: josedario87 Date: Fri, 2 May 2025 21:55:57 -0600 Subject: [PATCH] mcp-prueba init --- .gitea/workflows/build.yml | 23 ++++++++++ Dockerfile | 8 ++++ README.md | 90 ++++++++++++++++++++++++++++++++++++++ index.js | 8 ++++ 4 files changed, 129 insertions(+) create mode 100644 .gitea/workflows/build.yml create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 index.js diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..50cb0e9 --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,23 @@ +name: build-and-push + +on: + push: + branches: [main] + +jobs: + build: + runs-on: docker + steps: + - uses: actions/checkout@v3 + + - name: Login to Gitea registry + uses: docker/login-action@v2 + with: + registry: gitea.interno.com + username: tu_usuario + password: ${{ secrets.GITEA_TOKEN }} + + - name: Build and push image + run: | + docker build -t gitea.interno.com/tu_usuario/mi-mcp-server:latest . + docker push gitea.interno.com/tu_usuario/mi-mcp-server:latest diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..0ffa61c --- /dev/null +++ b/Dockerfile @@ -0,0 +1,8 @@ +FROM node:20-alpine + +WORKDIR /app +COPY . . + +RUN npm install + +ENTRYPOINT ["node", "index.js"] diff --git a/README.md b/README.md new file mode 100644 index 0000000..d18ef9a --- /dev/null +++ b/README.md @@ -0,0 +1,90 @@ +# 🧠 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`? + + + + + + + + diff --git a/index.js b/index.js new file mode 100644 index 0000000..b09f68e --- /dev/null +++ b/index.js @@ -0,0 +1,8 @@ +import { startServer } from '@modelcontextprotocol/server'; +import { getTools } from './tools.js'; + +startServer({ + tools: await getTools(), + name: 'mi-mcp', + version: '1.0.0' +});