An MCP server that provides Perplexity AI web search capabilities to Claude, with automatic model selection, stateful filters, and 7 purpose-built tools.
- Node.js v20 or higher
- A Perplexity API key — get one at https://www.perplexity.ai/settings/api
- Claude Desktop (or any MCP-compatible client)
-
Clone this repository:
git clone https://github.com/RossH121/perplexity-mcp.git cd perplexity-mcp -
Install dependencies:
npm install
-
Build the server:
npm run build
Add the server to Claude's config file at ~/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"
}
}
}
}Replace /absolute/path/to with the actual path to where you cloned the repository.
The server automatically selects the best model based on your query, but you can also set a default via PERPLEXITY_MODEL:
| Model | Best for |
|---|---|
sonar-deep-research |
Comprehensive reports, exhaustive multi-source research |
sonar-reasoning-pro |
Complex logic, math, chain-of-thought analysis |
sonar-pro |
General search, factual queries (default) |
sonar |
Quick, simple lookups |
For pricing and availability: https://docs.perplexity.ai/guides/pricing
The main search tool. Automatically selects the right model based on your query. Returns a synthesized answer with cited sources.
| Parameter | Options | Description |
|---|---|---|
query |
string | Your search query |
search_context_size |
low / medium / high |
How much web context to retrieve. low is fastest/cheapest (default), high is most thorough |
reasoning_effort |
minimal / low / medium / high |
Depth of reasoning for sonar-deep-research |
strip_thinking |
boolean | Remove <think>...</think> blocks from reasoning model responses |
search_mode |
web / academic / sec |
academic prioritizes peer-reviewed papers; sec searches SEC filings |
stream |
boolean | Enable streaming responses |
Examples:
- "What's the latest on fusion energy?" → auto-selects
sonar-pro - "Deep research analysis of CRISPR gene editing advances" → auto-selects
sonar-deep-research - "Solve this logic puzzle step by step" → auto-selects
sonar-reasoning-pro
Returns ranked web results directly without AI synthesis. Faster and cheaper — useful for URL discovery, building source lists, or fact-checking pipelines.
| Parameter | Options | Description |
|---|---|---|
query |
string | Search query |
max_results |
1–20 | Number of results (default: 10) |
search_mode |
web / academic / sec |
Search type |
recency |
hour / day / week / month / year |
Time window filter |
search_after_date |
MM/DD/YYYY |
Only results after this date |
search_before_date |
MM/DD/YYYY |
Only results before this date |
country |
ISO 3166 code | Localize results (e.g. US, GB) |
Restrict or exclude specific domains from search results. Filters persist across all subsequent searches until cleared.
action: "allow"— restrict results to this domain (allowlist mode)action: "block"— exclude this domain from results (denylist mode)- Maximum 20 domains; cannot mix allow and block in the same filter set
"Allow results only from arxiv.org and nature.com"
"Block pinterest.com and reddit.com from search results"
Limit search results to a specific time period. Persists until changed.
Options: hour, day, week, month, year, none
"Set recency filter to week"
"Remove the recency filter"
Clears all domain and recency filters in one call.
Shows currently active domain allowlist/blocklist and recency setting.
View available models and current selection, or manually force a specific model.
"Show model info"
"Set model to sonar-deep-research"
The server scores your query against keyword lists to automatically pick the right model:
- Research keywords (
deep research,comprehensive,in-depth) →sonar-deep-research - Reasoning keywords (
solve,logic,mathematical,figure out) →sonar-reasoning-pro - Simple keywords (
quick,brief,basic) →sonar - Everything else →
sonar-pro
Each response shows which model was used and why. If a query strongly matches a model (score ≥ 2), it will override a manually set model.
Time-sensitive research with domain filtering:
recency_filter→weekdomain_filter→ allownature.com, allowarxiv.orgsearch→ "Recent breakthroughs in quantum error correction"
Financial document research:
raw_searchwithsearch_mode: "sec"→ find relevant filingssearchwithsearch_mode: "sec"→ synthesized analysis
Academic literature review:
searchwithsearch_mode: "academic",search_context_size: "high"→ comprehensive results from peer-reviewed sources
Deep research with reasoning control:
searchwithreasoning_effort: "high",strip_thinking: true→ thorough analysis without<think>blocks in the output
npm run build # Compile TypeScript to build/
npm start # Run the built serverSource is in src/ — after editing, rebuild and restart Claude to load changes.
MIT