MCP Servers

模型上下文协议服务器、框架、SDK 和模板的综合目录。

Ejercicios para el curso MCP (Model Context Protocol)

创建于 11/30/2025
更新于 15 days ago
Repository documentation and setup instructions

Curso MCP en Python – Guía general de ejercicios

Este repositorio mcp/ agrupa todos los ejercicios prácticos del curso. Cada carpeta contiene su propio README.md con las instrucciones detalladas; aquí tienes una guía rápida de qué hay en cada sitio y cómo preparar el entorno común.

Preparación rápida

  1. Instala uv una sola vez. En macOS/Linux:
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
    En Windows (PowerShell):
    irm https://astral.sh/uv/install.ps1 | iex
    
  2. Desde la raíz mcp/ sincroniza dependencias y crea el entorno .venv compartido:
    uv sync
    
  3. Añade un .env con las claves que usan los ejercicios (Anthropic, OpenAI, OMDb, credenciales de sakila, etc.).

A partir de ahí ejecuta siempre los ejemplos con uv run … desde la raíz del repo.

Resumen de ejercicios

| Carpeta | Ejercicios | Qué construyes | Qué practicas en MCP | | --- | --- | --- | --- | | ej1_first_chatbot/ | Ejercicio 1 | Cliente + servidor MCP mínimo por STDIO. | c_tools sencillos, c_state (cliente/servidor), tests básicos. | | ej2_4_chatbot_arxiv/ | Ejercicios 2-4 | Chatbot arXiv (versión sin MCP, con MCP y cliente OpenAI). | c_tools reales, c_instr (prompts MCP), uso de ClientSession. | | ej5_6_chatbot_omdb/ | Ejercicios 5-6 | Servidor MCP HTTP (OMDb) + cliente Streamlit/Inspector. | c_tools sobre APIs externas, c_query (streamable-http). | | ej7_mcp_rag_db/ | Ejercicio 7 | RAG sobre incidencias + servidor MCP con resources y memoria. | c_tools, c_know (resources), c_mem (feedback persistente). | | ej8_sakila_streaming/ | Ejercicio 8 | Agente de “plataforma de streaming” (sakila + OMDb). | c_tools de lectura/escritura, c_query mixto, MAS (multi-servidor). | | ej9_orquestador/ | Ejercicio 9 | Servidor MCP orquestador que llama a otros MCP. | c_tools de alto nivel, MAS/orquestación MCP→MCP. |

Detalle rápido

ej1_first_chatbot/

  • Punto de partida del curso. Servidor STDIO con tools echo, sumar, chiste_de_padre y cliente MCP en terminal.
  • Practica añadir tu propia tool y ver cómo el LLM la descubre.
  • Ejecuta:
    uv run python ej1_first_chatbot/first_mcp_client.py ej1_first_chatbot/first_mcp_server.py
    
  • README completo en ej1_first_chatbot/README.md.

ej2_4_chatbot_arxiv/

  • Evoluciona el chatbot para consultar arXiv: primero sin MCP, luego con MCP y prompts reutilizables, y finalmente con un cliente OpenAI.
  • Practicas c_instr (prompts MCP), session.get_prompt(), Streamlit como host MCP y clientes alternativos.
  • Ejemplos:
    uv run streamlit run ej2_4_chatbot_arxiv/app.py                  # versión sin MCP
    uv run streamlit run ej2_4_chatbot_arxiv/claude_mcp_client.py    # versión con MCP
    

ej5_6_chatbot_omdb/

  • Servidor MCP “omdb-tools” expuesto por HTTP (streamable-http) y cliente LLM en Streamlit.
  • Ideal para aprender a envolver una API existente y probarla con MCP Inspector.
  • Lanza el servidor:
    uv run python ej5_6_chatbot_omdb/omdb_mcp_server.py
    
  • Cliente Streamlit:
    uv run streamlit run ej5_6_chatbot_omdb/omdb_llm_client.py
    

ej7_mcp_rag_db/

  • Pipeline RAG sobre incidents.db + servidor MCP con tools (index_tickets, rag_answer) y resources (tickets/latest, tickets/{id}).
  • Añade también un pequeño almacén de feedback (save_feedback, list_feedback, feedback/latest).
  • Pasos típicos:
    uv run python ej7_mcp_rag_db/seed_db.py
    uv run python ej7_mcp_rag_db/rag_local.py          # modo local
    uv run python ej7_mcp_rag_db/rag_mcp_server.py     # servidor MCP
    

ej8_sakila_streaming/

  • Servidor MCP que combina sakila (MySQL) con OMDb y un cliente Streamlit que actúa como host.
  • Incluye el ejercicio final de coordinar varios servidores MCP (sakila + OMDb) desde un mismo host.
  • Comandos útiles:
    uv run python ej8_sakila_streaming/sakila_mcp_server.py
    uv run streamlit run ej8_sakila_streaming/streamlit_sakila_client.py
    

ej9_orquestador/

  • Servidor MCP orchestrator que por dentro actúa como cliente MCP de otros servidores del curso.
  • Ofrece tools de alto nivel como research_incident_with_papers, que:
    • llama al servidor RAG de incidencias (ej7_mcp_rag_db) y al servidor arXiv (ej2_4_chatbot_arxiv),
    • y devuelve una respuesta combinada (tickets internos + papers externos).
  • Ideal para practicar patrones de orquestación MCP→MCP.
  • Ejecución:
    uv run python ej9_orquestador/orchestrator_mcp_server.py
    

ej10_reto/

  • Diseñar un servidor MCP propio para esa API, con la complejidad que tú quieras. La versión básica puede ser:

  • Un servidor FastMCP con:

    • 1–2 tools de búsqueda/listado.
    • 1–2 tools de detalle (por id, por nombre, etc.). A partir de ahí, puedes subir el nivel combinando ideas del curso:

Tests

  • Todos los tests del curso:
    uv run python -m unittest
    
  • Tests por ejercicio:
    uv run python -m unittest ej1_first_chatbot.tests.test_server_tools
    uv run python -m unittest ej2_4_chatbot_arxiv.tests.test_tools_arxiv ej2_4_chatbot_arxiv.tests.test_arxiv_mcp_server
    uv run python -m unittest ej5_6_chatbot_omdb.tests.test_omdb_mcp_server
    uv run python -m unittest ej7_mcp_rag_db.tests.test_rag_mcp_server
    uv run python -m unittest ej8_sakila_streaming.tests.test_sakila_mcp_server
    uv run python -m unittest ej9_orquestador.tests.test_orchestrator_mcp_server
    

Recuerda que cada carpeta tiene su propio README.md con instrucciones detalladas, mini‑ejercicios y notas didácticas. Usa este documento solo como mapa general del curso.

快速设置
此服务器的安装指南

安装包 (如果需要)

uvx curso-mcp

Cursor 配置 (mcp.json)

{ "mcpServers": { "scops-curso-mcp": { "command": "uvx", "args": [ "curso-mcp" ] } } }