MCP Sampling Demo

MCP Sampling Demo

Demonstrates how to implement sampling in MCP servers, allowing tools to request LLM content generation from the client without requiring external API integrations or credentials.

Category
Visit Server

README

🎯 Cómo funciona la funcionalidad Sampling en Model Context Protocol

¡Hola developer 👋🏻! En este repositorio tienes un ejemplo de cómo funciona el Sampling en Model Context Protocol. Para que puedas entender perfectamente cómo puedes usarlo y qué te aporta dentro de tus MCP Servers. Si quieres verlo en acción, aquí tienes el vídeo relacionado con este repo:

Qué es el sampling en model context protocol

🤔 ¿Cómo funciona el Sampling en MCP?

El sampling en MCP es una característica poderosa que permite que las tools/prompts de tus servidores MCP soliciten al cliente que genere contenido usando sus propios modelos LLM. En lugar de que el servidor MCP tenga que integrar directamente con proveedores de IA, delega esta responsabilidad al cliente.

🔄 Flujo completo del Sampling

El proceso de sampling en MCP sigue este flujo:

  1. El cliente llama a una herramienta MCP (ej. summarize) con parámetros específicos.
  2. La herramienta utiliza extra.sendRequest para enviar una solicitud de tipo sampling/createMessage al cliente.
  3. El cliente procesa la solicitud de sampling usando sus modelos LLM disponibles.
  4. El cliente devuelve el contenido generado a la herramienta MCP.
  5. La herramienta procesa la respuesta y la devuelve al cliente original.

⭐ Ventajas del Sampling

  • Sin dependencias externas: El servidor MCP no necesita API keys ni integraciones con proveedores de IA.
  • Flexibilidad del cliente: El cliente puede elegir el modelo LLM más adecuado para cada tarea.
  • Eficiencia: Evita llamadas redundantes a APIs externas.
  • Seguridad: Las credenciales y configuraciones del LLM permanecen en el cliente.

💡 Ejemplo práctico

const result = await extra.sendRequest(
  {
    method: "sampling/createMessage",
    params: {
      messages: [
        {
          role: "user",
          content: {
            type: "text",
            text: `Please summarize the following text concisely:\n\n${text}`,
          },
        },
      ],
      maxTokens: 500,
      modelPreferences: {
        costPriority: 0.5,      // Balance costo y rendimiento
        intelligencePriority: 0.5, // Balance inteligencia y rendimiento  
        speedPriority: 0.5,     // Priorizar velocidad
      },
    },
  },
  CreateMessageResultSchema
);

🔧 Implementación correcta del Sampling

A diferencia de implementaciones incorrectas que podrían causar dependencias circulares, la implementación correcta utiliza el método sampling/createMessage a través de extra.sendRequest. Es decir, no se debe intentar enviar un mensaje directamente desde la instancia del servidor, sino que debe enviarse desde la sesión del cliente MCP. Para ello puedes usar el parámetro extra que recibe la tool.

 async function (
      { text },
      extra: RequestHandlerExtra<any, any>
    ): Promise<CallToolResult> {

🚀 Uso

🔧 Iniciar el servidor

npm install
npm run build
npm start

🛠️ Configuración para Visual Studio Code

Este repositorio ya incluye la configuración necesaria para que puedas configurar este MCP Server en Visual Studio Code. La misma se encuentra en el archivo .vscode/mcp.json. Por lo que una vez arrancado el proyecto solo tienes que hacer clic en Start dentro del archivo mcp.json 🤓.


📺 ¡Suscríbete a mi canal de YouTube!

Si te ha resultado útil este contenido y quieres aprender más sobre Model Context Protocol, inteligencia artificial y desarrollo, ¡no olvides suscribirte a mi canal de YouTube! Así estarás al tanto de nuevos tutoriales, ejemplos prácticos y novedades del mundo tech.
👉 Suscríbete aquí y activa la campanita para no perderte nada.


¡Nos vemos 👋🏻!

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured