https://github.com/mishamyrt/perplexity-web-api-mcp
🔍 Perplexity AI MCP without API key
https://github.com/mishamyrt/perplexity-web-api-mcp
ai claude-desktop codex cursor-ai mcp mcp-server openclaw perplexity perplexity-mcp-server reverse-engineering
Last synced: 3 months ago
JSON representation
🔍 Perplexity AI MCP without API key
- Host: GitHub
- URL: https://github.com/mishamyrt/perplexity-web-api-mcp
- Owner: mishamyrt
- License: mit
- Created: 2026-01-07T22:08:18.000Z (6 months ago)
- Default Branch: master
- Last Pushed: 2026-03-26T22:07:48.000Z (3 months ago)
- Last Synced: 2026-03-27T10:13:48.334Z (3 months ago)
- Topics: ai, claude-desktop, codex, cursor-ai, mcp, mcp-server, openclaw, perplexity, perplexity-mcp-server, reverse-engineering
- Language: Rust
- Homepage: https://mishamyrt.github.io/perplexity-web-api-mcp/
- Size: 162 KB
- Stars: 35
- Watchers: 0
- Forks: 7
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
# Perplexity Web API MCP Server
MCP (Model Context Protocol) server that exposes Perplexity AI search, research, and reasoning capabilities as tools.
## No API Key Required
This MCP server uses your Perplexity account session directly — **no API key needed**.
Perplexity offers a separate [paid API](https://docs.perplexity.ai/guides/pricing) with per-request pricing that is charged independently from your Pro subscription. With this MCP, you don't need to pay for API access — your existing Perplexity subscription (or even a free account) is enough.
Simply extract the session tokens from your browser cookies, and you're ready to use Perplexity search, research, and reasoning in your IDE.
## Tokenless Mode
The server can run **without any authentication tokens**. In this mode:
- Only `perplexity_search` (links only) and `perplexity_ask` (answer with sources) are available — `perplexity_research` and `perplexity_reason` require tokens.
- Both tools use the `turbo` model; `PERPLEXITY_ASK_MODEL` and `PERPLEXITY_REASON_MODEL` cannot be set (the server will throw an error if they are).
- File attachments (`files` parameter) are unavailable — they require tokens.
To use tokenless mode, simply omit `PERPLEXITY_SESSION_TOKEN` and `PERPLEXITY_CSRF_TOKEN` from your configuration.
For full access to all tools and model selection, provide both tokens as described in the [Configuration](#configuration) section below.
## Requirements
### Supported Platforms
- macOS (arm64, x86_64)
- Linux (x86_64, aarch64)
- Windows (x86_64)
## Configuration
### Getting Your Tokens
This server requires a Perplexity AI account. You need to extract two authentication tokens from your browser cookies:
1. Log in to [perplexity.ai](https://www.perplexity.ai) in your browser
2. Open Developer Tools (F12 or right-click → Inspect)
3. Go to Application → Cookies → `https://www.perplexity.ai`
4. Copy the values of:
- `__Secure-next-auth.session-token` → use as `PERPLEXITY_SESSION_TOKEN`
- `next-auth.csrf-token` → use as `PERPLEXITY_CSRF_TOKEN`
### Environment Variables
- `PERPLEXITY_SESSION_TOKEN` (optional): Perplexity session token (`next-auth.session-token` cookie). Required for `perplexity_research`, `perplexity_reason`, and file attachments.
- `PERPLEXITY_CSRF_TOKEN` (optional): Perplexity CSRF token (`next-auth.csrf-token` cookie). Required for `perplexity_research`, `perplexity_reason`, and file attachments.
- `PERPLEXITY_ASK_MODEL` (optional, requires tokens): Model for `perplexity_ask`.
Valid values:
- `turbo` (default for tokenless)
- `pro-auto` (default for authenticated)
- `sonar`
- `gpt-5.4`
- `claude-4.6-sonnet`
- `nemotron-3-super`
- `PERPLEXITY_REASON_MODEL` (optional, requires tokens): Model for `perplexity_reason`.
Valid values:
- `gemini-3.1-pro` (default)
- `gpt-5.4-thinking`
- `claude-4.6-sonnet-thinking`
### Claude Code
```bash
claude mcp add perplexity --env PERPLEXITY_SESSION_TOKEN="your-session-token" --env PERPLEXITY_CSRF_TOKEN="your-csrf-token" -- npx -y perplexity-web-api-mcp
```
### Cursor, Claude Desktop & Windsurf
I recommend using the one-click install badge at the top of this README for Cursor.
For manual setup, all these clients use the same `mcpServers` format:
| Client | Config File |
|--------|-------------|
| Cursor | `~/.cursor/mcp.json` |
| Claude Desktop | `claude_desktop_config.json` |
| Windsurf | `~/.codeium/windsurf/mcp_config.json` |
```json
{
"mcpServers": {
"perplexity": {
"command": "npx",
"args": ["-y", "perplexity-web-api-mcp"],
"env": {
"PERPLEXITY_SESSION_TOKEN": "your-session-token",
"PERPLEXITY_CSRF_TOKEN": "your-csrf-token"
}
}
}
}
```
### Zed
Add following following to `context_servers` in your [settings file](https://zed.dev/docs/configuring-zed.html#settings-files):
```json
{
"context_servers": {
"perplexity": {
"command": "npx",
"args": ["-y", "perplexity-web-api-mcp"],
"env": {
"PERPLEXITY_SESSION_TOKEN": "your-session-token",
"PERPLEXITY_CSRF_TOKEN": "your-csrf-token"
}
}
}
}
```
### VS Code
I recommend using the one-click install badge at the top of this README for VS Code, or for manual setup, add to `.vscode/mcp.json`:
```json
{
"servers": {
"perplexity": {
"type": "stdio",
"command": "npx",
"args": ["-y", "perplexity-web-api-mcp"],
"env": {
"PERPLEXITY_SESSION_TOKEN": "your-session-token",
"PERPLEXITY_CSRF_TOKEN": "your-csrf-token"
}
}
}
}
```
### Codex
```bash
codex mcp add perplexity --env PERPLEXITY_SESSION_TOKEN="your-session-token" --env PERPLEXITY_CSRF_TOKEN="your-csrf-token" -- npx -y perplexity-web-api-mcp
```
### Other MCP Clients
Most clients can be manually configured to use the `mcpServers` wrapper in their configuration file (like Cursor). If your client doesn't work, check its documentation for the correct wrapper format.
## Docker
A pre-built multi-arch image (`linux/amd64`, `linux/arm64`) is available on Docker Hub:
```bash
docker run -d \
-p 8080:8080 \
-e PERPLEXITY_SESSION_TOKEN="your-session-token" \
-e PERPLEXITY_CSRF_TOKEN="your-csrf-token" \
mishamyrt/perplexity-web-api-mcp
```
The container exposes the MCP server via Streamable HTTP at `http://localhost:8080/mcp`.
Configure your MCP client to connect:
```json
{
"mcpServers": {
"perplexity": {
"url": "http://localhost:8080/mcp"
}
}
}
```
### Environment Variables (Docker-specific)
| Variable | Default | Description |
|----------|---------|-------------|
| `MCP_TRANSPORT` | `streamable-http` | Transport mode. `stdio` or `streamable-http` |
| `MCP_HOST` | `0.0.0.0` | Host address to bind |
| `MCP_PORT` | `8080` | Port to listen on |
The [authentication tokens and model variables](#configuration) described above work the same way in Docker.
## Available Tools
### `perplexity_search`
Quick web search using the `turbo` model. Returns only links, titles, and snippets — no generated answer.
**Best for:** Finding relevant URLs and sources quickly.
**Parameters:**
- `query` (required): The search query or question
- `sources` (optional): Array of sources — `"web"`, `"scholar"`, `"social"`. Defaults to `["web"]`
- `language` (optional): Language code, e.g., `"en-US"`. Defaults to `"en-US"`
> File attachments are not supported by this tool.
### `perplexity_ask`
Ask Perplexity AI a question and get a comprehensive answer with source citations. By default uses the best model (Pro auto mode) when authentication tokens are provided, or `turbo` in tokenless mode. Can be configured via `PERPLEXITY_ASK_MODEL`.
**Best for:** Getting detailed answers to questions with web context.
**Parameters:** Same as `perplexity_search`, plus:
- `files` (optional, requires tokens): Array of file attachments for document analysis. See [File Attachments](#file-attachments).
### `perplexity_reason`
Advanced reasoning and problem-solving. By default uses Perplexity's `sonar-reasoning` model, but can be configured via `PERPLEXITY_REASON_MODEL`.
**Best for:** Logical problems, complex analysis, decision-making, and tasks requiring step-by-step reasoning.
**Parameters:** Same as `perplexity_ask`.
### `perplexity_research`
Deep, comprehensive research using Perplexity's sonar-deep-research (`pplx_alpha`) model.
**Best for:** Complex topics requiring detailed investigation, comprehensive reports, and in-depth analysis. Provides thorough analysis with citations.
**Parameters:** Same as `perplexity_ask`.
## File Attachments
`perplexity_ask`, `perplexity_research`, and `perplexity_reason` accept an optional `files` parameter for document analysis. **Requires authentication tokens.**
Each entry in the `files` array must have:
- `filename` (required): Filename with extension, e.g. `"report.pdf"` or `"notes.txt"`
- `text` (mutually exclusive with `data`): Plain-text file content. Use for `.txt`, `.md`, `.csv`, `.json`, source code, etc.
- `data` (mutually exclusive with `text`): Base64-encoded binary content. Use for `.pdf`, `.docx`, images, etc.
**Example — plain text:**
```json
{
"query": "Summarise the key points",
"files": [
{
"filename": "notes.txt",
"text": "Meeting notes: Q1 revenue up 12%..."
}
]
}
```
**Example — binary file (PDF):**
```json
{
"query": "What does this contract say about termination?",
"files": [
{
"filename": "contract.pdf",
"data": "JVBERi0xLjQK..."
}
]
}
```
Multiple files can be passed in a single request — they are uploaded to Perplexity's storage in parallel before the query is sent.
## Response Format
`perplexity_search` returns only web results:
```json
{
"web_results": [
{
"name": "Source name",
"url": "https://example.com",
"snippet": "Source snippet"
}
]
}
```
`perplexity_ask`, `perplexity_research`, and `perplexity_reason` return a full response:
```json
{
"answer": "The generated answer text...",
"web_results": [
{
"name": "Source name",
"url": "https://example.com",
"snippet": "Source snippet"
}
],
"follow_up": {
"backend_uuid": "uuid-for-follow-up-queries",
"attachments": []
}
}
```
## License
MIT