Skip to main content
Glama

Perplexity MCP Server

by Rohit-Seelam

Perplexity MCP Server

A Model Context Protocol (MCP) server that integrates Perplexity AI's search-enhanced language models with Claude Desktop, providing three tools with progressive complexity for different use cases.

Features

🔍 Three Complexity Levels

  • perplexity_small: Fast queries with sonar-pro model
  • perplexity_medium: Enhanced reasoning with sonar-reasoning-pro
  • perplexity_large: Deep research with sonar-deep-research

🚀 Optimized for Development

  • Clean responses (thinking tokens automatically removed)
  • Comprehensive error handling
  • Detailed logging for debugging
  • Built with FastMCP for reliability

🔧 Modern Python Stack

  • UV for fast dependency management
  • HTTPX for modern HTTP client capabilities
  • Type hints throughout codebase
  • Comprehensive testing suite

Quick Start

Prerequisites

Installation

  1. Clone the repository
    git clone <repository-url> cd Perplexity_MCP
  2. Install dependencies
    uv sync
  3. Set up environment
    echo "PERPLEXITY_API_KEY=your_api_key_here" > .env
  4. Test the installation
    uv run python tests/tests.py small

Claude Desktop Integration

  1. Find your UV path
    which uv # Example output: /Users/username/.local/bin/uv
  2. Configure Claude DesktopEdit ~/Library/Application Support/Claude/claude_desktop_config.json:
    { "mcpServers": { "perplexity-mcp": { "command": "/Users/username/.local/bin/uv", "args": [ "--directory", "/path/to/your/Perplexity_MCP", "run", "python", "server.py" ] } } }
  3. Restart Claude DesktopCompletely quit and restart Claude Desktop to load the new MCP server.

Usage

In Claude Desktop

Once configured, you can use these tools in your conversations:

Quick factual queries:

Use perplexity_small to find: "What is the latest Python version?"

Technical analysis:

Use perplexity_medium to explain: "Compare REST vs GraphQL performance characteristics"

Deep research:

Use perplexity_large to research: "Comprehensive analysis of quantum computing trends in 2024"

Tool Specifications

ToolModelUse CaseResponse TimeFeatures
perplexity_smallsonar-proQuick facts, basic queries~3-10 secondsFast, reliable
perplexity_mediumsonar-reasoning-proTechnical explanations~10-30 secondsEnhanced reasoning
perplexity_largesonar-deep-researchComprehensive research~5-30 minutesDeep analysis, high quality

Response Format

All tools return clean, structured responses:

{ "content": "The AI response with thinking tokens removed", "citations": ["https://source1.com", "https://source2.com"] }

Development

Project Structure

Perplexity_MCP/ ├── server.py # FastMCP server with 3 tools ├── client.py # Perplexity API wrapper ├── config.py # Configuration and tool settings ├── __init__.py # Package exports ├── pyproject.toml # UV project configuration ├── tests/ │ ├── tests.py # Test script for individual tools │ └── test_logs/ # Test results and logs └── Notes/ ├── explanations.md # Technical deep-dives └── questions.txt # Development questions

Running Tests

Test individual tools to validate API integration:

# Test each tool independently uv run python tests/tests.py small # Test sonar-pro model uv run python tests/tests.py medium # Test sonar-reasoning-pro uv run python tests/tests.py large # Test sonar-deep-research (long runtime) # Results saved to tests/test_logs/ with detailed response analysis

Development Setup

  1. Install development dependencies
    uv sync --all-groups
  2. Run the MCP server locally (for debugging)
    uv run python server.py
  3. Check code quality
    uv run ruff check . uv run black .

Configuration

Environment Variables

VariableRequiredDescription
PERPLEXITY_API_KEYYesYour Perplexity API key from settings page

Tool Configuration

The tools are configured in config.py:

TOOL_CONFIGS = { "small": { "model": "sonar-pro" }, "medium": { "model": "sonar-reasoning-pro", "reasoning_effort": "medium", "web_search_options": {"search_context_size": "medium"} }, "large": { "model": "sonar-deep-research", "reasoning_effort": "high", "web_search_options": {"search_context_size": "high"} } }

Troubleshooting

Common Issues

Import Errors

ModuleNotFoundError: No module named 'client'
  • Ensure you're running from the project root directory
  • Check that UV is using the correct virtual environment

API Key Issues

Error: PERPLEXITY_API_KEY environment variable is required

Claude Desktop Connection Issues

  • Verify the UV path in your configuration: which uv
  • Ensure the project directory path is absolute and correct
  • Check Claude Desktop logs for specific error messages
  • Restart Claude Desktop completely after configuration changes

Long Response Times

  • perplexity_large can take 10-30 minutes for complex queries
  • Use perplexity_small or perplexity_medium for faster responses
  • Consider the complexity of your query when choosing tools

Debug Mode

Enable verbose logging by running the server directly:

uv run python server.py # Check stderr output for detailed logging information

Test Individual Components

# Test API connection uv run python -c "from client import PerplexityClient; print('✅ Client OK')" # Test configuration uv run python -c "from config import get_api_key; print('✅ API Key OK')" # Test server startup timeout 10s uv run python server.py || echo "Server started successfully"

Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature-name
  3. Make your changes and test thoroughly
  4. Update documentation as needed
  5. Submit a pull request

Development Guidelines

  • Follow existing code style (Black formatting, type hints)
  • Add tests for new functionality
  • Update CLAUDE.md for any architectural changes
  • Test with all three Perplexity models
  • Ensure MCP protocol compliance (clean stdout)

Architecture

Key Design Decisions

  • Class-based client: Singleton pattern for efficient resource management
  • Thinking token removal: Automatic filtering of <think>...</think> sections
  • Simplified responses: Only content and citations for clean integration
  • Error isolation: No exceptions propagated to MCP layer
  • Logging strategy: All debug output to stderr for MCP compliance

Dependencies

  • mcp>=1.11.0 - MCP Python SDK with FastMCP
  • python-dotenv>=1.1.1 - Environment variable management
  • httpx>=0.28.1 - Modern HTTP client with timeout handling

License

MIT License - see LICENSE file for details.

Acknowledgments

Support


Note: This MCP server is currently optimized for local development and personal use. Future versions may include PyPI distribution options for easier installation and sharing.

Related MCP Servers

  • A
    security
    A
    license
    A
    quality
    A server facilitating web search functionality by utilizing Perplexity AI's API, designed to integrate with the Claude desktop client for enhanced search queries.
    Last updated -
    1
    205
    Python
    MIT License
    • Apple
  • A
    security
    A
    license
    A
    quality
    Enables intelligent code analysis and debugging through the Perplexity AI's API, offering detailed error analysis, pattern detection, and comprehensive solutions, with integration support for the Claude desktop client.
    Last updated -
    1
    696
    11
    JavaScript
    MIT License
    • Apple
  • A
    security
    A
    license
    A
    quality
    Facilitates web search capabilities using Perplexity's API, allowing users to retrieve search results through Claude's interface.
    Last updated -
    1
    3
    JavaScript
    MIT License
  • A
    security
    A
    license
    A
    quality
    A custom MCP tool that integrates Perplexity AI's API with Claude Desktop, allowing Claude to perform web-based research and provide answers with citations.
    Last updated -
    1
    4
    JavaScript
    MIT License
    • Apple

View all related MCP servers

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Rohit-Seelam/Perplexity_MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server