Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Autoaprovisionamiento Mediante Chat - GitHub Co...

Autoaprovisionamiento Mediante Chat - GitHub Copilot y MCP @ Nerdearla y Azure Cloud Lab 2025 (con Sergio Valverde)

Slides de la charla que realicé, junto con Sergio Valverde, en Nerdearla Madrid (el 15 de noviembre de 2025) y en la conferencia online Azure Cloud Lab (tan solo dos días después, el 17 de noviembre).

La presentación en Azure Cloud Lab quedó grabada y es lo realmente interesante, más que las slides, las demos que mostramos en vivo: https://www.youtube.com/watch?v=u7aRdGXCE9M

Avatar for Jorge Hidalgo

Jorge Hidalgo

November 17, 2025
Tweet

More Decks by Jorge Hidalgo

Other Decks in Technology

Transcript

  1. Copyright © 2025 Jorge Hidalgo & Sergio Valverde – CC

    BY 4.0 Copyright © 2025 Jorge Hidalgo & Sergio Valverde – CC BY 4.0 Autoaprovisionamiento Mediante Chat IA + Developer Experience + Platform Engineering con GitHub Copilot y MCP Nerdearla 15/11/2025 Imágenes © GitHub: https://octodex.github.com/
  2. Copyright © 2025 Jorge Hidalgo & Sergio Valverde – CC

    BY 4.0 Director Asociado de Ingeniería del Software – Accenture Co-organizador – Málaga JUG & OpenSouthCode Java Champion – Codemotion Ambassador @deors.bsky.social in/deors @deors Jorge Hidalgo Platform Engineer – Lunik Co-organizador – GitHub Community Spain GitHub Star @svg153 in/svg153 @svg153 Sergio Valverde
  3. Copyright © 2025 Jorge Hidalgo & Sergio Valverde – CC

    BY 4.0 Agenda 1. Intro rápida a DevEx y PlatEng 2. Autoaprovisionamiento mediante chat 3. Intro rápida a MCP 4. Cómo configurar un servidor MCP en Visual Studio Code 5. Creando un servidor MCP para integrarlo con nuestra plataforma en GitHub Imagen © GitHub: https://octodex.github.com/
  4. Copyright © 2025 Jorge Hidalgo & Sergio Valverde – CC

    BY 4.0 Developer Experience + Platform Engineering Las Plataformas para el Desarrollo son el espacio compartido entre Dev y Ops – para los product owners, los analistas de negocio, los ingenieros de calidad o seguridad, desarrolladores, SREs, DBAs, y cualquier otra función que participa en el diseño, construcción y explotación de soluciones software. IDP – Plataforma Interna para Desarrolladores Ingeniería de plataformas Pone el foco en las personas frente al PC (developer journeys) Pone el foco en los sistemas con los que interaccionan Imágenes generadas con Gemini
  5. Copyright © 2025 Jorge Hidalgo & Sergio Valverde – CC

    BY 4.0 Developer Experience + Platform Engineering Interfaz de la plataforma Capacidades de la plataforma Descubrir y crear Operar y mejorar Integrar y desplegar Web API Chat CLI
  6. Copyright © 2025 Jorge Hidalgo & Sergio Valverde – CC

    BY 4.0 Developer Experience + Platform Engineering Interfaz de la plataforma Capacidades de la plataforma Marketplace (Auto-servicio) Base de conocimiento (Documentación y ejemplos) Observabilidad / Cuadros de mando Arquetipos de proyectos y entornos / Blueprints de soluciones Provisión de entornos y recursos Automatización de la construcción, prueba y despliegue Monitorización de cargas de trabajo y las SDM Validación de artefactos y cumplimiento de políticas de seguridad Almacenaje de artefactos en repositorios y registros Identificación y autorización de usuarios y servicios Integración de servicios y cargas de trabajo Mensajería (colas, tópicos) Computación (VMs, contenedores, funciones) Datos (relacional, caché, blob)
  7. Copyright © 2025 Jorge Hidalgo & Sergio Valverde – CC

    BY 4.0 Plataformas como Producto Visión y compromiso a largo plazo El equipo de desarrollo es el cliente La experiencia del usuario ante todo Reducir la complejidad y la fricción
  8. Copyright © 2025 Jorge Hidalgo & Sergio Valverde – CC

    BY 4.0 Autoaprovisionamiento mediante chat Navegar por el portal, localizar el servicio en el catálogo, rellenar un formulario, mandar para aprobación Lo mismo, pero mediante una interfaz conversacional con un agente entrenado sin salir de nuestro IDE Imagen generada con Gemini // Captura de pantalla propia Lo que normalmente hacemos Lo que queremos hacer
  9. Copyright © 2025 Jorge Hidalgo & Sergio Valverde – CC

    BY 4.0 Model Context Protocol Created by Anthropic Open-source standard for connecting AI applications to external systems (a.k.a. tools) https://modelcontextprotocol.io/
  10. Copyright © 2025 Jorge Hidalgo & Sergio Valverde – CC

    BY 4.0 Model Context Protocol MCP Client 1 MCP Client 3 MCP Client 2 MCP Server A MCP Server B MCP Server C Tool ⍺ Tool β Tool ɣ Tool δ Integrados en la aplicación host Capacidades conversacionales Traduce requerimientos a comandos del protocolo MCP Un cliente consume servicios de uno o varios servidores Los servidores pueden ser locales (stdio) o estar desplegados remotamente (streaming http) Cada servidor expone funcionalidades de una o múltiples herramientas mediante un mecanismo de descubrimiento para que los clientes sepan “a quién llamar”
  11. Copyright © 2025 Jorge Hidalgo & Sergio Valverde – CC

    BY 4.0 Arquitectura posible para el autoservicio Web API Chat CLI Issue Workflows/ Actions APIs de los servicios Servicios de la plataforma crea comenta APIs edge de la plataforma Servicios de la plataforma llama llama APIs de los servicios coordinado con el uso de etiquetas Servicios de la plataforma APIs de los servicios no recomendado: • puede ser más rápido de poner en marcha • seguramente, más esfuerzo a la larga • gestión de accesos y roles más compleja • cada canal acaba haciendo cosas diferentes elegir con cuidado el camino: • foco máximo en ser consistente • valorar la trazabilidad con IssueOps comenta no recomendado menos recomendado recomendado Incluye la capacidad de cliente MCP Servidor MCP llama Workflow
  12. Copyright © 2025 Jorge Hidalgo & Sergio Valverde – CC

    BY 4.0 Caso particular que vemos ahora Chat APIs edge de la plataforma Servicios de la plataforma llama APIs de los servicios Servidor MCP creado por nosotros: ➢ tenemos el control de la granularidad de las tools ➢ tenemos el control sobre el ”reino” al que tienen acceso GitHub REST APIs (via Octokit) GitHub Internal APIs (gestionadas por GitHub) GitHub Repos GitHub Issues Visual Studio Code + GitHub Copilot Chat (incluye la capacidad de cliente MCP)
  13. Copyright © 2025 Jorge Hidalgo & Sergio Valverde – CC

    BY 4.0 Configurar servidores MCP en VS Code Se sigue el mismo enfoque que el original propuesto por Anthropic – el fichero mcp.json Se puede configurar a nivel de IDE o a nivel de proyecto/repositorio Queda integrado en GitHub Copilot Chat que ejerce el rol de cliente MCP A nivel de IDE A nivel de repositorio /.vscode/mcp.json o editamos directamente la configuración settings.json
  14. Copyright © 2025 Jorge Hidalgo & Sergio Valverde – CC

    BY 4.0 Show me the code! https://github.com/svg153/copilot-mcp
  15. Copyright © 2025 Jorge Hidalgo & Sergio Valverde – CC

    BY 4.0 Show me the code! https://github.com/deors/workshop-mcp-servers
  16. Copyright © 2025 Jorge Hidalgo & Sergio Valverde – CC

    BY 4.0 Creando un servidor MCP propio – stdio import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js’; import { z } from 'zod'; const server = new McpServer({ name: 'Hello World MCP Server (stdio version)’, description: 'A simple MCP server that provides greeting functionalities through stdio.’, version: '1.0.0’, transport: 'stdio' }); server.tool( 'greetPerson’, 'Greets a person by name.’, { name: z.string().describe('The name of the person to greet.’), }, async ({ name }) => { server.connect(new StdioServerTransport()).then(() => { console.log('MCP server is now running and listening for requests.’); }).catch((err) => { console.error('Error starting MCP server:', err); });
  17. Copyright © 2025 Jorge Hidalgo & Sergio Valverde – CC

    BY 4.0 Creando un servidor MCP propio – Streamable HTTP import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js'; import { InMemoryEventStore } from "@modelcontextprotocol/sdk/examples/shared/inMemoryEventStore.js"; import { isInitializeRequest, CallToolResult } from "@modelcontextprotocol/sdk/types.js"; import { z } from 'zod'; import express from 'express'; const server = new McpServer({ name: 'Hello World MCP Server (streamable version)’, description: 'A simple MCP server that provides greeting functionalities through streamable HTTP.’, version: '1.0.0’, transport: 'streamable-http' }); Luego la cosa se complica un poco – TL;DR • Servidor Express que gestiona las rutas con POST y DELETE (+ GET para retrocompatibilidad con SSE). • Hay que gestionar las sesiones de los clientes que nos llaman (cabecera “mcp-session-id). • Se define un transporte por sesión (o se reutiliza) y se le delega la llamada del cliente: transport = new StreamableHTTPServerTransport({ ... await transport.handleRequest(req, res, req.body);
  18. Copyright © 2025 Jorge Hidalgo & Sergio Valverde – CC

    BY 4.0 No reinventemos la rueda Ya existen frameworks que implementan el protocolo y nos aceleran muchísimo el trabajo: FastMCP: https://github.com/jlowin/fastmcp FastMCP‘clone’: https://github.com/punkpeye/fastmcp Spring AI: https://docs.spring.io/spring-ai/reference/api/mcp/mcp-server-boot-starter-docs.html Quarkus: https://quarkus.io/extensions/io.quarkiverse.mcp/quarkus-mcp-server-sse/ MCP-Go: https://mcp-go.dev/getting-started/
  19. Copyright © 2025 Jorge Hidalgo & Sergio Valverde – CC

    BY 4.0 GitHub Community Spain Acceso a las grabaciones y próximos eventos https://ghspain.github.io ¡No dejéis de seguirnos!
  20. Copyright © 2025 Jorge Hidalgo & Sergio Valverde – CC

    BY 4.0 GitHub Community Spain – también en LinkedIn Acceso a las grabaciones y próximos eventos https://www.linkedin.com/company/ghspain/ ¡No dejéis de seguirnos!