Desearch

Búsqueda con IA, búsqueda en X y búsqueda web para agentes de IA.

Servidor MCP alojado

npx add-mcp 'https://mcp.desearch.ai/mcp'

Se instala en Claude Code, Codex, Cursor y más

Documentación

Servidor MCP Desearch

npm version GitHub stars

Si Desearch te resulta útil, una estrella ayuda a que otros lo encuentren.

Remoto: https://mcp.desearch.ai/mcp con el encabezado Authorization: Bearer <DESEARCH_API_KEY>.

Local: npx -y desearch-mcp-server con la variable de entorno DESEARCH_API_KEY.

Obtén una clave.

Encuentra Desearch en

Demostración

Solicitud: Busca en la web las últimas noticias sobre IA.

web-search toma query (obligatorio) y start (desplazamiento de paginación opcional: 0, 10, 20, ...).

{
    "name": "web-search",
    "arguments": {
        "query": "latest news on AI"
    }
}

Ejemplo de salida:

{
    "data": [
        {
            "title": "Example result",
            "link": "https://example.com/page",
            "snippet": "Short preview text."
        }
    ]
}

La herramienta devuelve ese JSON como texto con formato bonito: { "content": [{ "type": "text", "text": "<json above>" }] }.

Búsqueda de IA, búsqueda en X y búsqueda web para agentes de IA, además de extracción de páginas y herramientas de datos de X. Usa tu propia clave de API de Desearch.

Herramientas

El servidor MCP de Desearch incluye las siguientes herramientas:

  • Búsqueda de IA (ai-search): Realiza búsquedas de IA en Twitter y web con enlaces relevantes y resumen. tools usa identificadores de fuente cortos (web, twitter, arxiv, wikipedia, hackernews, reddit). Etiquetas más antiguas como Web Search, ArXiv Search, Wikipedia Search, Hacker News Search y Reddit Search todavía se aceptan y se envían como el identificador corto. youtube no se acepta. El valor predeterminado es ["web", "twitter"].
  • Búsqueda en X (x-search): Búsqueda de tweets en X. Argumentos: query (obligatorio), count (opcional, predeterminado 20). La clasificación permanece en Top. Filtros opcionales: user, start_date, end_date (AAAA-MM-DD), lang, verified, blue_verified, is_quote, is_video, is_image, min_retweets, min_replies, min_likes.
  • Búsqueda web (web-search): Búsqueda web estilo SERP. Argumentos: query (obligatorio), start (desplazamiento de paginación opcional).
  • Búsqueda de enlaces web (web-links-search): Búsqueda de enlaces web. Argumentos: prompt (obligatorio), tools (opcional, solo web, predeterminado ["web"]; Web Search se acepta y se reescribe a web), count (opcional, 10–200). La API de enlaces/web rechaza otras fuentes, por lo que no están en la enumeración.
  • Extraer (extract): Lee una URL pública como texto o HTML. Preferido sobre el rastreo. Argumentos: url (obligatorio), format (opcional, html o text), js (opcional), wait (milisegundos opcionales).
  • Rastreo web (web-crawl): Mismos argumentos que extract, en la ruta heredada /web/crawl. El SDK marca webCrawl como obsoleto en favor de extract; esta herramienta permanece para que esa ruta siga siendo accesible. Prefiere extract para nuevas integraciones.
  • Búsqueda de enlaces en X (x-links-search): Búsqueda de IA para enlaces de publicaciones en X. Argumentos: prompt (obligatorio), count (opcional, 10–200).
  • Publicaciones de X por URLs (x-posts-by-urls): Publicaciones completas para una lista de URLs. Argumento: urls (obligatorio).
  • Publicación de X por ID (x-post-by-id): Una publicación por ID. Argumento: id (obligatorio).
  • Publicaciones de X por usuario (x-posts-by-user): Publicaciones de un usuario. Argumentos: user (obligatorio), query (opcional), count (opcional, 1–100).
  • Retweets de una publicación en X (x-post-retweeters): Usuarios que retuitearon una publicación. Argumentos: id (obligatorio), cursor (opcional).
  • Publicaciones de usuario en X (x-user-posts): La línea de tiempo de un usuario. Argumentos: username (obligatorio), cursor (opcional).
  • Respuestas de usuario en X (x-user-replies): Publicaciones y respuestas de un usuario. Argumentos: user (obligatorio), count (opcional, 1–100), query (opcional).
  • Respuestas a una publicación en X (x-post-replies): Respuestas a una publicación. Argumentos: post_id (obligatorio), count (opcional, 1–100), query (opcional).
  • Tendencias en X (x-trends): Temas de tendencia para una ubicación. Argumentos: woeid (obligatorio), count (opcional, 30–100).

El mapa completo de método SDK → endpoint → herramienta MCP está en docs/API_MCP_PARITY.md. Cada método público de desearch-js 1.5 es una herramienta. latestTweets se eliminó del SDK (GET /twitter/latest en 1.0.1) y no está expuesto.

Requisitos previos 📋

Instalación 🛠️

Instalación con NPM

El nombre del paquete es desearch-mcp-server. La versión actual está en npm. Consulta CHANGELOG.md para las notas de versión. La entrada stdio es el binario desearch-mcp-server (build/index.js), que requiere DESEARCH_API_KEY.

npm install -g desearch-mcp-server

O ejecútalo sin una instalación global:

npx -y desearch-mcp-server

Cursor o Claude pueden iniciar ese binario directamente:

{
    "mcpServers": {
        "desearch": {
            "command": "npx",
            "args": ["-y", "desearch-mcp-server"],
            "env": {
                "DESEARCH_API_KEY": "your-api-key"
            }
        }
    }
}

command: "desearch-mcp-server" (sin args) es la misma entrada después de la instalación global anterior.

Gemini CLI

Instala la extensión desde este repositorio. Gemini CLI te pedirá tu clave de API de Desearch (almacenada como una configuración sensible) y se conectará al servidor alojado https://mcp.desearch.ai/mcp:

gemini extensions install https://github.com/Desearch-ai/mcp-desearch

Para cambiar la clave más tarde, ejecuta gemini extensions config desearch. Agentes de IA como Cline pueden seguir llms-install.md para configurar el servidor.

Usando Smithery

Para instalar el servidor MCP de Desearch para Claude Desktop automáticamente a través de Smithery:

npx -y @smithery/cli install desearch/desearch --client claude

O para Cursor IDE:

npx -y @smithery/cli install desearch/desearch --client cursor

Windsurf

El agente Cascade de Windsurf lee los servidores MCP desde mcp_config.json bajo la clave mcpServers. Ábrelo desde el panel de Cascade: haz clic en el menú ... (Acciones) y luego en Open MCP config file. Las compilaciones de Windsurf usan ~/.codeium/windsurf/mcp_config.json (en Windows, %USERPROFILE%\.codeium\windsurf\mcp_config.json). Las compilaciones más nuevas pueden abrir ~/.config/devin/mcp_config.json en su lugar (Windows: %APPDATA%\devin\mcp_config.json); edita el archivo que abra esa acción.

Servidor alojado (sin instalación local). Los servidores remotos usan serverUrl con headers:

{
    "mcpServers": {
        "desearch": {
            "serverUrl": "https://mcp.desearch.ai/mcp",
            "headers": {
                "x-api-key": "your-api-key"
            }
        }
    }
}

Para mantener la clave fuera del archivo, Windsurf puede interpolar una variable de entorno: "x-api-key": "${env:DESEARCH_API_KEY}".

Alternativa local con stdio:

{
    "mcpServers": {
        "desearch": {
            "command": "npx",
            "args": ["-y", "desearch-mcp-server"],
            "env": {
                "DESEARCH_API_KEY": "your-api-key"
            }
        }
    }
}

Guarda el archivo y luego actualiza la lista de servidores MCP en Cascade.

Zed

Zed llama a los servidores MCP "servidores de contexto". Abre tu archivo de configuración con la acción zed: open settings file (o usa Configuración → IA → Servidores MCP → Add Server) y agrega una entrada context_servers.

Servidor alojado:

{
    "context_servers": {
        "desearch": {
            "url": "https://mcp.desearch.ai/mcp",
            "headers": {
                "x-api-key": "your-api-key"
            }
        }
    }
}

Alternativa local con stdio:

{
    "context_servers": {
        "desearch": {
            "command": "npx",
            "args": ["-y", "desearch-mcp-server"],
            "env": {
                "DESEARCH_API_KEY": "your-api-key"
            }
        }
    }
}

El servidor está listo cuando el punto junto a desearch en Configuración → IA → Servidores MCP se pone verde ("El servidor está activo").

Configuración ⚙️

1. Configurar Cursor IDE para ejecutar el servidor MCP de Desearch

Abre Cursor IDE, accede a la paleta de comandos Cmd+Shift+P o Ctrl+Shift+P y busca Open MCP Settings. Haz clic en Add new global MCP server para abrir el archivo mcp.json.

2. Agrega la configuración del servidor de Desearch:

{
    "mcpServers": {
        "desearch": {
            "command": "desearch-mcp-server",
            "env": {
                "DESEARCH_API_KEY": "your-api-key"
            }
        }
    }
}

Reemplaza your-api-key con tu clave real de API de Desearch desde console.desearch.ai/api-keys.

3. Reinicia Cursor IDE

Para que los cambios surtan efecto:

  1. Cierra Cursor IDE por completo
  2. Inicia Cursor IDE nuevamente

1. Configurar Claude Desktop para ejecutar el servidor MCP de Desearch

Abre la aplicación Claude Desktop y habilita el Modo Desarrollador desde la barra de menú superior izquierda.

Una vez habilitado, abre Configuración (también desde la barra de menú superior izquierda) y navega a la Opción de Desarrollador, donde encontrarás el botón Editar Configuración. Al hacer clic, se abrirá el archivo claude_desktop_config.json, lo que te permitirá realizar las ediciones necesarias.

O (si quieres abrir claude_desktop_config.json desde la terminal)

Para macOS:

  1. Abre tu configuración de Claude Desktop:
code ~/Library/Application\ Support/Claude/claude_desktop_config.json

Para Windows:

  1. Abre tu configuración de Claude Desktop:
code %APPDATA%\Claude\claude_desktop_config.json

2. Agrega la configuración del servidor de Desearch:

{
    "mcpServers": {
        "desearch": {
            "command": "desearch-mcp-server",
            "env": {
                "DESEARCH_API_KEY": "your-api-key"
            }
        }
    }
}

Reemplaza your-api-key con tu clave real de API de Desearch desde console.desearch.ai/api-keys.

3. Reinicia Claude Desktop

Para que los cambios surtan efecto:

  1. Cierra Claude Desktop por completo
  2. Inicia Claude Desktop nuevamente
  3. Puedes verificar el servidor comprobando el estado en Configuración > Desarrollador > desearch

HTTP Streamable Remoto

El mismo servidor puede ejecutarse sobre MCP Streamable HTTP para un cliente remoto. El stdio local (desearch-mcp-server, Smithery) no cambia y sigue leyendo DESEARCH_API_KEY del entorno.

Las solicitudes remotas no usan esa variable de entorno. El descubrimiento no necesita una clave: initialize, notifications/initialized, ping, tools/list, prompts/list, resources/list y resources/templates/list devuelven 200 para que un escáner de mercado pueda leer la lista de herramientas. tools/call y todos los demás métodos aún requieren la clave de API de Desearch del llamante, la misma clave de console.desearch.ai/api-keys:

  • Authorization: Bearer <DESEARCH_API_KEY> (preferido)
  • x-api-key: <DESEARCH_API_KEY>

También se acepta un valor Authorization: <DESEARCH_API_KEY> simple. La clave no se lee de la cadena de consulta. No hay secreto compartido del servidor ni desafío WWW-Authenticate: el proceso alojado reenvía la clave por solicitud a la API de Desearch solo cuando una llamada la necesita.

El endpoint MCP es POST /mcp. Las respuestas son JSON (Streamable HTTP sin estado). GET y DELETE en /mcp devuelven 405 porque el servidor no mantiene una sesión ni envía mensajes de servidor a cliente. GET /, GET /health y GET /api/health son comprobaciones de salud sin autenticación.

Endpoint alojado

El endpoint público de Streamable HTTP es https://mcp.desearch.ai/mcp. Listar las herramientas no necesita una clave. Envía tu clave de API de Desearch en cada tools/call en el encabezado x-api-key. Authorization: Bearer <key> también se acepta. Usa la clave de console.desearch.ai/api-keys. El servidor no lee una clave de la cadena de consulta. Las solicitudes remotas no usan un DESEARCH_API_KEY a nivel de proceso.

Cursor, o cualquier cliente MCP remoto:

{
    "mcpServers": {
        "desearch": {
            "url": "https://mcp.desearch.ai/mcp",
            "headers": {
                "x-api-key": "your-api-key"
            }
        }
    }
}

Uso con Claude (conector personalizado)

Desearch aún no está en el Directorio de Conectores de Claude. Puedes agregar el servidor alojado como un conector personalizado con tu clave de API de Desearch.

Fuentes: Conectores MCP remotos personalizados y autenticación de conectores. La autenticación por encabezado de solicitud es una función beta en Claude.

Claude.ai / Claude Desktop (administrador de organización)

  1. Abre Configuración de la organización > Conectores.
  2. Selecciona Agregar y luego Personalizado. Si se te pide el tipo de conector, elige Web.
  3. URL del servidor: https://mcp.desearch.ai/mcp
  4. Opción de inicio de sesión: Sin inicio de sesión.
  5. En Encabezados de solicitud, agrega x-api-key con tu clave de API de Desearch como valor.
  6. Selecciona Agregar.

El valor del encabezado se almacena una vez y lo comparten todos los miembros de la organización que usan el conector.

Claude Code

claude mcp add --transport http desearch https://mcp.desearch.ai/mcp \
  --header "x-api-key: YOUR_DESEARCH_API_KEY"

Ejecutar localmente

npm install
npm run build
npm run start:http

Esto escucha en 0.0.0.0:3000 (PORT y HOST anulan eso). MCP_TRANSPORT=http es lo mismo que --http.

curl -sS http://127.0.0.1:3000/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -H 'Authorization: Bearer your-api-key' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"smoke","version":"0.0.1"}}}'

Cursor (o cualquier cliente MCP remoto):

{
    "mcpServers": {
        "desearch": {
            "url": "http://127.0.0.1:3000/mcp",
            "headers": {
                "Authorization": "Bearer your-api-key"
            }
        }
    }
}

El valor predeterminado de la imagen es stdio MCP (node build/index.js). Registros como Glama inician el contenedor y hablan MCP en stdin/stdout, por lo que la imagen no pasa --http a menos que lo anules. Stdio requiere DESEARCH_API_KEY. Smithery no usa este comando de imagen; smithery.yaml inicia node build/index.js e inyecta DESEARCH_API_KEY por sí mismo.

Streamable HTTP es una anulación. Reemplaza el comando con --http, o establece MCP_TRANSPORT=http y mantén el comando predeterminado. La imagen aún expone el puerto 3000 para ese modo.

docker build -t desearch-mcp .
# stdio (image default)
docker run --rm -e DESEARCH_API_KEY=your-api-key -i desearch-mcp
# Streamable HTTP
docker run --rm -p 3000:3000 desearch-mcp node build/index.js --http
# same HTTP mode via env, without replacing the command
docker run --rm -e MCP_TRANSPORT=http -p 3000:3000 desearch-mcp

Desplegar en Vercel

Vercel encaja con este servidor porque el handler no tiene estado y responde a cada llamada JSON-RPC en una sola respuesta. vercel.json compila el proyecto, sirve POST /mcp y establece la duración de la función en 60 segundos. Los planes Hobby limitan la duración de la función por debajo de eso, por lo que las llamadas a la herramienta AI Search necesitan un plan que permita al menos 60 segundos. initialize y tools/list son cortos de cualquier manera.

No se requiere ninguna clave de API de Desearch en el servidor en el proyecto de Vercel. Después del despliegue, el endpoint es:

https://<project>.vercel.app/mcp

https://mcp.desearch.ai/mcp es el nombre de host público. Este repositorio no crea registros DNS. Los clientes envían x-api-key, o Authorization: Bearer <key>.

El mismo proceso de node build/index.js --http es la alternativa si prefieres ejecutar un host Node de larga duración en lugar de Vercel. La imagen de Docker usa stdio por defecto; pasa --http o establece MCP_TRANSPORT=http para servir Streamable HTTP desde ella.

Solución de problemas 🔧

Problemas comunes

  1. Servidor no encontrado

    • Verifica la sintaxis de configuración de Claude o Cursor Desktop
    • Asegúrate de que Node.js esté instalado
  2. Problemas con la clave de API

    • Confirma que tu DESEARCH_API_KEY sea válida
    • Verifica que DESEARCH_API_KEY esté configurada correctamente en la configuración de Cursor o Claude Desktop
    • Asegúrate de que no haya espacios alrededor de la clave de API
    • Para el servidor HTTP remoto, envía Authorization: Bearer <key> o x-api-key. Una variable de entorno DESEARCH_API_KEY alojada no se usa para esas solicitudes.
  3. Problemas de conexión

    • Reinicia Claude Desktop o el IDE de Cursor por completo
    • Revisa los registros de Claude Desktop:
    # macOS
    tail -n 50 -f ~/Library/Logs/Claude/mcp*.log
    
    # Windows
    type "%APPDATA%\Claude\logs\mcp*.log"