mcp-perplexity-pro 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/README.md +638 -0
  2. package/bin/mcp-perplexity-pro +8 -0
  3. package/bin/mcp-perplexity-pro-stdio +9 -0
  4. package/dist/claude-code-bridge.d.ts +3 -0
  5. package/dist/claude-code-bridge.d.ts.map +1 -0
  6. package/dist/claude-code-bridge.js +111 -0
  7. package/dist/claude-code-bridge.js.map +1 -0
  8. package/dist/http-index.d.ts +3 -0
  9. package/dist/http-index.d.ts.map +1 -0
  10. package/dist/http-index.js +38 -0
  11. package/dist/http-index.js.map +1 -0
  12. package/dist/http-server.d.ts +33 -0
  13. package/dist/http-server.d.ts.map +1 -0
  14. package/dist/http-server.js +362 -0
  15. package/dist/http-server.js.map +1 -0
  16. package/dist/http-streaming-server.d.ts +4 -0
  17. package/dist/http-streaming-server.d.ts.map +1 -0
  18. package/dist/http-streaming-server.js +514 -0
  19. package/dist/http-streaming-server.js.map +1 -0
  20. package/dist/index.d.ts +3 -0
  21. package/dist/index.d.ts.map +1 -0
  22. package/dist/index.js +43 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/launcher.d.ts +3 -0
  25. package/dist/launcher.d.ts.map +1 -0
  26. package/dist/launcher.js +209 -0
  27. package/dist/launcher.js.map +1 -0
  28. package/dist/mcp-server.d.ts +5 -0
  29. package/dist/mcp-server.d.ts.map +1 -0
  30. package/dist/mcp-server.js +329 -0
  31. package/dist/mcp-server.js.map +1 -0
  32. package/dist/models.d.ts +45 -0
  33. package/dist/models.d.ts.map +1 -0
  34. package/dist/models.js +284 -0
  35. package/dist/models.js.map +1 -0
  36. package/dist/perplexity-api.d.ts +59 -0
  37. package/dist/perplexity-api.d.ts.map +1 -0
  38. package/dist/perplexity-api.js +455 -0
  39. package/dist/perplexity-api.js.map +1 -0
  40. package/dist/port-utils.d.ts +31 -0
  41. package/dist/port-utils.d.ts.map +1 -0
  42. package/dist/port-utils.js +114 -0
  43. package/dist/port-utils.js.map +1 -0
  44. package/dist/project-manager.d.ts +91 -0
  45. package/dist/project-manager.d.ts.map +1 -0
  46. package/dist/project-manager.js +422 -0
  47. package/dist/project-manager.js.map +1 -0
  48. package/dist/simple-streaming.d.ts +26 -0
  49. package/dist/simple-streaming.d.ts.map +1 -0
  50. package/dist/simple-streaming.js +75 -0
  51. package/dist/simple-streaming.js.map +1 -0
  52. package/dist/sse-index.d.ts +3 -0
  53. package/dist/sse-index.d.ts.map +1 -0
  54. package/dist/sse-index.js +38 -0
  55. package/dist/sse-index.js.map +1 -0
  56. package/dist/sse-server.d.ts +4 -0
  57. package/dist/sse-server.d.ts.map +1 -0
  58. package/dist/sse-server.js +208 -0
  59. package/dist/sse-server.js.map +1 -0
  60. package/dist/stdio-bridge.d.ts +21 -0
  61. package/dist/stdio-bridge.d.ts.map +1 -0
  62. package/dist/stdio-bridge.js +157 -0
  63. package/dist/stdio-bridge.js.map +1 -0
  64. package/dist/stdio-server.d.ts +7 -0
  65. package/dist/stdio-server.d.ts.map +1 -0
  66. package/dist/stdio-server.js +396 -0
  67. package/dist/stdio-server.js.map +1 -0
  68. package/dist/storage.d.ts +65 -0
  69. package/dist/storage.d.ts.map +1 -0
  70. package/dist/storage.js +328 -0
  71. package/dist/storage.js.map +1 -0
  72. package/dist/streaming-wrapper.d.ts +63 -0
  73. package/dist/streaming-wrapper.d.ts.map +1 -0
  74. package/dist/streaming-wrapper.js +452 -0
  75. package/dist/streaming-wrapper.js.map +1 -0
  76. package/dist/tools/async.d.ts +28 -0
  77. package/dist/tools/async.d.ts.map +1 -0
  78. package/dist/tools/async.js +167 -0
  79. package/dist/tools/async.js.map +1 -0
  80. package/dist/tools/chat.d.ts +29 -0
  81. package/dist/tools/chat.d.ts.map +1 -0
  82. package/dist/tools/chat.js +233 -0
  83. package/dist/tools/chat.js.map +1 -0
  84. package/dist/tools/projects.d.ts +19 -0
  85. package/dist/tools/projects.d.ts.map +1 -0
  86. package/dist/tools/projects.js +219 -0
  87. package/dist/tools/projects.js.map +1 -0
  88. package/dist/tools/query.d.ts +13 -0
  89. package/dist/tools/query.d.ts.map +1 -0
  90. package/dist/tools/query.js +178 -0
  91. package/dist/tools/query.js.map +1 -0
  92. package/dist/types.d.ts +330 -0
  93. package/dist/types.d.ts.map +1 -0
  94. package/dist/types.js +90 -0
  95. package/dist/types.js.map +1 -0
  96. package/package.json +89 -0
@@ -0,0 +1,209 @@
1
+ #!/usr/bin/env node
2
+ import { spawn, execSync } from 'child_process';
3
+ import { existsSync, statSync, readdirSync } from 'fs';
4
+ import { join, dirname } from 'path';
5
+ import { fileURLToPath } from 'url';
6
+ import { discoverMcpPort } from './port-utils.js';
7
+ const __filename = fileURLToPath(import.meta.url);
8
+ const __dirname = dirname(__filename);
9
+ const projectRoot = dirname(__dirname);
10
+ function log(message) {
11
+ console.error(`[mcp-perplexity-pro] ${message}`);
12
+ }
13
+ function checkBuildNeeded() {
14
+ const distPath = join(projectRoot, 'dist');
15
+ const srcPath = join(projectRoot, 'src');
16
+ // If dist doesn't exist, build is needed
17
+ if (!existsSync(distPath)) {
18
+ log('dist/ directory not found, build required');
19
+ return true;
20
+ }
21
+ // Check if any src file is newer than corresponding dist file
22
+ try {
23
+ const srcFiles = readdirSync(srcPath).filter(f => f.endsWith('.ts'));
24
+ const distFiles = readdirSync(distPath).filter(f => f.endsWith('.js'));
25
+ // If different number of files, build needed
26
+ if (srcFiles.length === 0) {
27
+ log('No TypeScript files found in src/');
28
+ return true;
29
+ }
30
+ if (distFiles.length === 0) {
31
+ log('No compiled JavaScript files found in dist/');
32
+ return true;
33
+ }
34
+ // Check timestamps - find newest src file and oldest dist file
35
+ let newestSrcTime = 0;
36
+ let oldestDistTime = Infinity;
37
+ for (const file of srcFiles) {
38
+ const srcStat = statSync(join(srcPath, file));
39
+ newestSrcTime = Math.max(newestSrcTime, srcStat.mtimeMs);
40
+ }
41
+ for (const file of distFiles) {
42
+ const distStat = statSync(join(distPath, file));
43
+ oldestDistTime = Math.min(oldestDistTime, distStat.mtimeMs);
44
+ }
45
+ if (newestSrcTime > oldestDistTime) {
46
+ log('Source files newer than compiled files, build required');
47
+ return true;
48
+ }
49
+ return false;
50
+ }
51
+ catch (error) {
52
+ log(`Error checking build status: ${error}`);
53
+ return true; // If we can't determine, err on side of building
54
+ }
55
+ }
56
+ function runBuild() {
57
+ log('Building MCP server...');
58
+ try {
59
+ execSync('npm run build', {
60
+ cwd: projectRoot,
61
+ stdio: 'inherit',
62
+ timeout: 120000, // 2 minute timeout
63
+ });
64
+ log('Build completed successfully');
65
+ }
66
+ catch (error) {
67
+ log(`Build failed: ${error}`);
68
+ process.exit(1);
69
+ }
70
+ }
71
+ function parseArgs() {
72
+ const args = process.argv.slice(2);
73
+ let httpPort = 8124; // Default port for Claude Code
74
+ let debugMode = false;
75
+ let clientMode = 'stdio'; // Default to stdio mode
76
+ for (const arg of args) {
77
+ if (arg.startsWith('--http-port=')) {
78
+ const portStr = arg.split('=')[1];
79
+ const port = parseInt(portStr, 10);
80
+ if (isNaN(port) || port <= 0 || port > 65535) {
81
+ log(`Invalid port number: ${portStr}`);
82
+ process.exit(1);
83
+ }
84
+ httpPort = port;
85
+ }
86
+ else if (arg.startsWith('--port=')) {
87
+ // Alternative port syntax
88
+ const portStr = arg.split('=')[1];
89
+ const port = parseInt(portStr, 10);
90
+ if (isNaN(port) || port <= 0 || port > 65535) {
91
+ log(`Invalid port number: ${portStr}`);
92
+ process.exit(1);
93
+ }
94
+ httpPort = port;
95
+ }
96
+ else if (arg === '--debug-mode') {
97
+ debugMode = true;
98
+ }
99
+ else if (arg === '--http-client') {
100
+ clientMode = 'http';
101
+ }
102
+ else if (arg === '--help' || arg === '-h') {
103
+ console.log(`
104
+ mcp-perplexity-pro - Perplexity API MCP Server
105
+
106
+ Usage:
107
+ mcp-perplexity-pro # Start HTTP server on port 8124 (for Claude Code)
108
+ mcp-perplexity-pro --http-port=8125 # Start HTTP server on port 8125 (for Claude Desktop)
109
+ mcp-perplexity-pro --debug-mode # Enable debug logging to stdout
110
+
111
+ Environment Variables:
112
+ PERPLEXITY_API_KEY # Required: Your Perplexity API key
113
+ DEFAULT_MODEL # Optional: Default model (default: sonar-reasoning-pro)
114
+ PROJECT_ROOT # Optional: Project root directory
115
+ STORAGE_PATH # Optional: Storage subdirectory (default: .perplexity)
116
+ `);
117
+ process.exit(0);
118
+ }
119
+ }
120
+ return { httpPort, debugMode, clientMode };
121
+ }
122
+ function startServer(httpPort) {
123
+ const distPath = join(projectRoot, 'dist');
124
+ // Always use HTTP mode - start the HTTP server
125
+ log(`Starting HTTP server on port ${httpPort}...`);
126
+ const serverPath = join(distPath, 'index.js');
127
+ if (!existsSync(serverPath)) {
128
+ log(`Server file not found: ${serverPath}`);
129
+ process.exit(1);
130
+ }
131
+ const serverProcess = spawn('node', [serverPath, `--port=${httpPort}`], {
132
+ stdio: 'inherit',
133
+ env: { ...process.env },
134
+ cwd: projectRoot,
135
+ });
136
+ serverProcess.on('error', error => {
137
+ log(`Failed to start HTTP server: ${error}`);
138
+ process.exit(1);
139
+ });
140
+ serverProcess.on('exit', code => {
141
+ if (code !== 0) {
142
+ log(`HTTP server exited with code ${code}`);
143
+ process.exit(code || 1);
144
+ }
145
+ });
146
+ // Handle graceful shutdown
147
+ process.on('SIGINT', () => {
148
+ log('Shutting down HTTP server...');
149
+ serverProcess.kill('SIGINT');
150
+ });
151
+ process.on('SIGTERM', () => {
152
+ log('Shutting down HTTP server...');
153
+ serverProcess.kill('SIGTERM');
154
+ });
155
+ }
156
+ async function main() {
157
+ const { httpPort: preferredPort, debugMode, clientMode } = parseArgs();
158
+ // Set debug mode environment variable for child processes
159
+ if (debugMode) {
160
+ process.env.MCP_DEBUG_MODE = 'true';
161
+ }
162
+ // Discover the best port to use (check for existing servers or find available)
163
+ let discovery;
164
+ try {
165
+ discovery = await discoverMcpPort(preferredPort);
166
+ if (discovery.isExistingServer) {
167
+ if (clientMode === 'http') {
168
+ // For HTTP client mode (Claude Code), output connection URL to stdout and exit
169
+ console.log(`http://localhost:${discovery.port}`);
170
+ process.exit(0);
171
+ }
172
+ else {
173
+ // For stdio mode (Claude Desktop), log and exit as before
174
+ log(`Found existing healthy MCP server on port ${discovery.port}`);
175
+ log(`Clients can connect to: http://localhost:${discovery.port}`);
176
+ log(`This instance will exit as the shared server is already running.`);
177
+ process.exit(0);
178
+ }
179
+ }
180
+ else {
181
+ log(`No existing MCP server found. Starting new server on port ${discovery.port}`);
182
+ }
183
+ }
184
+ catch (error) {
185
+ log(`Port discovery failed: ${error}`);
186
+ log(`Attempting to use preferred port ${preferredPort}`);
187
+ discovery = { port: preferredPort, isExistingServer: false };
188
+ }
189
+ // Check if build is needed (skip if we're already in a build process)
190
+ if (!process.env.npm_lifecycle_event && checkBuildNeeded()) {
191
+ runBuild();
192
+ }
193
+ // Start the HTTP server on the discovered port
194
+ startServer(discovery.port);
195
+ }
196
+ // Handle unhandled errors
197
+ process.on('uncaughtException', error => {
198
+ log(`Uncaught exception: ${error}`);
199
+ process.exit(1);
200
+ });
201
+ process.on('unhandledRejection', error => {
202
+ log(`Unhandled rejection: ${error}`);
203
+ process.exit(1);
204
+ });
205
+ main().catch(error => {
206
+ log(`Launcher error: ${error}`);
207
+ process.exit(1);
208
+ });
209
+ //# sourceMappingURL=launcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"launcher.js","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
2
+ import { z } from 'zod';
3
+ import { configSchema } from './types.js';
4
+ export declare function setupMCPServer(server: Server, config: z.infer<typeof configSchema>): void;
5
+ //# sourceMappingURL=mcp-server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.d.ts","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAY1C,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,QAiVlF"}
@@ -0,0 +1,329 @@
1
+ import { CallToolRequestSchema, ListToolsRequestSchema } from '@modelcontextprotocol/sdk/types.js';
2
+ import { handleAskPerplexity, handleResearchPerplexity } from './tools/query.js';
3
+ import { handleChatPerplexity, handleListChats, handleReadChat, handleStorageStats, } from './tools/chat.js';
4
+ import { handleAsyncPerplexity, handleCheckAsync, handleListAsyncJobs } from './tools/async.js';
5
+ import { handleListProjects, handleDeleteProject } from './tools/projects.js';
6
+ import { getModelSummary } from './models.js';
7
+ export function setupMCPServer(server, config) {
8
+ // List available tools
9
+ server.setRequestHandler(ListToolsRequestSchema, async () => ({
10
+ tools: [
11
+ {
12
+ name: 'ask_perplexity',
13
+ description: 'Query Perplexity with automatic model selection based on complexity.',
14
+ inputSchema: {
15
+ type: 'object',
16
+ properties: {
17
+ query: { type: 'string', description: 'Your question or prompt' },
18
+ project_name: {
19
+ type: 'string',
20
+ description: 'Project name for organizing conversations (auto-detected if not provided)',
21
+ },
22
+ model: {
23
+ type: 'string',
24
+ enum: [
25
+ 'sonar',
26
+ 'sonar-pro',
27
+ 'sonar-reasoning',
28
+ 'sonar-reasoning-pro',
29
+ 'sonar-deep-research',
30
+ ],
31
+ description: 'Override default model',
32
+ },
33
+ temperature: {
34
+ type: 'number',
35
+ minimum: 0,
36
+ maximum: 1,
37
+ description: '0.0-1.0, default 0.2',
38
+ },
39
+ max_tokens: { type: 'number', minimum: 1, description: 'Maximum response length' },
40
+ search_domain_filter: {
41
+ type: 'array',
42
+ items: { type: 'string' },
43
+ description: 'Limit search to specific domains',
44
+ },
45
+ return_images: { type: 'boolean', description: 'Include images in response' },
46
+ return_related_questions: {
47
+ type: 'boolean',
48
+ description: 'Include related questions',
49
+ },
50
+ save_report: {
51
+ type: 'boolean',
52
+ description: 'Save response as a report to project directory',
53
+ },
54
+ },
55
+ required: ['query'],
56
+ },
57
+ },
58
+ {
59
+ name: 'research_perplexity',
60
+ description: 'Conduct comprehensive research using sonar-deep-research model.',
61
+ inputSchema: {
62
+ type: 'object',
63
+ properties: {
64
+ topic: { type: 'string', description: 'Research topic or question' },
65
+ project_name: {
66
+ type: 'string',
67
+ description: 'Project name for organizing research reports (auto-detected if not provided)',
68
+ },
69
+ save_report: { type: 'boolean', description: 'Save report to project directory' },
70
+ model: {
71
+ type: 'string',
72
+ enum: [
73
+ 'sonar',
74
+ 'sonar-pro',
75
+ 'sonar-reasoning',
76
+ 'sonar-reasoning-pro',
77
+ 'sonar-deep-research',
78
+ ],
79
+ description: 'Override default model (defaults to sonar-deep-research)',
80
+ },
81
+ max_tokens: { type: 'number', minimum: 1, description: 'Maximum response length' },
82
+ },
83
+ required: ['topic'],
84
+ },
85
+ },
86
+ {
87
+ name: 'chat_perplexity',
88
+ description: 'Maintain conversations with Perplexity stored in project directory.',
89
+ inputSchema: {
90
+ type: 'object',
91
+ properties: {
92
+ message: { type: 'string', description: 'Your message' },
93
+ project_name: {
94
+ type: 'string',
95
+ description: 'Project name for organizing conversations (auto-detected if not provided)',
96
+ },
97
+ chat_id: { type: 'string', description: 'Continue existing conversation' },
98
+ title: { type: 'string', description: 'Required for new chat - conversation title' },
99
+ model: {
100
+ type: 'string',
101
+ enum: [
102
+ 'sonar',
103
+ 'sonar-pro',
104
+ 'sonar-reasoning',
105
+ 'sonar-reasoning-pro',
106
+ 'sonar-deep-research',
107
+ ],
108
+ description: 'Override default model',
109
+ },
110
+ temperature: {
111
+ type: 'number',
112
+ minimum: 0,
113
+ maximum: 1,
114
+ description: '0.0-1.0, default 0.2',
115
+ },
116
+ max_tokens: { type: 'number', minimum: 1, description: 'Maximum response length' },
117
+ save_report: { type: 'boolean', description: 'Save conversation to project directory' },
118
+ },
119
+ required: ['message'],
120
+ },
121
+ },
122
+ {
123
+ name: 'async_perplexity',
124
+ description: 'Create async jobs for complex queries that may take longer to process.',
125
+ inputSchema: {
126
+ type: 'object',
127
+ properties: {
128
+ query: { type: 'string', description: 'Your question or prompt' },
129
+ model: {
130
+ type: 'string',
131
+ enum: [
132
+ 'sonar',
133
+ 'sonar-pro',
134
+ 'sonar-reasoning',
135
+ 'sonar-reasoning-pro',
136
+ 'sonar-deep-research',
137
+ ],
138
+ description: 'Override default model',
139
+ },
140
+ temperature: {
141
+ type: 'number',
142
+ minimum: 0,
143
+ maximum: 1,
144
+ description: '0.0-1.0, default 0.2',
145
+ },
146
+ max_tokens: { type: 'number', minimum: 1, description: 'Maximum response length' },
147
+ },
148
+ required: ['query'],
149
+ },
150
+ },
151
+ {
152
+ name: 'check_async_perplexity',
153
+ description: 'Check status and retrieve results of async Perplexity jobs.',
154
+ inputSchema: {
155
+ type: 'object',
156
+ properties: {
157
+ job_id: { type: 'string', description: 'Async job identifier' },
158
+ },
159
+ required: ['job_id'],
160
+ },
161
+ },
162
+ {
163
+ name: 'list_async_jobs',
164
+ description: 'List all async Perplexity jobs with status and timing information.',
165
+ inputSchema: {
166
+ type: 'object',
167
+ properties: {
168
+ project_name: {
169
+ type: 'string',
170
+ description: 'Project name (auto-detected if not provided)',
171
+ },
172
+ limit: {
173
+ type: 'number',
174
+ minimum: 1,
175
+ maximum: 100,
176
+ description: 'Maximum number of jobs to return (default: 20)',
177
+ },
178
+ next_token: { type: 'string', description: 'Token for pagination' },
179
+ },
180
+ },
181
+ },
182
+ {
183
+ name: 'list_chats_perplexity',
184
+ description: 'List all conversations stored in the current project.',
185
+ inputSchema: {
186
+ type: 'object',
187
+ properties: {
188
+ project_name: {
189
+ type: 'string',
190
+ description: 'Project name (auto-detected if not provided)',
191
+ },
192
+ },
193
+ },
194
+ },
195
+ {
196
+ name: 'read_chat_perplexity',
197
+ description: 'Retrieve complete conversation history from project storage.',
198
+ inputSchema: {
199
+ type: 'object',
200
+ properties: {
201
+ chat_id: { type: 'string', description: 'Conversation identifier' },
202
+ },
203
+ required: ['chat_id'],
204
+ },
205
+ },
206
+ {
207
+ name: 'storage_stats_perplexity',
208
+ description: "Get storage statistics for the current project's Perplexity data.",
209
+ inputSchema: {
210
+ type: 'object',
211
+ properties: {
212
+ project_name: {
213
+ type: 'string',
214
+ description: 'Project name (auto-detected if not provided)',
215
+ },
216
+ },
217
+ },
218
+ },
219
+ {
220
+ name: 'list_projects_perplexity',
221
+ description: 'List all existing projects with optional detailed statistics.',
222
+ inputSchema: {
223
+ type: 'object',
224
+ properties: {
225
+ detailed: {
226
+ type: 'boolean',
227
+ description: 'Include detailed statistics for each project',
228
+ },
229
+ },
230
+ },
231
+ },
232
+ {
233
+ name: 'delete_project_perplexity',
234
+ description: 'Safely delete a project and all its data.',
235
+ inputSchema: {
236
+ type: 'object',
237
+ properties: {
238
+ project_name: {
239
+ type: 'string',
240
+ description: 'Name of the project to delete (all data will be permanently removed)',
241
+ },
242
+ confirm: {
243
+ type: 'boolean',
244
+ description: 'Confirmation that you want to permanently delete all project data',
245
+ },
246
+ },
247
+ required: ['project_name', 'confirm'],
248
+ },
249
+ },
250
+ {
251
+ name: 'model_info_perplexity',
252
+ description: 'Get detailed information about available Perplexity models.',
253
+ inputSchema: {
254
+ type: 'object',
255
+ properties: {},
256
+ },
257
+ },
258
+ ],
259
+ }));
260
+ // Handle tool execution
261
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
262
+ const { name, arguments: args } = request.params;
263
+ try {
264
+ switch (name) {
265
+ case 'ask_perplexity': {
266
+ const result = await handleAskPerplexity(args, config);
267
+ // handleAskPerplexity returns MCP format, pass through
268
+ return result;
269
+ }
270
+ case 'research_perplexity': {
271
+ const result = await handleResearchPerplexity(args, config);
272
+ // research_perplexity returns raw data, need to wrap in MCP format
273
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
274
+ }
275
+ case 'chat_perplexity': {
276
+ const result = await handleChatPerplexity(args, config);
277
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
278
+ }
279
+ case 'async_perplexity': {
280
+ const result = await handleAsyncPerplexity(args, config);
281
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
282
+ }
283
+ case 'check_async_perplexity': {
284
+ const result = await handleCheckAsync(args, config);
285
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
286
+ }
287
+ case 'list_async_jobs': {
288
+ const { limit, next_token } = args;
289
+ const result = await handleListAsyncJobs(config, limit, next_token);
290
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
291
+ }
292
+ case 'list_chats_perplexity': {
293
+ const result = await handleListChats(config);
294
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
295
+ }
296
+ case 'read_chat_perplexity': {
297
+ const result = await handleReadChat(args, config);
298
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
299
+ }
300
+ case 'storage_stats_perplexity': {
301
+ const result = await handleStorageStats(config);
302
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
303
+ }
304
+ case 'list_projects_perplexity': {
305
+ const result = await handleListProjects(args, config);
306
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
307
+ }
308
+ case 'delete_project_perplexity': {
309
+ const result = await handleDeleteProject(args, config);
310
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
311
+ }
312
+ case 'model_info_perplexity': {
313
+ const result = getModelSummary();
314
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
315
+ }
316
+ default:
317
+ throw new Error(`Unknown tool: ${name}`);
318
+ }
319
+ }
320
+ catch (error) {
321
+ const errorMessage = error instanceof Error ? error.message : String(error);
322
+ return {
323
+ content: [{ type: 'text', text: JSON.stringify({ error: errorMessage }, null, 2) }],
324
+ isError: true,
325
+ };
326
+ }
327
+ });
328
+ }
329
+ //# sourceMappingURL=mcp-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp-server.js","sourceRoot":"","sources":["../src/mcp-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import type { ModelRegistry, PerplexityModel, ModelCapability } from './types.js';
2
+ export declare const MODEL_REGISTRY: ModelRegistry;
3
+ /**
4
+ * Intelligent model selection based on query characteristics
5
+ * Analyzes the query content and selects the most appropriate model
6
+ */
7
+ export declare function selectOptimalModel(query: string, explicitModel?: PerplexityModel, defaultModel?: PerplexityModel): PerplexityModel;
8
+ /**
9
+ * Validates if a model name is supported
10
+ */
11
+ export declare function isValidModel(model: string): model is PerplexityModel;
12
+ /**
13
+ * Gets model information by name
14
+ */
15
+ export declare function getModelInfo(model: PerplexityModel): ModelCapability;
16
+ /**
17
+ * Gets model capabilities in boolean format for compatibility
18
+ */
19
+ export declare function getModelCapabilities(model: string): {
20
+ search: boolean;
21
+ reasoning: boolean;
22
+ realTime: boolean;
23
+ research: boolean;
24
+ } | undefined;
25
+ /**
26
+ * Suggests a fallback model based on the original model and context
27
+ */
28
+ export declare function suggestFallbackModel(originalModel: PerplexityModel, errorType?: string): PerplexityModel;
29
+ /**
30
+ * Gets all models of a specific type
31
+ */
32
+ export declare function getModelsByType(type: 'search' | 'reasoning' | 'research'): PerplexityModel[];
33
+ /**
34
+ * Gets model recommendations based on use case
35
+ */
36
+ export declare function getModelRecommendations(useCase: string): PerplexityModel[];
37
+ /**
38
+ * Formats model information for display
39
+ */
40
+ export declare function formatModelInfo(model: PerplexityModel): string;
41
+ /**
42
+ * Gets a summary of all available models
43
+ */
44
+ export declare function getModelSummary(): string;
45
+ //# sourceMappingURL=models.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../src/models.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAGlF,eAAO,MAAM,cAAc,EAAE,aAqG5B,CAAC;AAEF;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,eAAe,EAC/B,YAAY,GAAE,eAAuC,GACpD,eAAe,CAyGjB;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,eAAe,CAEpE;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,eAAe,CAEpE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,GACZ;IAAE,MAAM,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GAAG,SAAS,CAO3F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,eAAe,EAC9B,SAAS,CAAC,EAAE,MAAM,GACjB,eAAe,CA4BjB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,eAAe,EAAE,CAI5F;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,EAAE,CAW1E;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAG9D;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,MAAM,CAMxC"}