AIUnlimited
🌳

Fundamentos de IA

🌱
AI Seeds

Empieza desde cero

🌿
AI Sprouts

Construye bases

🌳
AI Branches

Aplica en la práctica

🏕️
AI Canopy

Profundiza

🌲
AI Forest

Domina la IA

🔨

Maestría en IA

✏️
AI Sketch

Empieza desde cero

🪨
AI Chisel

Construye bases

⚒️
AI Craft

Aplica en la práctica

💎
AI Polish

Profundiza

🏆
AI Masterpiece

Domina la IA

📘

Práctica de IA

📖
Entendiendo modelos open-source

Fundamentos y recursos para modelos open-source

🎯
Del problema a la tarea del modelo

Convertir problemas de negocio en tareas de modelos

⚡
Ejecutando tu primer modelo

Mira tus primeros resultados en 30 minutos

🔧
Fine-tuning y evaluación

Ajusta modelos y evalúa el rendimiento

🚀
Sistemas de aplicación

Construye aplicaciones IA del mundo real

🎨
IA generativa

Explora modelos AIGC open-source

🤖
Agentes

Aprende frameworks Agent y herramientas MCP

📐
Fundamentos complementarios

Fundamentos LLM y evaluación

🎓

Claude Academia

🤖
Claude 101

Learn AI basics with Claude

💻
Claude Code 101

Code with Claude as your pair programmer

🤝
Introduction to Claude Cowork

Collaborate with Claude on complex projects

⚙️
Claude Platform 101

Build apps with the Claude API

Laboratorio

7 experimentos cargados
🧬Sandbox de Red Neuronal🤖¿IA o Humano?🥋Dojo de Prompt Engineering🏁Carrera de Algoritmos🧠Trivia de IA🏗️Lienzo de diseño de sistemas
🎯Entrevista simuladaEntrar al Laboratorio→
🚀

Desarrollo profesional

🚀
Plataforma de Entrevistas

Comienza tu camino

🌟
Dominio Conductual

Domina las habilidades blandas

💻
Entrevistas Técnicas

Supera la ronda de código

🤖
Entrevistas de IA y ML

Dominio en entrevistas de ML

🏆
Oferta y Más Allá

Consigue la mejor oferta

Empezar
AIUnlimited

Licencia MIT

沪ICP备18025655号-11

Aprender

  • Fundamentos de IA
  • Práctica de IA
  • Claude Academia
  • Laboratorio
  • Desarrollo profesional

Comunidad

  • Acerca de
  • Preguntas Frecuentes

Soporte

  • Términos de Servicio
  • Política de Privacidad
  • Contacto
Académicos de IA e Ingeniería›🤖 Agentes›Lecciones›MCP: Connecting Models to Tools
🔌
Agentes • Principiante⏱️ 25 min de lectura

MCP: Connecting Models to Tools

get_weather es el identificador que se muestra después de que MS-Agent combina el nombre de conexión del servidor y el nombre de la herramienta. area y target_date no son parámetros de llamada predefinidos, sino parámetros estructurados generados por Qwen3-4B basados en "Hangzhou mañana". Los resultados de registro relevantes se muestran a continuación.

ilustración

Procesamiento del resultado de la herramienta y respuesta final

Después de recibir los parámetros, el MCP del clima analiza "Hangzhou" como "Hangzhou, Zhejiang, China", convierte tomorrow en 7 de septiembre de 2026 según la zona horaria local y devuelve:

{
  "requested_area": "Hangzhou",
  "resolved_area": "Hangzhou, Zhejiang, China",
  "date": "2026-09-07",
  "timezone": "Asia/Shanghai",
  "weather_code": 51,
  "weather": "llovizna ligera",
  "temperature_max_c": 29.0,
  "temperature_min_c": 21.6,
  "precipitation_probability_max_percent": 31,
  "wind_speed_max_kmh": 13.0,
  "data_source": "Open-Meteo"
}

Qwen3-4B genera una respuesta en lenguaje natural basada en estos resultados, enumerando la región realmente coincidente, la fecha, las condiciones meteorológicas, las temperaturas máxima y mínima, la probabilidad de precipitación y la velocidad máxima del viento. Con esto se completa la cadena de llamadas "comprender la pregunta — seleccionar la herramienta — generar parámetros — ejecutar la herramienta — procesar resultados". Los resultados combinados del modelo grande se muestran a continuación:

ilustración

Llamada al servicio fetch en la plaza MCP

Después de la configuración, conéctese primero directamente al servicio y verifique la lista de herramientas. El siguiente ejemplo de prueba utiliza el sitio web https://example.com.

async def direct_fetch_check():
    async with streamable_http_client(MCP_SERVER_URL) as streams:
        read_stream, write_stream, _ = streams
        async with ClientSession(read_stream, write_stream) as session:
            await session.initialize()
            tools = await session.list_tools()
            print("Herramientas devueltas por el servidor:", [tool.name for tool in tools.tools])
            result = await session.call_tool(
                "fetch",
                arguments={
                    "url": "https://example.com",
                    "max_length": 1000,
                    "start_index": 0,
                    "raw": False,
                },
            )
            if result.isError:
                raise RuntimeError(str(result.content)
            for block in result.content:
                if getattr(block, "type", None) == "text":
                    print(block.text)

await direct_fetch_check()
Lección 2 de 70% completado
←What is an Agent?

Discusión

Iniciar sesión unirse a la discusión

En la ejecución real, el servidor expone la herramienta fetch y devuelve fragmentos de contenido y enlaces de la página web objetivo. Esto confirma que el servicio de alojamiento de ModelScope, la conexión HTTP Streamable y la herramienta de web scraping funcionan correctamente. La conexión directa al servicio fetch alojado por ModelScope, el descubrimiento de herramientas y el contenido web devuelto se muestran a continuación.

ilustración

Después de la llamada directa exitosa, reutilice Qwen3-4B configurado previamente para que el modelo seleccione la herramienta de forma autónoma:

fetch_agent = LLMAgent(
    config=agent_config,
    tag="fetch-demo",
    mcp_config=mcp_config,
)

await fetch_agent.run(
    "Usa la herramienta de extracción web para leer https://example.com."
    "Al llamar, pon max_length en 1000 y devuelve el propósito principal del cuerpo de la página y el primer enlace."
    "Usa solo el contenido devuelto por esta llamada; si falla, indícalo claramente, no rellenes."
)

Los registros muestran que MS-Agent se conectó exitosamente al servidor denominado fetch, Qwen3-4B seleccionó fetch---fetch y generó los siguientes parámetros:

{
  "url": "https://example.com",
  "max_length": 1000
}

Después de que la herramienta devuelva el contenido web, el modelo explica que este dominio se utiliza para ejemplos de documentación y proporciona el primer enlace devuelto. Al verificar estos resultados, se deben comprobar por separado los parámetros generados por el modelo, el resultado original de la herramienta y la respuesta final. Los resultados de la ejecución de Qwen3-4B para la generación de parámetros de llamada de la herramienta fetch, el contenido devuelto y la respuesta final se muestran a continuación:

ilustración

La diferencia entre usar directamente los servicios de aplicación de la plaza MCP de ModelScope y crear un MCP meteorológico personalizado radica en que la implementación y el entorno de ejecución del servidor son gestionados por la capacidad de alojamiento de ModelScope, mientras que el Notebook solo necesita guardar la configuración de conexión e iniciar las llamadas. Independientemente de si se utilizan servicios existentes o personalizados, el orden de verificación es el mismo: verificar el estado del servicio, descubrir herramientas, probar directamente y luego dejar que el modelo llame de forma autónoma.

Gestión de permisos MCP

La gestión de permisos MCP no debe limitarse a "¿se puede conectar este servidor o no?", sino que debe aclarar tres preguntas: a qué recursos puede acceder el usuario actual, qué herramientas puede invocar el modelo y qué impacto producirá cada llamada en los sistemas externos. Por lo tanto, el control de acceso debe implementarse capa por capa desde el Host hasta el Servidor MCP y luego hasta los sistemas backend, siguiendo siempre el principio de mínimo privilegio. Incluso las herramientas de solo lectura no deben considerarse sin riesgo por defecto, ya que pueden leer información sensible como información de clientes, código fuente y tokens de acceso. Por lo tanto, se debe limitar el alcance de directorios, tablas, campos y resultados accesibles.

Para operaciones que modifican el estado externo, el control de acceso debe reforzarse progresivamente según el riesgo. Las operaciones de escritura como crear archivos, modificar registros, enviar correos y agregar eventos deben mostrar al usuario el objeto objetivo y los parámetros clave antes de la ejecución, y generar borradores o mostrar diferencias para confirmación. También se deben evitar las escrituras duplicadas causadas por tiempos de espera de red y reintentos automáticos mediante claves de idempotencia, restricciones únicas o verificaciones de estado. Para operaciones de alto riesgo como eliminar datos, transferencias, envíos masivos, publicaciones públicas, modificación de permisos, ejecución de comandos y cambios en producción, la ejecución automática debe restringirse por defecto, con confirmación manual explícita, aprobación secundaria y auditoría completa.

Además de los permisos de las herramientas, las credenciales y cuentas también deben controlarse por separado. La información sensible como claves API y tokens de acceso no debe aparecer en Prompts, historiales de chat, repositorios de código o registros ordinarios. Cuando el Servidor MCP accede a sistemas backend, debe usar cuentas y credenciales dedicadas con alcance limitado, en lugar de heredar permisos excesivos directamente. Para sistemas sensibles, las capacidades de consulta y modificación pueden separarse en diferentes servidores, cuentas o incluso zonas de red diferentes.

Riesgos de seguridad MCP

MCP permite al modelo no solo generar contenido, sino también leer archivos, consultar bases de datos, llamar servicios de red e incluso modificar sistemas externos. Por lo tanto, los riesgos de seguridad que introduce son más complejos que los de un modelo de chat normal. Las fuentes de riesgo incluyen no solo las entradas del usuario, sino también páginas web, documentos, registros de bases de datos, resultados devueltos por herramientas, código del servidor y dependencias de terceros. El más típico es la inyección de Prompt: el contenido externo puede ocultar instrucciones maliciosas que inciten al modelo a seguir llamando herramientas de archivos, red o mensajería, formando una cadena de operaciones inter-sistemas peligrosa. Para esto, no se debe depender solo de la capacidad del modelo para "identificar prompts maliciosos", sino tratar todo el contenido externo como datos no fiables.

Otro riesgo principal es el acceso no autorizado y la fuga de información sensible. Los parámetros generados por el modelo no deben considerarse como base de autorización. El Host puede controlar qué herramientas exponer al modelo, pero el Servidor debe verificar la pertenencia de recursos y los derechos de acceso en cada llamada según la identidad real del usuario, no solo una vez al establecer la conexión. También se debe controlar el flujo de datos entre sistemas, transmitiendo al Servidor solo los campos necesarios para la tarea actual, ofuscando información sensible como claves, números de identificación y números de teléfono, usando HTTPS para conexiones remotas y evitando almacenar credenciales completas en registros.

MCP también presenta riesgos de herramientas maliciosas y cadena de suministro. El entorno de producción no debe centrarse solo en llamadas individuales, sino establecer un mecanismo de seguridad multicapa completo. Antes de conectarse a un Servidor, verifique la fuente, el código, las dependencias y los permisos requeridos; al conectarse, use cuentas restringidas, credenciales limitadas y red controlada; después del descubrimiento de herramientas, clasifíquelos en solo lectura, escritura y alto riesgo; antes de la ejecución, valide parámetros y exija confirmación manual para operaciones sensibles; durante la ejecución, limite tiempo de espera, concurrencia, volumen de retorno y alcance de red; después de la ejecución, verifique el contenido devuelto y mantenga registros de auditoría necesarios.

Escenarios adecuados para MCP

MCP es más adecuado para escenarios donde hay muchas herramientas y fuentes de datos externas, donde se desea que estas capacidades puedan reutilizarse por diferentes modelos o Agents, y donde se desea que el modelo decida dinámicamente qué herramientas llamar según la tarea actual. Las aplicaciones comunes incluyen acceso a archivos, consultas de bases de datos y recuperación de información.

MCP también es adecuado para conectar correos electrónicos, calendarios, almacenamiento en la nube, sistemas de gestión de proyectos y APIs de negocio existentes, permitiendo al modelo expandir sus capacidades de "consulta de información" a "realización de operaciones". Sin embargo, no todas las interfaces necesitan transformarse en MCP. Si el flujo de negocio es fijo, las relaciones de llamada claras, los requisitos de latencia altos y no se necesita que el modelo determine "qué herramienta usar en el siguiente paso", la llamada directa a una API tradicional suele ser más simple y fiable.

Todos los datos experimentales y el código de este capítulo están disponibles en:

https://modelscope.cn/gallery/liucong/fae5791c-a024-412f-97c3-5fb93fee708e