Perplexity
Búsqueda web utilizando la API de Perplexity con selección automática de modelo basada en la intención de la consulta.
Documentación
Servidor MCP de Perplexity
Un servidor MCP que proporciona capacidades de búsqueda web de Perplexity AI a Claude, con selección automática de modelos, filtros con estado y 10 herramientas diseñadas para propósitos específicos.
Requisitos previos
- Node.js v20 o superior
- Una clave de API de Perplexity — obtén una en https://www.perplexity.ai/settings/api
- Claude Desktop (o cualquier cliente compatible con MCP)
Instalación
-
Clona este repositorio:
git clone https://github.com/RossH121/perplexity-mcp.git cd perplexity-mcp -
Instala las dependencias:
npm install -
Compila el servidor:
npm run build
Configuración
Añade el servidor al archivo de configuración de Claude en ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"perplexity-server": {
"command": "node",
"args": ["/absolute/path/to/perplexity-mcp/build/index.js"],
"env": {
"PERPLEXITY_API_KEY": "your-api-key-here",
"PERPLEXITY_MODEL": "sonar-pro"
}
}
}
}
Reemplaza /absolute/path/to con la ruta real donde clonaste el repositorio.
Modelos disponibles
El servidor selecciona automáticamente el mejor modelo según tu consulta, pero también puedes establecer un valor predeterminado mediante PERPLEXITY_MODEL:
| Modelo | Ideal para |
|---|---|
sonar-deep-research | Informes completos, investigación exhaustiva de múltiples fuentes |
sonar-reasoning-pro | Lógica compleja, matemáticas, análisis de razonamiento encadenado |
sonar-pro | Búsqueda general, consultas factuales (predeterminado) |
sonar | Consultas rápidas y simples |
Para precios y disponibilidad: https://docs.perplexity.ai/guides/pricing
Herramientas
search — Búsqueda web impulsada por IA
La herramienta de búsqueda principal. Selecciona automáticamente el modelo adecuado según tu consulta. Devuelve una respuesta sintetizada con fuentes citadas.
| Parámetro | Opciones | Descripción |
|---|---|---|
query | string | Tu consulta de búsqueda |
search_context_size | low / medium / high | Cuánto contexto web recuperar. low es el más rápido/económico (predeterminado), high es el más exhaustivo |
search_type | fast / pro / auto | Nivel del motor de búsqueda (anidado en web_search_options) |
reasoning_effort | minimal / low / medium / high | Profundidad de razonamiento para sonar-deep-research |
strip_thinking | boolean | Elimina los bloques <think>...</think> de las respuestas del modelo de razonamiento |
search_mode | web / academic / sec | academic prioriza artículos revisados por pares; sec busca documentos presentados ante la SEC |
search_after_date / search_before_date | MM/DD/YYYY | Filtra fuentes por fecha de publicación |
last_updated_after / last_updated_before | MM/DD/YYYY | Filtra fuentes por fecha de última actualización |
search_language_filter | ["en","de"] | Restringe fuentes a idiomas (ISO 639-1) |
language_preference | ISO 639-1 | Idioma preferido de respuesta |
disable_search | boolean | Responder solo con datos de entrenamiento (sin búsqueda web) |
enable_search_classifier | boolean | Permitir que un clasificador decida si buscar |
return_images | boolean | Añadir una sección de Imágenes con las URL de los resultados |
image_domain_filter / image_format_filter | string[] | Restringir imágenes por dominio o formato |
return_related_questions | boolean | Añadir sugerencias de preguntas de seguimiento |
country / latitude / longitude | — | Localizar resultados mediante user_location |
stream_mode | full / concise | Formato de eventos de streaming para Pro Search |
show_cost | boolean | Añadir un pie de página con el costo de la solicitud cuando esté disponible |
stream | boolean | Habilitar respuestas en streaming |
Ejemplos:
- "¿Cuál es la última novedad sobre energía de fusión?" → selecciona automáticamente
sonar-pro - "Análisis de investigación profunda sobre los avances en edición genética CRISPR" → selecciona automáticamente
sonar-deep-research - "Resuelve este acertijo lógico paso a paso" → selecciona automáticamente
sonar-reasoning-pro
raw_search — Resultados clasificados sin procesar (sin LLM)
Devuelve resultados web clasificados directamente sin síntesis de IA. Más rápido y económico — útil para descubrir URL, crear listas de fuentes o pipelines de verificación de datos.
| Parámetro | Opciones | Descripción |
|---|---|---|
query | string o string[] | Consulta de búsqueda, o un array de consultas ejecutadas en una sola solicitud |
max_results | 1–20 | Número de resultados (predeterminado: 10) |
max_tokens / max_tokens_per_page | number | Presupuesto de tokens total / por resultado |
search_mode | web / academic / sec | Categoría de fuente |
search_type | web / people | people enruta a People Search |
recency | hour / day / week / month / year | Filtro de ventana de tiempo |
search_after_date / search_before_date | MM/DD/YYYY | Filtrar por fecha de publicación |
last_updated_after / last_updated_before | MM/DD/YYYY | Filtrar por fecha de última actualización |
search_language_filter | ["en","de"] | Restringir a idiomas (ISO 639-1) |
country | ISO 3166 code | Localizar resultados (p. ej. US, GB) |
Nota: las versiones anteriores enviaban estos parámetros en camelCase, que la API de búsqueda ignoraba silenciosamente — por lo que
max_results,recency,search_modey los filtros de fecha no tenían efecto. Esto se ha corregido; ahora tienen efecto.
async_research — Investigación profunda de larga duración
Envía un trabajo sonar-deep-research y haz polling, en lugar de bloquear en una llamada síncrona. Útil cuando la investigación puede superar el tiempo de espera síncrono de 5 minutos. Los trabajos expiran 7 días después de su creación.
| Parámetro | Opciones | Descripción |
|---|---|---|
action | submit / status / list | Qué hacer |
query | string | Pregunta de investigación (requerida para submit) |
request_id | string | ID de trabajo de un submit anterior (requerido para status) |
model | Sonar model | Modelo del trabajo (predeterminado: sonar-deep-research) |
reasoning_effort | minimal / low / medium / high | Profundidad de razonamiento |
search_mode | web / academic / sec | Categoría de fuente |
strip_thinking | boolean | Elimina los bloques <think> del resultado completado |
"Submit async research: comprehensive comparison of solid-state battery startups"
→ returns a request_id
"Check async research status for <request_id>"
agent — Bucle agéntico con herramientas integradas
La API de agente de Perplexity. Ejecuta un agente de múltiples pasos que puede llamar herramientas integradas y, opcionalmente, un modelo de terceros.
| Parámetro | Opciones | Descripción |
|---|---|---|
input | string | La tarea o pregunta |
model | p. ej. openai/gpt-4.1 | Modelo calificado por proveedor |
models | string[] | Cadena de respaldo (tiene prioridad sobre model) |
preset | fast-search / pro-search / deep-research | Ajuste predefinido con nombre en lugar de un modelo |
instructions | string | Prompt del sistema |
max_steps | 1–10 | Máximo de pasos agénticos/de herramientas |
max_output_tokens | number | Máximo de tokens de salida |
tools | web_search / fetch_url | Herramientas integradas que el agente puede usar |
embeddings — Embeddings de texto
Genera embeddings mediante la API de embeddings de Perplexity. Devuelve un resumen compacto (modelo, cantidad de vectores, uso de tokens) de forma predeterminada.
| Parámetro | Opciones | Descripción |
|---|---|---|
input | string o string[] | Texto(s) a incrustar (máx. 512) |
model | pplx-embed-v1-0.6b / pplx-embed-v1-4b | Modelo de embedding (predeterminado: 0.6b) |
dimensions | number | Dimensiones de salida (Matryoshka) |
full | boolean | Incluir vectores sin procesar codificados en base64 |
domain_filter — Dominios en lista de permitidos/bloqueados
Restringe o excluye dominios específicos de los resultados de búsqueda. Los filtros persisten en todas las búsquedas posteriores hasta que se limpien.
action: "allow"— restringe los resultados a este dominio (modo de lista de permitidos)action: "block"— excluye este dominio de los resultados (modo de lista de bloqueados)- Máximo 20 dominios; no se pueden mezclar permitidos y bloqueados en el mismo conjunto de filtros
"Allow results only from arxiv.org and nature.com"
"Block pinterest.com and reddit.com from search results"
recency_filter — Filtro de ventana de tiempo
Limita los resultados de búsqueda a un período de tiempo específico. Persiste hasta que se cambie.
Opciones: hour, day, week, month, year, none
"Set recency filter to week"
"Remove the recency filter"
clear_filters — Restablecer todos los filtros
Limpia todos los filtros de dominio y de actualidad en una sola llamada.
list_filters — Ver filtros activos
Muestra la lista de permitidos/bloqueados de dominio actualmente activa y la configuración de actualidad.
model_info — Ver o anular la selección de modelo
Ver los modelos disponibles y la selección actual, o forzar manualmente un modelo específico.
"Show model info"
"Set model to sonar-deep-research"
Selección inteligente de modelos
El servidor puntúa tu consulta contra listas de palabras clave para elegir automáticamente el modelo adecuado:
- Palabras clave de investigación (
deep research,comprehensive,in-depth) →sonar-deep-research - Palabras clave de razonamiento (
solve,logic,mathematical,figure out) →sonar-reasoning-pro - Palabras clave simples (
quick,brief,basic) →sonar - Todo lo demás →
sonar-pro
Cada respuesta muestra qué modelo se usó y por qué. Si una consulta coincide fuertemente con un modelo (puntuación ≥ 2), anulará un modelo configurado manualmente.
Flujos de trabajo de ejemplo
Investigación sensible al tiempo con filtrado de dominios:
recency_filter→weekdomain_filter→ permitirnature.com, permitirarxiv.orgsearch→ "Avances recientes en corrección de errores cuánticos"
Investigación de documentos financieros:
raw_searchconsearch_mode: "sec"→ encontrar documentos relevantessearchconsearch_mode: "sec"→ análisis sintetizado
Revisión de literatura académica:
searchconsearch_mode: "academic",search_context_size: "high"→ resultados completos de fuentes revisadas por pares
Investigación profunda con control de razonamiento:
searchconreasoning_effort: "high",strip_thinking: true→ análisis exhaustivo sin bloques<think>en la salida
Desarrollo
npm run build # Compile TypeScript to build/
npm start # Run the built server
El código fuente está en src/ — después de editar, recompila y reinicia Claude para cargar los cambios.
Licencia
MIT