- Publicado el
Construyendo Agentes de IA con DeepSeek y Model Context Protocol (MCP): Una Guía Práctica Usando el SDK Agéntico de OpenAI

En este post, exploramos cómo integrar DeepSeek AI con el OpenAI Agentic SDK usando el Model Context Protocol (MCP), mostrando una alternativa potente y eficiente en costos a las configuraciones tradicionales de LLM. Al combinar DeepSeek con estándares emergentes de agentes y servidores públicos de MCP, puedes desplegar agentes autónomos con menor costo y mayor flexibilidad.
Cubriremos:
- Qué es el Model Context Protocol (MCP) y por qué es importante para la interoperabilidad de agentes
- Cómo conectar el SDK agéntico de OpenAI a DeepSeek en lugar de a modelos de OpenAI
- Cómo configurar el entorno para conectarse con servidores MCP en vivo
- Un script completo en Python que puedes ejecutar desde la línea de comandos para demostrar esta integración
Esta guía ilustra el potencial emergente de los agentes de IA, el Model Context Protocol (MCP) como capa fundamental y DeepSeek como una opción de LLM más económica pero capaz para flujos de trabajo agénticos.
¿Qué es el Model Context Protocol (MCP)?
El Model Context Protocol (MCP) es un protocolo abierto para la comunicación entre agentes, permitiendo que agentes autónomos y herramientas intercambien mensajes estructurados en tiempo real. Desacopla los agentes de APIs específicas de modelos, creando un ecosistema interoperable donde agentes, herramientas y orquestadores pueden hablar un lenguaje común. Puedes leer más sobre MCP en este post de mi blog.
El Model Context Protocol (MCP) soporta mensajes en streaming, interacciones multiturno y uso estandarizado de herramientas. A medida que crece su adopción, MCP se está convirtiendo en una capa fundamental para la infraestructura nativa de agentes, similar a cómo HTTP lo es para la web.
Para profundizar en cómo funciona el protocolo, visita el sitio de documentación de MCP.
¿Por qué usar DeepSeek con el Agentic SDK?
El OpenAI Agentic SDK proporciona un marco potente para construir agentes que utilizan herramientas. Aunque está optimizado para modelos de OpenAI, el SDK es lo suficientemente flexible para integrar otros proveedores de LLM, como DeepSeek, mediante clientes personalizados.
Por qué esto es importante:
- Costo: El precio de DeepSeek es significativamente menor que GPT-4, permitiendo una experimentación más amplia.
- Rendimiento: Los modelos de DeepSeek son competitivos en código, razonamiento y diálogos multiturno.
- Flexibilidad: Cambiar de proveedor te permite optimizar según presupuesto y caso de uso.
En esta configuración, anularemos el cliente predeterminado de OpenAI y redirigiremos las solicitudes a DeepSeek a través de su API compatible con OpenAI. Deepseek-chat, el modelo LLM de DeepSeek AI, está diseñado para aplicaciones de IA conversacional, ofreciendo un buen rendimiento en diálogos multiturno y generación de código, lo que lo hace adecuado para flujos de trabajo agénticos.
Configurando la Integración
Los servidores de Model Context Protocol (MCP) utilizados en esta configuración son:
- Filesystem MCP Server: Un servidor en Node.js que implementa Model Context Protocol (MCP) para operaciones del sistema de archivos.
- Git MCP Server: Un servidor de Model Context Protocol para interacción y automatización de repositorios Git. Este servidor proporciona herramientas para leer, buscar y manipular repositorios Git mediante modelos de lenguaje grandes.
Para seguir el tutorial, necesitarás:
- Una clave API de DeepSeek — consíguela aquí
- Python 3.8+
- El SDK
openai-agents:
python -m venv env
source env/bin/activate
pip install openai-agents
- El script a continuación, guardado como
agent_mcp_deepseek.py
También necesitarás:
uvxinstalado- Node.js y
npxinstalados
Script en Python: Agente con Model Context Protocol (MCP) + DeepSeek
Para ejecutar el script, usa el siguiente comando:
python agent_mcp_deepseek.py --repo_path /ruta/a/tu/repositorio
El siguiente script se conecta a los servidores Git y Filesystem MCP usando MCPServerStdio, luego ejecuta una sesión interactiva de agente impulsada por DeepSeek. El usuario puede hacer preguntas sobre el sistema de archivos o un repositorio Git, y el agente utiliza el contexto de estos servidores para responder.
Características clave:
- Integración dual de servidores Model Context Protocol (MCP): Contexto Git vía
uvx, contexto del sistema de archivos víanpx - URL base y nombre del modelo personalizables para DeepSeek mediante variables de entorno
- Bucle CLI interactivo: Haz preguntas como "¿Qué archivos cambiaron en el último commit?" o "Lista el archivo más grande en la carpeta"

Ejemplo de la salida de ejecución del script en la terminal
A continuación, el código completo del script que implementa la integración descrita.
#!/usr/bin/env python3
"""
This script runs a Model Context Protocol (MCP) client that interacts with MCP servers
to answer questions about a specified git repository and its filesystem.
It utilizes an AI model (via OpenAI API or compatible services like DeepSeek)
to generate responses based on the context provided by the MCP servers.
Usage:
python agent_mcp_deepseek.py --repo_path <path_to_your_git_repo>
Prerequisites:
- Python 3.7+
- Required Python packages (install via pip, e.g., openai, agents)
- `uvx` tool installed (`pip install uvx`)
- `npx` tool installed (comes with Node.js/npm)
- Environment variable `DEEPSEEK_API_KEY` set with your API key.
"""
import os
import asyncio
import shutil
import argparse
import logging
from typing import List
from openai import AsyncOpenAI
from agents import Agent, Runner, set_tracing_disabled, OpenAIChatCompletionsModel
from agents.mcp import MCPServer, MCPServerStdio
# --- Configuration ---
# Configure logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
# AI Model Configuration (DeepSeek API or compatible)
BASE_URL = os.getenv("DEEPSEEK_BASE_URL", "https://api.deepseek.com/v1")
API_KEY = os.getenv("DEEPSEEK_API_KEY")
MODEL_NAME = os.getenv("DEEPSEEK_MODEL_NAME", "deepseek-chat")
# ANSI escape codes for colored console output
DARK_BLUE = "\033[34m"
RESET = "\033[0m"
# --- Pre-run Checks ---
# Validate essential configuration
if not API_KEY:
raise ValueError(
"API key is missing. Please set the DEEPSEEK_API_KEY environment variable."
)
if not BASE_URL:
logging.warning("DEEPSEEK_BASE_URL not set, using default: %s", BASE_URL)
if not MODEL_NAME:
logging.warning("DEEPSEEK_MODEL_NAME not set, using default: %s", MODEL_NAME)
# Check for required external tools
if not shutil.which("uvx"):
raise RuntimeError("uvx command not found. Please install it, e.g., `pip install uvx`.")
if not shutil.which("npx"):
raise RuntimeError("npx command not found. Please ensure Node.js and npm/npx are installed and in your system's PATH.")
# --- Core Logic ---
async def run_agent_query(
mcp_servers: List[MCPServer],
directory_path: str,
user_query: str
) -> None:
"""Runs the AI agent to answer a specific query about the repository/filesystem.
Args:
mcp_servers: A list of active MCP server instances.
directory_path: The path to the target git repository and filesystem root.
user_query: The question asked by the user.
"""
logging.info(f"Processing query for directory: {directory_path}")
# Initialize the AI client
client = AsyncOpenAI(base_url=BASE_URL, api_key=API_KEY)
# Disable agent tracing for cleaner output in this interactive tool
set_tracing_disabled(disabled=True)
# Create the AI agent instance
agent = Agent(
name="Assistant",
instructions=(
f"You answer questions about the git repository and filesystem located at "
f"'{directory_path}'. Use this path for context when interacting with tools."
),
mcp_servers=mcp_servers,
model=OpenAIChatCompletionsModel(model=MODEL_NAME, openai_client=client),
)
# Run the agent with the user's query
print("\n" + "-" * 40)
print(f"{DARK_BLUE}Question: {user_query}{RESET}")
print("Assistant thinking...")
try:
result = await Runner.run(starting_agent=agent, input=user_query)
print(f"{DARK_BLUE}Answer:\n{result.final_output}{RESET}")
except Exception as e:
logging.error(f"Error during agent execution: {e}", exc_info=True)
print(f"Sorry, an error occurred while processing your request: {e}")
finally:
print("-" * 40 + "\n")
async def main() -> None:
"""Sets up MCP servers and handles the interactive user query loop.
Parses command-line arguments for the repository path, starts the Git and
Filesystem MCP servers, and then enters a loop to accept user questions,
running the agent for each query until the user quits.
"""
parser = argparse.ArgumentParser(
description="Run an AI assistant powered by Model Context Protocol (MCP) servers to query a git repository."
)
parser.add_argument(
"--repo_path",
type=str,
required=True,
help="Path to the target git repository."
)
args = parser.parse_args()
directory_path = os.path.abspath(args.repo_path) # Use absolute path
logging.info(f"Target repository path: {directory_path}")
if not os.path.isdir(directory_path):
raise FileNotFoundError(f"The specified repository path does not exist or is not a directory: {directory_path}")
# Start MCP servers concurrently
try:
async with MCPServerStdio(
name="Git Server (via uvx)",
cache_tools_list=True, # Example: Cache tool list for performance
params={"command": "uvx", "args": ["mcp-server-git"]},
# Note: mcp-server-git typically doesn't need a path argument,
# it operates on the repo where it's invoked or uses tool parameters.
) as git_server, MCPServerStdio(
name="Filesystem Server (via npx)",
params={
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", directory_path],
},
) as fs_server:
logging.info("Model Context Protocol (MCP) servers (Git, Filesystem) started successfully.")
servers = [git_server, fs_server]
# Interactive query loop
while True:
try:
message = input("Enter your question (or type '/quit' to exit): ")
except EOFError:
print("\nExiting.") # Handle Ctrl+D
break
if message.strip().lower() == "/quit":
logging.info("'/quit' command received. Exiting.")
break
if not message.strip():
continue # Ignore empty input
logging.info(f"User question: {message}")
await run_agent_query(servers, directory_path, message)
except Exception as e:
logging.critical(f"Failed to start or run Model Context Protocol (MCP) servers: {e}", exc_info=True)
print(f"Critical error: {e}. Exiting.")
finally:
logging.info("Model Context Protocol (MCP) toolkit finished.")
if __name__ == "__main__":
logging.info("Starting Model Context Protocol (MCP) toolkit...")
try:
asyncio.run(main())
except KeyboardInterrupt:
print("\nInterrupted by user. Exiting.")
logging.info("Process interrupted by user (KeyboardInterrupt).")
except (ValueError, RuntimeError, FileNotFoundError) as e:
logging.error(f"Initialization failed: {e}")
print(f"Error: {e}")
# Exit with error code if setup fails
exit(1)
Conclusiones Clave
- El Model Context Protocol (MCP) desacopla los agentes de los modelos y permite una comunicación flexible y en tiempo real entre herramientas en sistemas heterogéneos.
- El Agentic SDK no está limitado a OpenAI — con pequeños cambios, puedes ejecutarlo en DeepSeek o cualquier modelo compatible con OpenAI.
- Esta configuración reduce costos mientras mantiene la capacidad del agente.
- Con herramientas como
uvxynpx, puedes componer un kit completo de herramientas para agentes usando herramientas públicas de Model Context Protocol (MCP) y una pila de protocolos abiertos.
Este script demuestra el potencial temprano de combinar comunicación estandarizada (Model Context Protocol (MCP)) con inteligencia asequible (DeepSeek) para construir agentes de IA prácticos y potentes.
- A medida que evoluciona el ecosistema de Model Context Protocol (MCP), se espera un conjunto en expansión de servidores compatibles con el protocolo, permitiendo a los agentes acceder a bases de datos, APIs, recursos en la nube y sistemas empresariales.
- Esta infraestructura abierta y componible desbloquea flujos de trabajo independientes del modelo y capacidades más profundas de automatización.
- Así como HTTP sustenta la web moderna, Model Context Protocol (MCP) puede servir como el sustrato central para la internet emergente nativa de agentes.
¿Disfrutaste este post? ¿Te resultó útil? Siéntete libre de dejar un comentario abajo para compartir tus pensamientos o hacer preguntas. Se requiere una cuenta de GitHub para unirse a la discusión.
Sigue leyendo
Posts relacionados
Jan 19, 2025
0ComentariosLanzando flujos de trabajo de IA en sandboxes de E2B: una guía para principiantes
Una guía práctica para configurar sandboxes de E2B, integrar DeepSeek AI y ejecutar flujos de trabajo impulsados por IA centrados en Python para el procesamiento y visualización de datos.
May 4, 2025
0ComentariosTutorial Completo: Transformando APIs de FastAPI en Herramientas Inteligentes con FastAPI-MCP
Descubre cómo FastAPI-MCP cierra la brecha entre tus APIs de FastAPI y los agentes de IA sin problemas. Este tutorial completo cubre la configuración, seguridad, despliegue y casos de uso del mundo real, capacitándote para crear aplicaciones inteligentes con facilidad.
Apr 21, 2025
0ComentariosDominando el SDK de OpenAI Agents para Python: Construye flujos de trabajo inteligentes de IA con herramientas, guardarraíles y coordinación multiagente
Un tutorial detallado y paso a paso sobre el SDK de OpenAI Agents para Python, que cubre instalación, integración de herramientas, gestión de contexto, guardarraíles, orquestación multiagente y trazabilidad para construir aplicaciones robustas de agentes de IA.