Skip to main content
Glama
laodev1

Perplexity MCP Server

by laodev1
README.md
# Perplexity MCP Server

## Overview

The Perplexity MCP Server is a Node.js implementation of Anthropic's Model Context Protocol (MCP) that enables Claude to interact with Perplexity's language models. This server provides a secure bridge between Claude and Perplexity AI's capabilities, allowing for enhanced AI interactions through tool use.

## Available Tools

The server currently implements two main tools:

### 1. perplexity_chat

Advanced chat completion tool with full message history support.

```javascript
{
  "name": "perplexity_chat",
  "description": "Generate a chat completion using Perplexity AI",
  "parameters": {
    "model": "string (optional) - One of: llama-3.1-sonar-small-128k-online, llama-3.1-sonar-large-128k-online, llama-3.1-sonar-huge-128k-online",
    "messages": "array of {role, content} objects - The conversation history",
    "temperature": "number (optional) - Sampling temperature between 0-2"
  }
}
```

### 2. perplexity_ask

Simplified single-query interface for quick questions.

```javascript
{
  "name": "perplexity_ask",
  "description": "Send a simple query to Perplexity AI",
  "parameters": {
    "query": "string - The question or prompt to send",
    "model": "string (optional) - One of: llama-3.1-sonar-small-128k-online, llama-3.1-sonar-large-128k-online, llama-3.1-sonar-huge-128k-online"
  }
}
```

## Installation

1. Clone the repository:

   ```bash
   git clone https://github.com/yourusername/perplexity-mcp-server.git
   cd perplexity-mcp-server
   ```

2. Install dependencies:

   ```bash
   npm install
   ```

3. Create `.env` file:

   ```env
   PERPLEXITY_API_KEY=your-api-key-here
   ```

4. Build the project:
   ```bash
   npm run build
   ```

## Claude Desktop Configuration

To add this server to Claude Desktop, update your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    //more servers...
    "perplexity": {
      "command": "node",
      "args": ["path\\to\\perplexity-mcp-server\\dist\\index.js"],
      "env": {
        "PERPLEXITY_API_KEY": "YOUR_PERPLEXITY_API_KEY"
      }
    }
    //more servers...
  }
}
```

The configuration file is typically located at:

- Windows: `%APPDATA%/Claude/config/claude_desktop_config.json`
- macOS: `~/Library/Application Support/Claude/config/claude_desktop_config.json`
- Linux: `~/.config/Claude/config/claude_desktop_config.json`

## Development

Start the development server with automatic recompilation:

```bash
npm run dev
```

The server uses TypeScript and implements the MCP protocol using the `@modelcontextprotocol/sdk` package.

## Architecture

### Core Components

1. **PerplexityServer Class**

   - Implements MCP server protocol
   - Handles tool registration and execution
   - Manages error handling and server lifecycle

2. **Tools System**
   - Modular tool definitions
   - Type-safe tool handlers
   - Structured input validation

### Technical Details

- Built with TypeScript for type safety
- Uses `@modelcontextprotocol/sdk` for MCP implementation
- Communicates via stdio transport
- Environment-based configuration

## Error Handling

The server implements comprehensive error handling:

- API error reporting
- Invalid tool requests handling
- Connection error management
- Process signal handling

## Dependencies

- `@modelcontextprotocol/sdk`: ^1.0.3
- `dotenv`: ^16.4.7
- `isomorphic-fetch`: ^3.0.0

## Contributing

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

## Security

- API keys are managed through environment variables
- Input validation for all tool parameters
- Error messages are sanitized before output
- Process isolation through MCP protocol

## License

This project is licensed under the ISC License.

## Troubleshooting

Common issues and solutions:

1. **Server Not Found**

   - Verify the path in `claude_desktop_config.json` is correct
   - Ensure the server is built (`npm run build`)
   - Check if Node.js is in your PATH

2. **Authentication Errors**

   - Verify your Perplexity API key in .env
   - Check if the API key has the required permissions

3. **Tool Execution Errors**
   - Verify the tool parameters match the schema
   - Check network connectivity
   - Review server logs for detailed error messages

TDQS

C2.9/5.0

Scored across 2 tools

Disambiguation2/5

Both tools involve querying Perplexity AI, with only subtle differences in description ('simple query' vs 'chat completion'). An agent would likely struggle to decide which to use, as the boundaries are unclear.

Naming Consistency4/5

Both tools follow a consistent 'perplexity_<verb>' pattern. The verbs 'ask' and 'chat' are different but semantically related, and no mixing of naming conventions is present.

Tool Count3/5

With only 2 tools, the server feels minimal for a service like Perplexity AI, which typically offers more nuanced capabilities (e.g., different models, streaming). However, it covers basic query and chat needs.

Completeness3/5

The tool surface covers basic query and chat interactions but lacks operations such as specifying model parameters, context handling, or result streaming. This may limit agent flexibility.

Maintenance

ActivityInactive
ResponsivenessNo issues