8 puntos por GN⁺ 2025-03-27 | 4 comentarios | Compartir por WhatsApp
  • MCP (Model Context Protocol) es una forma estandarizada de proporcionar herramientas y contexto a los LLM
  • Como un puerto USB-C, funciona como una interfaz estándar que conecta modelos de IA con diversas fuentes de datos o herramientas
  • OpenAI Agents SDK admite MCP, por lo que puede integrarse con varios servidores MCP

Servidores MCP

  • Actualmente, la especificación MCP define dos tipos de servidores según el mecanismo de transporte utilizado:
    1. Los servidores stdio se ejecutan como subprocesos de la aplicación y pueden considerarse como ejecuciones "locales".
    2. Los servidores HTTP over SSE se ejecutan de forma remota y se conectan mediante una URL.
  • Puedes conectarte a estos servidores usando las clases MCPServerStdio y MCPServerSse.
  • Por ejemplo, así se usa el servidor oficial de sistema de archivos de MCP:
    async with MCPServerStdio(  
        params={  
            "command": "npx",  
            "args": ["-y", "@modelcontextprotocol/server-filesystem", samples_dir],  
        }  
    ) as server:  
        tools = await server.list_tools()  
    

Caché

  • Llamar a list_tools() del servidor MCP cada vez que se ejecuta un agente puede generar latencia, especialmente si el servidor es remoto.
  • Para almacenar automáticamente en caché la lista de herramientas, puedes pasar cache_tools_list=True a MCPServerStdio y MCPServerSse. Esto solo debe hacerse cuando estés seguro de que la lista de herramientas no cambiará.
  • Para invalidar la caché, puedes llamar a invalidate_tools_cache() en el servidor.

4 comentarios

 
GN⁺ 2025-03-27
Opiniones en Hacker News
  • Hoy MCP agregó Streamable HTTP. Es un gran avance porque ya no hace falta mantener una conexión permanente con servidores HTTP remotos

    • Pero, al ver la especificación, introducir un paradigma estilo LSP en servidores HTTP remotos agrega mucha complejidad
    • Tradicionalmente, esto se hacía enviando { "location": "New York" } por HTTP POST a /get_weather
    • Se propuso reducir la complejidad y volver a servidores HTTP tradicionales. La sesión se negocia con el encabezado Authorization y se usan endpoints tradicionales
    • Será mucho más fácil construir servidores y no hará falta que los frameworks web se actualicen para ajustarse a la especificación
  • Existe la analogía de pensar en MCP como el puerto USB-C de las aplicaciones de IA

    • Como ingeniero de software, esa analogía no ayuda mucho
  • Me preguntaba si OpenAI iba a respaldarlo oficialmente, pero ahora ya tengo la respuesta

    • MCP se ha convertido en el estándar de la industria para conectar LLM con herramientas externas
  • Esperaba que soportara OpenAPI. He creado algunos servidores MCP, pero se siente como una API menos flexible y peor documentada

    • Cuesta encontrar en qué supera MCP a OpenAPI. Se reduce un poco el código, pero las opciones se reducen muchísimo
    • Con el tiempo, Swagger terminará integrado
  • Cuesta entender cuál es el valor de MCP. En medio del caos de la tecnología de IA moderna, se siente como otra distracción más

    • MCP es un protocolo abierto que estandariza cómo las aplicaciones le entregan contexto a un LLM
    • Me pregunto qué es exactamente lo que hay que estandarizar. Estamos usando transformadores de texto a texto que operan sobre cadenas tokenizadas arbitrarias
    • Cosas como las llamadas de herramientas/funciones también son heurísticas ingeniosas construidas sobre texto simple
  • Construí una arquitectura en la que los agentes de IA pueden usar "herramientas" localmente. Funciona con todo tipo de LLM y servidores de LLM

    • Funciona como middleware y opera en streaming entre el servidor de LLM y el cliente de chat
    • Es un proyecto open source, pero el repositorio no se actualiza porque nadie ha mostrado interés en el código
  • Faltan videos que muestren cómo se usa MCP en la práctica. Faltan casos de uso reales para programadores

  • Existe la analogía de pensar en MCP como el puerto USB-C de las aplicaciones de IA

    • Como he escuchado muchas historias sobre el dolor que implica implementar USB, sería mejor buscar otra analogía
  • Parece que esto apunta a la versión antigua de MCP, HTTP+SSE, y no a la nueva versión Streaming HTTP

    • También incluye soporte para OAuth 2.1, batching de JSON-RPC y más
  • Si quieres probar MCP de forma sencilla, hice <a href="https://skeet.build/mcp" rel="nofollow">skeet.build/mcp</a>

    • Lo hice por la complejidad de la configuración de MCP, la falta de soporte y la dificultad de construirlo por cuenta propia
    • Se usa principalmente para flujos de trabajo como estos
      • Escribir un resumen al iniciar un PR
      • Publicar un resumen o comentario en Slack, Linear/Jira
      • Traer un issue de Sentry y corregirlo
      • Crear un issue en Linear al encontrar un bug
      • Traer un issue de Linear y hacer una primera pasada
      • Traer documentos de Notion y PRD, y generar referencias de API basadas en la base de código
      • Esquemas de Postgres o MySQL para desarrollo rápido de modelos
    • Está enfocado en facilidad de uso, flujos de trabajo prácticos para desarrolladores y servidores MCP de alta calidad
 
samchon 2025-03-27

Yo también pienso que OpenAPI function calling no será mejor. Volver a hacer esto con el protocolo MCP también da trabajo.

 
mangoblue 2025-03-28

¿No será la diferencia entre push y poll? En lugar de hacer function calling para cada modelo o servicio, me parece que para terceros es más conveniente alojar la especificación de MCP y que el agente la consulte mediante poll.