{"id":47668856,"url":"https://github.com/jschuller/perplexity-mcp","last_synced_at":"2026-04-02T12:15:45.419Z","repository":{"id":291250852,"uuid":"977078315","full_name":"jschuller/perplexity-mcp","owner":"jschuller","description":"An enhanced MCP server for Perplexity AI that allows Claude Desktop and other MCP clients to search the web using Perplexity's powerful API. This server implements the full range of Perplexity API parameters, providing fine-grained control over search behavior and response generation.","archived":false,"fork":false,"pushed_at":"2026-03-24T23:04:36.000Z","size":72,"stargazers_count":6,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-03-26T03:54:51.252Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://www.npmjs.com/package/@jschuller/perplexity-mcp","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jschuller.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-03T11:28:22.000Z","updated_at":"2026-03-24T23:04:32.000Z","dependencies_parsed_at":"2025-05-10T12:24:59.776Z","dependency_job_id":null,"html_url":"https://github.com/jschuller/perplexity-mcp","commit_stats":null,"previous_names":["jschuller/perplexity-mcp"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/jschuller/perplexity-mcp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jschuller%2Fperplexity-mcp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jschuller%2Fperplexity-mcp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jschuller%2Fperplexity-mcp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jschuller%2Fperplexity-mcp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jschuller","download_url":"https://codeload.github.com/jschuller/perplexity-mcp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jschuller%2Fperplexity-mcp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31305982,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-02T09:48:21.550Z","status":"ssl_error","status_checked_at":"2026-04-02T09:48:19.196Z","response_time":89,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-04-02T12:15:44.788Z","updated_at":"2026-04-02T12:15:45.411Z","avatar_url":"https://github.com/jschuller.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003c!-- mcp-server: perplexity | tools: 1 | transport: stdio | auth: api_key --\u003e\n\n\u003ch1 align=\"center\"\u003ePerplexity MCP Server\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@jschuller/perplexity-mcp\"\u003e\u003cimg src=\"https://img.shields.io/npm/v/@jschuller/perplexity-mcp?color=CB3837\u0026label=npm\" alt=\"npm\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://www.npmjs.com/package/@jschuller/perplexity-mcp\"\u003e\u003cimg src=\"https://img.shields.io/npm/dm/@jschuller/perplexity-mcp?color=CB3837\u0026label=downloads\" alt=\"Downloads\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://nodejs.org/\"\u003e\u003cimg src=\"https://img.shields.io/badge/Node.js-18+-339933\" alt=\"Node.js\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://modelcontextprotocol.io\"\u003e\u003cimg src=\"https://img.shields.io/badge/MCP-SDK%201.x-5436DA\" alt=\"MCP SDK\"\u003e\u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-MIT-blue\" alt=\"License\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/jschuller/perplexity-mcp/actions/workflows/ci.yml\"\u003e\u003cimg src=\"https://github.com/jschuller/perplexity-mcp/actions/workflows/ci.yml/badge.svg\" alt=\"CI\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  Search the web from Claude Desktop, Claude Code, or any MCP client using Perplexity AI —\u003cbr\u003e\n  with fine-grained control over recency, citations, images, and model parameters.\n\u003c/p\u003e\n\n---\n\n## What This Does\n\nThis MCP server connects AI assistants to [Perplexity AI](https://www.perplexity.ai/)'s search API. Ask questions in natural language and get grounded, cited answers from the live web — directly inside Claude or any MCP-compatible client.\n\n**One tool, full control:** `perplexity_search_web` exposes the complete Perplexity API — recency filtering, model selection, temperature, top_k/top_p, citation/image toggles, and streaming.\n\n## Getting Started\n\n### 1. Get a Perplexity API Key\n\nSign up at [perplexity.ai](https://www.perplexity.ai/) and generate an API key from your [account settings](https://www.perplexity.ai/settings/api).\n\n### 2. Install \u0026 Configure\n\n#### Claude Code (Recommended)\n\n```bash\nclaude mcp add perplexity -- npx -y @jschuller/perplexity-mcp\n```\n\nThen set your API key:\n```bash\nexport PERPLEXITY_API_KEY=pplx-your-key-here\n```\n\n#### Claude Desktop\n\nAdd to your `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"perplexity\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@jschuller/perplexity-mcp\"],\n      \"env\": {\n        \"PERPLEXITY_API_KEY\": \"pplx-your-key-here\"\n      }\n    }\n  }\n}\n```\n\nConfig location:\n- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`\n- **Windows:** `%APPDATA%\\Claude\\claude_desktop_config.json`\n\n#### From Source\n\n```bash\ngit clone https://github.com/jschuller/perplexity-mcp.git\ncd perplexity-mcp\nnpm install \u0026\u0026 npm run build\n```\n\n### 3. Verify\n\nAsk Claude: *\"Search the web for the latest developments in quantum computing from the last week\"*\n\n## Tool Reference\n\n### `perplexity_search_web`\n\n| Parameter | Type | Default | Description |\n|---|---|---|---|\n| **`query`** | string | *(required)* | Search query |\n| `recency` | `day` \\| `week` \\| `month` \\| `year` | `month` | Filter results by time period |\n| `model` | string | `sonar` | Perplexity model ([model cards](https://docs.perplexity.ai/guides/model-cards)) |\n| `temperature` | number | — | Randomness (0 = deterministic, 2 = creative) |\n| `max_tokens` | integer | — | Maximum tokens to generate |\n| `top_k` | integer | — | Limit high-probability token pool (0 = disable) |\n| `top_p` | number | — | Nucleus sampling threshold |\n| `frequency_penalty` | number | — | Penalize repeated tokens |\n| `presence_penalty` | number | — | Encourage topic variety |\n| `return_citations` | boolean | `true` | Include source citations |\n| `return_images` | boolean | `false` | Include relevant images |\n| `stream` | boolean | `false` | Stream response incrementally |\n\n## Environment Variables\n\n| Variable | Required | Default | Description |\n|---|---|---|---|\n| `PERPLEXITY_API_KEY` | Yes | — | Your Perplexity API key |\n| `PERPLEXITY_MODEL` | No | `sonar` | Default model for all queries |\n\n## Available Models\n\n- **`sonar`** — Standard model (default)\n- **`sonar-pro`** — Enhanced capabilities\n- See full list: [Perplexity Model Cards](https://docs.perplexity.ai/guides/model-cards)\n\n## Security\n\n- API key stays in your local environment — never sent anywhere except the Perplexity API\n- The server communicates only with `api.perplexity.ai` over HTTPS\n- No data is stored or logged beyond the API request lifecycle\n- See [SECURITY.md](SECURITY.md) for vulnerability reporting\n\n## Troubleshooting\n\n| Issue | Fix |\n|---|---|\n| `PERPLEXITY_API_KEY is required` | Set the env var in your MCP client config or shell |\n| `400 invalid_request_error` | Update to v2.1.0+ (fixes JSON Schema validation with Claude Code) |\n| Server not found | Verify `npx @jschuller/perplexity-mcp` runs without error |\n| Connection timeout | Check internet connectivity and [Perplexity API status](https://status.perplexity.ai/) |\n\n## Contributing\n\nContributions welcome — see [CONTRIBUTING.md](CONTRIBUTING.md).\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjschuller%2Fperplexity-mcp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjschuller%2Fperplexity-mcp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjschuller%2Fperplexity-mcp/lists"}