Skip to main content
Glama

Perplexity MCP Server

by Rohit-Seelam
README.md8.53 kB
# 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 - Python 3.11+ - [UV package manager](https://docs.astral.sh/uv/) - [Perplexity API key](https://www.perplexity.ai/settings/api) - [Claude Desktop](https://claude.ai/download) ### Installation 1. **Clone the repository** ```bash git clone <repository-url> cd Perplexity_MCP ``` 2. **Install dependencies** ```bash uv sync ``` 3. **Set up environment** ```bash echo "PERPLEXITY_API_KEY=your_api_key_here" > .env ``` 4. **Test the installation** ```bash uv run python tests/tests.py small ``` ### Claude Desktop Integration 1. **Find your UV path** ```bash which uv # Example output: /Users/username/.local/bin/uv ``` 2. **Configure Claude Desktop** Edit `~/Library/Application Support/Claude/claude_desktop_config.json`: ```json { "mcpServers": { "perplexity-mcp": { "command": "/Users/username/.local/bin/uv", "args": [ "--directory", "/path/to/your/Perplexity_MCP", "run", "python", "server.py" ] } } } ``` 3. **Restart Claude Desktop** Completely 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 | Tool | Model | Use Case | Response Time | Features | |------|-------|----------|---------------|----------| | `perplexity_small` | sonar-pro | Quick facts, basic queries | ~3-10 seconds | Fast, reliable | | `perplexity_medium` | sonar-reasoning-pro | Technical explanations | ~10-30 seconds | Enhanced reasoning | | `perplexity_large` | sonar-deep-research | Comprehensive research | ~5-30 minutes | Deep analysis, high quality | ### Response Format All tools return clean, structured responses: ```json { "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: ```bash # 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** ```bash uv sync --all-groups ``` 2. **Run the MCP server locally** (for debugging) ```bash uv run python server.py ``` 3. **Check code quality** ```bash uv run ruff check . uv run black . ``` ## Configuration ### Environment Variables | Variable | Required | Description | |----------|----------|-------------| | `PERPLEXITY_API_KEY` | Yes | Your Perplexity API key from [settings page](https://www.perplexity.ai/settings/api) | ### Tool Configuration The tools are configured in `config.py`: ```python 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 ``` - Verify your `.env` file exists and contains the API key - Check that the API key is valid on [Perplexity's settings page](https://www.perplexity.ai/settings/api) **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: ```bash uv run python server.py # Check stderr output for detailed logging information ``` ### Test Individual Components ```bash # 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](LICENSE) - see LICENSE file for details. ## Acknowledgments - [Perplexity AI](https://www.perplexity.ai/) for the powerful search-enhanced language models - [Anthropic](https://www.anthropic.com/) for Claude and the MCP protocol - [FastMCP](https://github.com/jlowin/fastmcp) for the excellent MCP framework ## Support - For API issues: [Perplexity Support](https://www.perplexity.ai/support) - For MCP protocol questions: [MCP Documentation](https://modelcontextprotocol.io/) - For Claude Desktop issues: [Claude Support](https://support.anthropic.com/) --- **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.

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