Perplexity MCP Server
Enables web search and deep research using Perplexity Sonar models through MCP clients like Cursor or Claude Desktop.
README
Perplexity MCP Server
Python MCP server that exposes Perplexity Sonar Chat Completions to any MCP client (Cursor, Claude Desktop, custom agents).
Tools
| Tool | Default model | Purpose |
|---|---|---|
perplexity_search |
sonar-pro |
General web search |
perplexity_deep_research |
sonar-deep-research |
Comprehensive synthesis |
Both tools accept optional Sonar parameters and return JSON:
{
"answer": "...",
"citations": ["https://..."],
"search_results": [],
"model": "sonar-pro",
"usage": {}
}
Optional parameters
| Parameter | Values / format | When to use |
|---|---|---|
temperature |
0–2 (default 0.2) |
Lower = more focused; raise only for more varied phrasing |
max_tokens |
1–128000 |
Cap answer length; omit for API default |
search_recency_filter |
hour | day | week | month | year |
News / “latest” questions; omit for evergreen topics |
search_after_date_filter |
MM/DD/YYYY |
Absolute start of publication window |
search_before_date_filter |
MM/DD/YYYY |
Absolute end of publication window |
search_domain_filter |
up to 20 domains; allowlist or -domain denylist (not mixed) |
Trusted sources only, or exclude noisy sites |
search_mode |
web | academic | sec |
Papers (academic), SEC filings (sec); omit for general web |
model |
sonar | sonar-pro | sonar-deep-research | sonar-reasoning-pro |
Override tool default only when you need a different speed/depth tradeoff |
Prefer date filters over search_recency_filter when the window is known exactly. Queries are capped at 4,000 characters. The API key is never logged or returned in tool output.
Setup
- Copy env template and add your Perplexity API key:
cp .env.example .env
- Install with uv:
uv sync
Run locally (stdio)
uv run mcp-perplexity
Cursor / Claude Desktop
Add to your MCP config (adjust the project path):
{
"mcpServers": {
"perplexity": {
"command": "uv",
"args": ["--directory", "C:/Users/KozakJ/git/mcp_perplexity", "run", "mcp-perplexity"],
"env": {
"PERPLEXITY_API_KEY": "pplx-your-api-key-here"
}
}
}
}
Or rely on a .env file in the project directory (PERPLEXITY_API_KEY=...).
Cursor / Claude Desktop (container, stdio)
Rebuild after image changes, then only the API key is required — other settings use the same defaults as local runs:
{
"mcpServers": {
"perplexity": {
"command": "podman",
"args": [
"run", "-i", "--rm",
"-e", "PERPLEXITY_API_KEY",
"mcp-perplexity"
],
"env": {
"PERPLEXITY_API_KEY": "pplx-your-api-key-here"
}
}
}
}
Override any setting the same way (-e MCP_PORT, etc.) only when you need non-defaults.
Run with Podman (streamable HTTP)
podman compose needs a compose provider (podman-compose or Docker Compose). On a plain Podman install, use build + run:
podman build -t mcp-perplexity .
podman run --rm -p 8000:8000 --env-file .env ^
-e MCP_TRANSPORT=streamable-http ^
-e MCP_HOST=0.0.0.0 ^
-e MCP_PORT=8000 ^
--name mcp-perplexity mcp-perplexity
(On bash/zsh, replace ^ with \.)
If you have a compose provider installed (pip install podman-compose, or Docker Compose):
podman compose up --build
Endpoint: http://localhost:8000/mcp (Streamable HTTP). Bind to trusted networks only — this image does not add HTTP auth.
Configuration
| Variable | Default | Description |
|---|---|---|
PERPLEXITY_API_KEY |
(required) | Perplexity API key |
MCP_TRANSPORT |
stdio |
stdio or streamable-http |
MCP_HOST |
127.0.0.1 |
HTTP bind host |
MCP_PORT |
8000 |
HTTP bind port |
PERPLEXITY_RPM |
30 |
Soft client-side requests/minute limit |
PERPLEXITY_MAX_CONCURRENCY |
2 |
Max concurrent API calls |
PERPLEXITY_SEARCH_TIMEOUT |
60 |
Search timeout (seconds) |
PERPLEXITY_DEEP_RESEARCH_TIMEOUT |
180 |
Deep research timeout (seconds) |
PERPLEXITY_MAX_RETRIES |
3 |
Retries on 429/5xx and transport errors |
Retries use exponential backoff (honors Retry-After when present). Logging goes to stderr only so stdio JSON-RPC stays clean.
Recommended Servers
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.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
Neon Database
MCP server for interacting with Neon Management API and databases
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
E2B
Using MCP to run code via e2b.