Perplexity MCP Server
Perplexity MCP 服务器
MCP 服务器使用 Perplexity 的 API 提供网络搜索功能,并根据查询意图自动选择模型。
先决条件
Node.js(v14 或更高版本)
Perplexity API 密钥(在https://www.perplexity.ai/settings/api获取)
克劳德桌面应用程序
Related MCP server: Perplexity MCP Server
安装
通过 Git 安装
克隆此存储库:
git clone https://github.com/RossH121/perplexity-mcp.git cd perplexity-mcp安装依赖项:
npm install构建服务器:
npm run build
配置
从https://www.perplexity.ai/settings/api获取您的 Perplexity API 密钥
将服务器添加到 Claude 的配置文件中,地址为
~/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"
}
}
}
}将/absolute/path/to替换为您克隆存储库的实际路径。
可用型号
服务器现在支持根据查询意图自动选择模型,但您也可以使用PERPLEXITY_MODEL环境变量指定默认模型。可用选项:
sonar-deep-research- 专门用于跨领域的广泛研究和专家级分析sonar-reasoning-pro- 针对高级逻辑推理和复杂问题解决进行了优化sonar-reasoning- 专为均衡性能的推理任务而设计sonar-pro- 具有出色搜索能力和引用密度的通用模型sonar- 快速、高效的直接查询
默认模型(在环境变量中指定)将用作自动模型选择的基准。
如需了解最新的模型定价和供货情况,请访问: https://docs.perplexity.ai/guides/pricing
用法
配置服务器并重启 Claude 后,你就可以简单地让 Claude 搜索信息了。例如:
“关于SpaceX有什么最新消息吗?”
“搜索芝加哥最好的餐厅”
“查找有关爵士乐历史的信息”
“我需要对最近的人工智能发展进行深入研究分析”(使用 sonar-deep-research)
“帮我解决这个复杂的问题”(使用 sonar-reasoning-pro)
Claude 会自动使用 Perplexity 搜索工具查找并返回相关信息。服务器会根据你的查询意图自动选择最合适的模型。
如果出于某种原因它决定不使用搜索工具,您可以通过在提示前加上“搜索网络”来强制解决问题。
智能模型选择
服务器会根据您的查询自动选择最合适的 Perplexity 模型:
使用“深入研究”、“全面”或“深入”等研究导向的术语来触发声纳深入研究
使用“解决”、“弄清楚”或“复杂问题”等推理术语来触发 sonar-reasoning-pro
使用“快速”、“简短”或“基本”等简单术语来触发轻量级声纳模型
为了实现平衡的性能,一般搜索词默认使用 sonar-pro
每个搜索响应都包含有关使用哪种模型以及原因的信息。
域名过滤
此服务器支持域名过滤,方便您定制搜索体验。您可以使用以下命令允许或屏蔽特定域名:
添加允许的域:“使用 domain_filter 工具允许 wikipedia.org”
添加被阻止的域名:“使用 domain_filter 工具阻止 pinterest.com”
查看当前过滤器:“使用 list_filters 工具”(显示域和新近度过滤器)
清除所有过滤器:“使用 clear_filters 工具”(清除域和新近度过滤器)
注意:Perplexity API 最多支持 3 个域名,并会优先处理允许的域名。域名过滤功能需要支持此功能的 Perplexity API 层级。
使用流程示例:
“使用 domain_filter 工具允许 wikipedia.org”
“使用 domain_filter 工具允许 arxiv.org”
“使用 list_filters 工具”(验证您的设置)
“搜索量子计算进展”(结果将优先考虑 wikipedia.org 和 arxiv.org)
最近过滤
您可以使用最近过滤器将搜索结果限制在特定的时间范围内:
设置最近过滤器:“使用带有过滤器=小时的 recency_filter 工具”(选项:小时、天、周、月)
禁用最近过滤器:“使用带有 filter=none 的 recency_filter 工具”
这对于时事或突发新闻等时间敏感的查询特别有用。
模型选择控制
虽然自动模型选择在大多数情况下都能很好地发挥作用,但您可以手动控制使用哪种模型:
查看模型信息:“使用model_info工具”
设置特定模型:“使用 model_info 工具和 model=sonar-deep-research”
恢复自动选择:将模型设置回默认模型
使用示例:
“使用 model_info 工具”(查看可用模型和当前状态)
“使用 model_info 工具和 model=sonar-reasoning-pro”(强制使用推理模型)
“寻找勾股定理的数学证明”(将使用 sonar-reasoning-pro)
“使用 model_info 工具和 model=sonar-pro”(返回自动选择)
发展
修改服务器:
编辑
src/index.ts使用
npm run build重建重新启动 Claude 以加载更改
执照
麻省理工学院
Available Tools
6 toolsclear_filtersA
Remove all domain filters (both allowed and blocked). Use when switching search contexts or starting fresh. Does not affect recency filter.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It effectively discloses key behavioral traits: it's a destructive operation (removes filters), specifies what gets affected (domain filters) and what doesn't (recency filter), and implies a reset context. However, it doesn't mention permissions, side effects, or response format, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise and well-structured in two sentences: the first states the purpose and scope, the second provides usage guidelines and exclusions. Every sentence adds clear value with zero waste, making it easy to parse and understand quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is nearly complete. It covers purpose, usage, and behavioral aspects effectively. However, it lacks details on permissions or confirmation prompts, which could be relevant for a destructive operation, leaving minor room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the lack of inputs. The description adds no parameter-specific information, which is appropriate here. A baseline of 4 is applied as it compensates adequately for the zero-parameter case by focusing on usage context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Remove all domain filters') and specifies the scope ('both allowed and blocked'), distinguishing it from sibling tools like 'domain_filter' which likely manages individual filters. It goes beyond just restating the name by detailing what exactly gets cleared.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides usage scenarios ('when switching search contexts or starting fresh') and clarifies exclusions ('Does not affect recency filter'), offering clear guidance on when to use this tool versus alternatives like 'recency_filter' or 'list_filters'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
domain_filterA
Configure domain filtering for search results. Use 'allow' to prioritize trusted sources (e.g., documentation sites, academic domains) or 'block' to exclude unreliable sources. Maximum 20 domains total. Filters persist across searches until cleared.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain name without protocol. Examples: 'wikipedia.org', 'docs.python.org', 'arxiv.org'. For subdomains: 'api.example.com' | |
| action | Yes | 'allow' prioritizes this domain in results, 'block' excludes it completely |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: it specifies the maximum limit of 20 domains, persistence across searches until cleared, and the effect of actions ('allow' prioritizes, 'block' excludes). It lacks details on error handling or rate limits, but covers essential operational constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with every sentence adding value: the first states the purpose, the second explains usage with examples, and the third covers constraints and persistence. There is no wasted text, making it efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is largely complete: it explains what the tool does, how to use it, and key behaviors. It could improve by mentioning the tool's relationship to siblings like 'clear_filters' or expected output, but it adequately covers the core functionality and constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters fully. The description adds minimal value beyond the schema by reinforcing the purpose of 'allow' and 'block' actions, but does not provide additional syntax or format details. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('configure domain filtering') and resource ('search results'), distinguishing it from siblings like 'clear_filters' and 'list_filters' by focusing on configuration rather than management or listing. It specifies the exact function of setting up domain-based filters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool (e.g., to prioritize trusted sources or exclude unreliable ones) and mentions persistence across searches, but it does not explicitly state when not to use it or name alternatives like 'recency_filter' for other filtering needs. Usage is implied but not exhaustively defined against all siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filtersA
Display current filter configuration including allowed domains, blocked domains, and active recency setting. Useful for debugging search behavior.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It describes what information is displayed (filter configuration details) and hints at a read-only operation ('Display'), but doesn't specify output format, potential errors, or any side effects. It adds some context about debugging utility, but lacks details on permissions or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that are front-loaded with the core purpose and followed by a utility note. Every word adds value without repetition or fluff, making it highly efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (0 parameters, no annotations, no output schema), the description is reasonably complete for a read-only configuration display tool. It specifies what information is included and the debugging context, but lacks details on output format or error handling, which could be helpful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, earning a baseline score of 4 for not introducing confusion or redundancy.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Display current filter configuration' with specific components listed (allowed domains, blocked domains, recency setting). It uses a specific verb ('Display') and identifies the resource ('filter configuration'), but doesn't explicitly distinguish it from sibling tools like 'domain_filter' or 'recency_filter' that might modify these settings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implied usage guidance by stating it's 'Useful for debugging search behavior,' suggesting it should be used when troubleshooting search issues. However, it doesn't explicitly state when to use this tool versus alternatives like 'search' or the various filter-modifying siblings, nor does it provide any exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
model_infoA
View available Perplexity models and their specializations, or manually override model selection. By default, models are auto-selected based on query intent (research, reasoning, general search).
| Name | Required | Description | Default |
|---|---|---|---|
| model | No | Optional: Override auto-selection. 'sonar-deep-research' for comprehensive analysis, 'sonar-reasoning-pro' for complex logic, 'sonar' for quick lookups |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior: viewing available models, their specializations, and the ability to override auto-selection. It explains the default behavior (auto-selection based on query intent) and the override capability, though it doesn't specify what happens when no parameter is provided (e.g., whether it returns a list or default info).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the core purpose in the first clause. Both sentences earn their place: the first establishes what the tool does, and the second explains the default behavior and context. There's no wasted language or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (1 optional parameter with full schema coverage, no output schema), the description is mostly complete. It covers purpose, usage, and parameter context well. However, it doesn't specify what the tool returns (e.g., a list of models with details or just confirmation), which would be helpful since there's no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the context of the parameter: 'manually override model selection' and 'By default, models are auto-selected based on query intent'. This provides semantic meaning beyond the schema's enum descriptions, helping the agent understand when and why to use the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('View available Perplexity models and their specializations, or manually override model selection') and distinguishes it from sibling tools like 'search' or 'list_filters' by focusing on model information and selection rather than filtering or searching operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly provides usage guidance: 'By default, models are auto-selected based on query intent (research, reasoning, general search)' and indicates when to use the override parameter. This clearly distinguishes it from the default auto-selection behavior and helps the agent understand when manual selection is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recency_filterA
Control the time window for search results. Essential for time-sensitive queries like news, updates, or recent developments. Filter persists until changed.
| Name | Required | Description | Default |
|---|---|---|---|
| filter | Yes | Time window: 'hour' for breaking news, 'day' for daily updates, 'week' for recent developments, 'month' for broader recent context, 'none' to include all time periods |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals important behavioral traits: the filter persists until changed (stateful behavior), and it's for search results (context of application). However, it doesn't mention potential side effects, error conditions, or what happens when the filter is applied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is perfectly concise with three sentences that each earn their place: states the core function, provides usage context, and reveals important behavioral trait (persistence). No wasted words, front-loaded with the essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (stateful filter setting), no annotations, and no output schema, the description does reasonably well. It explains what the tool does, when to use it, and a key behavioral aspect (persistence). However, it doesn't describe what the tool returns or potential error conditions, leaving some gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage and only 1 parameter, the schema already fully documents the parameter. The description adds some value by explaining why you'd use different time windows ('breaking news', 'daily updates', etc.), but doesn't provide additional syntax or format details beyond what's in the schema. For a single-parameter tool with excellent schema coverage, this is above baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('Control the time window for search results') and distinguishes it from siblings by focusing on time-based filtering. It explicitly mentions what it does (sets a time window filter) rather than just restating the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool ('Essential for time-sensitive queries like news, updates, or recent developments'), but doesn't explicitly mention when NOT to use it or name specific alternatives among the sibling tools. It implies usage scenarios but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchA
Web search via Perplexity AI with automatic model selection. Returns cited sources with summaries. The search uses only the query text (not conversation history). Best for: current events, factual research, technical documentation, comparative analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Direct search query. Be specific with 2-3 context words, use expert terminology. Good: 'Compare 2025 React vs Vue performance for enterprise apps'. Bad: 'tell me about frameworks'. Tips: Use 'site:domain.com' for specific sites, include years for recent info, add 'analyze/compare/explain' for reasoning tasks. | |
| stream | No | Enable streaming responses (default: false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key traits: the search mechanism ('via Perplexity AI with automatic model selection'), output format ('returns cited sources with summaries'), and input constraints ('uses only the query text'). However, it lacks details on rate limits, authentication needs, or error handling, which are common for such tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded, with every sentence earning its place. It starts with the core functionality, adds key features, and ends with usage guidelines, all in a concise and structured manner without unnecessary details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a search tool with behavioral nuances) and no output schema, the description is mostly complete. It covers purpose, usage, and key behaviors, but could benefit from mentioning response format details or potential limitations. However, it compensates well with clear guidelines and transparency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description does not add meaning beyond what the schema provides for parameters; it focuses on overall tool behavior instead. Baseline 3 is appropriate as the schema handles parameter documentation adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verbs ('web search via Perplexity AI') and resources ('returns cited sources with summaries'). It distinguishes itself from potential siblings by specifying 'automatic model selection' and 'uses only the query text (not conversation history)', making its scope explicit and differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidelines with 'Best for: current events, factual research, technical documentation, comparative analysis.' This clearly indicates when to use this tool versus alternatives, offering specific contexts and exclusions (e.g., not for conversational history-based queries).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v1.0.0- First observed
clear_filters - First observed
domain_filter - First observed
list_filters - First observed
model_info - First observed
recency_filter - First observed
search
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose with no overlap: clear_filters removes filters, domain_filter configures domains, list_filters displays current settings, model_info shows models, recency_filter controls time windows, and search performs web searches. The descriptions reinforce these unique roles, making misselection unlikely.
All tool names follow a consistent verb_noun pattern with snake_case (e.g., clear_filters, domain_filter, list_filters, model_info, recency_filter, search). The naming is predictable and readable throughout, with no deviations or mixed conventions.
With 6 tools, this server is well-scoped for its purpose of configuring and executing Perplexity AI searches. Each tool earns its place by covering essential aspects like filtering, model selection, and search execution, without being overly sparse or bloated.
The tool set provides complete coverage for the domain of Perplexity AI search configuration and execution. It includes setup (filters, model info), control (recency, domain filters), status (list_filters), and core functionality (search), with no obvious gaps that would cause agent failures.
Maintenance
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Docs: https://docs.keenable.ai/mcp-server Keenable is a free, remote MCP server that gives agents access to the web index. Search the web with ranked results and date/site filters, then fetch any indexed page as clean markdown. Works out of the box with no account or API key.
Augments MCP Server - A comprehensive framework documentation provider for Claude Code
Related MCP Servers
AlicenseAqualityCmaintenanceAn 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.2518MIT- AlicenseAqualityDmaintenanceMCP server that enables Claude to request chat completions with citations from the Perplexity API.1MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that integrates with Sonar API to provide Claude with real-time web search capabilities for comprehensive research.7 npmMIT
- AlicenseAqualityDmaintenanceAn MCP server that enables AI assistants to perform web searches on Perplexity.ai using browser automation instead of an official API. It supports persistent authenticated sessions and returns search results along with cited sources directly to the client.336 npm10MIT