@parseable/parseable-mcp-server
Advanced tools
+2
-1
@@ -5,2 +5,3 @@ export interface ClientTarget { | ||
| configPath: string; | ||
| configKey: "mcpServers" | "servers"; | ||
| } | ||
@@ -15,3 +16,3 @@ export interface InitArgs { | ||
| export declare function parseInitArgs(argv: string[]): InitArgs; | ||
| export declare function mergeConfig(existing: Record<string, unknown>, creds: { | ||
| export declare function mergeConfig(existing: Record<string, unknown>, configKey: "mcpServers" | "servers", creds: { | ||
| url: string; | ||
@@ -18,0 +19,0 @@ username: string; |
+109
-83
@@ -1,21 +0,48 @@ | ||
| import { existsSync } from "node:fs"; | ||
| import { mkdir, readFile, writeFile } from "node:fs/promises"; | ||
| import { copyFileSync, existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs"; | ||
| import { homedir, platform } from "node:os"; | ||
| import { dirname, join } from "node:path"; | ||
| import { createInterface } from "node:readline/promises"; | ||
| import inquirer from "inquirer"; | ||
| export function getClientTargets(home = homedir(), plat = platform()) { | ||
| const targets = []; | ||
| let claudePath; | ||
| if (plat === "darwin") { | ||
| claudePath = join(home, "Library", "Application Support", "Claude", "claude_desktop_config.json"); | ||
| } | ||
| else if (plat === "win32") { | ||
| claudePath = join(process.env.APPDATA ?? home, "Claude", "claude_desktop_config.json"); | ||
| } | ||
| else { | ||
| claudePath = join(home, ".config", "Claude", "claude_desktop_config.json"); | ||
| } | ||
| targets.push({ id: "claude-desktop", name: "Claude Desktop", configPath: claudePath }); | ||
| targets.push({ id: "cursor", name: "Cursor", configPath: join(home, ".cursor", "mcp.json") }); | ||
| return targets; | ||
| const claudeDesktopPath = plat === "darwin" | ||
| ? join(home, "Library", "Application Support", "Claude", "claude_desktop_config.json") | ||
| : plat === "win32" | ||
| ? join(process.env.APPDATA ?? home, "Claude", "claude_desktop_config.json") | ||
| : join(home, ".config", "Claude", "claude_desktop_config.json"); | ||
| const vscodeBaseDir = (variant) => plat === "darwin" | ||
| ? join(home, "Library", "Application Support", variant, "User", "mcp.json") | ||
| : plat === "win32" | ||
| ? join(process.env.APPDATA ?? home, variant, "User", "mcp.json") | ||
| : join(home, ".config", variant, "User", "mcp.json"); | ||
| return [ | ||
| { | ||
| id: "claude-code", | ||
| name: "Claude Code", | ||
| configPath: join(home, ".claude.json"), | ||
| configKey: "mcpServers", | ||
| }, | ||
| { | ||
| id: "claude-desktop", | ||
| name: "Claude for Desktop", | ||
| configPath: claudeDesktopPath, | ||
| configKey: "mcpServers", | ||
| }, | ||
| { | ||
| id: "cursor", | ||
| name: "Cursor", | ||
| configPath: join(home, ".cursor", "mcp.json"), | ||
| configKey: "mcpServers", | ||
| }, | ||
| { | ||
| id: "vscode", | ||
| name: "VS Code", | ||
| configPath: vscodeBaseDir("Code"), | ||
| configKey: "servers", | ||
| }, | ||
| { | ||
| id: "vscode-insiders", | ||
| name: "VS Code Insiders", | ||
| configPath: vscodeBaseDir("Code - Insiders"), | ||
| configKey: "servers", | ||
| }, | ||
| ]; | ||
| } | ||
@@ -37,3 +64,3 @@ export function parseInitArgs(argv) { | ||
| } | ||
| export function mergeConfig(existing, creds) { | ||
| export function mergeConfig(existing, configKey, creds) { | ||
| const entry = { | ||
@@ -48,95 +75,94 @@ command: "npx", | ||
| }; | ||
| const servers = existing.mcpServers ?? {}; | ||
| const servers = existing[configKey] ?? {}; | ||
| servers.parseable = entry; | ||
| return { ...existing, mcpServers: servers }; | ||
| return { ...existing, [configKey]: servers }; | ||
| } | ||
| async function writeClientConfig(target, creds) { | ||
| function writeClientConfig(target, creds) { | ||
| let existing = {}; | ||
| if (existsSync(target.configPath)) { | ||
| const raw = await readFile(target.configPath, "utf8"); | ||
| if (raw.trim()) { | ||
| try { | ||
| try { | ||
| copyFileSync(target.configPath, `${target.configPath}.bak`); | ||
| const raw = readFileSync(target.configPath, "utf8"); | ||
| if (raw.trim()) { | ||
| existing = JSON.parse(raw); | ||
| } | ||
| catch { | ||
| throw new Error(`Existing config at ${target.configPath} is not valid JSON. Refusing to overwrite.`); | ||
| } | ||
| } | ||
| await writeFile(`${target.configPath}.bak`, raw, "utf8"); | ||
| catch { | ||
| console.warn(`Warning: existing config at ${target.configPath} is not valid JSON. Backed up and replacing.`); | ||
| } | ||
| } | ||
| else { | ||
| await mkdir(dirname(target.configPath), { recursive: true }); | ||
| mkdirSync(dirname(target.configPath), { recursive: true }); | ||
| } | ||
| const merged = mergeConfig(existing, creds); | ||
| await writeFile(target.configPath, `${JSON.stringify(merged, null, 2)}\n`, "utf8"); | ||
| const merged = mergeConfig(existing, target.configKey, creds); | ||
| writeFileSync(target.configPath, `${JSON.stringify(merged, null, 2)}\n`, "utf8"); | ||
| } | ||
| async function ask(rl, question, fallback) { | ||
| const q = fallback ? `${question} [${fallback}]: ` : `${question}: `; | ||
| const answer = (await rl.question(q)).trim(); | ||
| return answer || fallback || ""; | ||
| } | ||
| export async function runInit(argv = process.argv.slice(3)) { | ||
| const args = parseInitArgs(argv); | ||
| const all = getClientTargets(); | ||
| console.log("Parseable MCP server — interactive setup\n"); | ||
| const all = getClientTargets(); | ||
| const detected = all.filter((t) => existsSync(t.configPath)); | ||
| if (detected.length === 0) { | ||
| console.log("No MCP clients detected yet. Creating config files for both Claude Desktop and Cursor."); | ||
| console.log("If you only use one, you can delete the other later.\n"); | ||
| } | ||
| else { | ||
| console.log("Detected MCP clients:"); | ||
| for (const [i, t] of detected.entries()) { | ||
| console.log(` ${i + 1}. ${t.name} (${t.configPath})`); | ||
| } | ||
| console.log(); | ||
| } | ||
| const rl = createInterface({ input: process.stdin, output: process.stdout }); | ||
| let chosen; | ||
| // 1. Application | ||
| let selectedTarget; | ||
| if (args.client) { | ||
| const match = all.find((t) => t.id === args.client); | ||
| if (!match) { | ||
| rl.close(); | ||
| console.error(`Unknown client "${args.client}". Use one of: ${all.map((t) => t.id).join(", ")}`); | ||
| process.exit(1); | ||
| } | ||
| chosen = [match]; | ||
| selectedTarget = match; | ||
| } | ||
| else if (detected.length === 0) { | ||
| chosen = all; | ||
| } | ||
| else { | ||
| const pick = await ask(rl, "Configure which? (comma-separated numbers, or 'all')", "all"); | ||
| if (pick === "all") { | ||
| chosen = detected; | ||
| const { application } = await inquirer.prompt([ | ||
| { | ||
| type: "list", | ||
| name: "application", | ||
| message: "Select Application:", | ||
| choices: all.map((t) => ({ name: t.name, value: t.id })), | ||
| }, | ||
| ]); | ||
| const match = all.find((t) => t.id === application); | ||
| if (!match) { | ||
| console.error("No application selected. Aborting."); | ||
| process.exit(1); | ||
| } | ||
| else { | ||
| const indices = pick.split(",").map((s) => Number.parseInt(s.trim(), 10) - 1); | ||
| chosen = indices.map((i) => detected[i]).filter(Boolean); | ||
| } | ||
| selectedTarget = match; | ||
| } | ||
| if (chosen.length === 0) { | ||
| rl.close(); | ||
| console.error("No clients selected. Aborting."); | ||
| process.exit(1); | ||
| // 2. Credentials | ||
| const answers = await inquirer.prompt([ | ||
| !args.url && { | ||
| type: "input", | ||
| name: "url", | ||
| message: "Parseable URL:", | ||
| validate: (v) => v.trim().length > 0 || "URL is required", | ||
| }, | ||
| !args.username && { | ||
| type: "input", | ||
| name: "username", | ||
| message: "Username:", | ||
| default: "admin", | ||
| }, | ||
| !args.password && { | ||
| type: "password", | ||
| name: "password", | ||
| message: "Password:", | ||
| mask: "*", | ||
| validate: (v) => v.length > 0 || "Password is required", | ||
| }, | ||
| ].filter(Boolean)); | ||
| const creds = { | ||
| url: args.url ?? answers.url, | ||
| username: args.username ?? answers.username, | ||
| password: args.password ?? answers.password, | ||
| }; | ||
| // 3. Write | ||
| try { | ||
| writeClientConfig(selectedTarget, creds); | ||
| console.log(`\n✓ Configuration saved to ${selectedTarget.configPath} for ${selectedTarget.name}`); | ||
| console.log(`Restart ${selectedTarget.name} to load 27 Parseable tools.`); | ||
| } | ||
| const url = args.url || (await ask(rl, "Parseable URL")); | ||
| const username = args.username || (await ask(rl, "Username", "admin")); | ||
| const password = args.password || (await ask(rl, "Password")); | ||
| rl.close(); | ||
| if (!url || !username || !password) { | ||
| console.error("URL, username, and password are all required."); | ||
| catch (err) { | ||
| console.error(`✗ Failed to write config: ${err.message}`); | ||
| process.exit(1); | ||
| } | ||
| for (const target of chosen) { | ||
| try { | ||
| await writeClientConfig(target, { url, username, password }); | ||
| console.log(`✓ Configured ${target.name}: ${target.configPath}`); | ||
| } | ||
| catch (err) { | ||
| console.error(`✗ Failed to configure ${target.name}: ${err.message}`); | ||
| } | ||
| } | ||
| console.log(`\nRestart ${chosen.map((t) => t.name).join(" / ")} to load 27 Parseable tools.`); | ||
| } | ||
| //# sourceMappingURL=init.js.map |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"init.js","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"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"} |
+15
-14
| { | ||
| "name": "@parseable/parseable-mcp-server", | ||
| "version": "0.2.0", | ||
| "version": "0.2.1", | ||
| "description": "Model Context Protocol server for Parseable. Lets LLMs discover and query Parseable datasets.", | ||
@@ -15,17 +15,6 @@ "license": "Apache-2.0", | ||
| ], | ||
| "scripts": { | ||
| "build": "tsc", | ||
| "dev": "tsc --watch", | ||
| "start": "node dist/server.js", | ||
| "test": "vitest run", | ||
| "test:watch": "vitest", | ||
| "test:coverage": "vitest run --coverage", | ||
| "lint": "biome check src test", | ||
| "format": "biome format --write src test", | ||
| "fix": "biome check --write src test", | ||
| "prepublishOnly": "npm run build && npm run lint && npm test" | ||
| }, | ||
| "dependencies": { | ||
| "@modelcontextprotocol/sdk": "^1.0.4", | ||
| "dotenv": "^16.4.5", | ||
| "inquirer": "^13.4.3", | ||
| "zod": "^3.23.8" | ||
@@ -35,2 +24,3 @@ }, | ||
| "@biomejs/biome": "2.4.15", | ||
| "@types/inquirer": "^9.0.9", | ||
| "@types/node": "^22.10.0", | ||
@@ -46,3 +36,14 @@ "@vitest/coverage-v8": "^4.1.6", | ||
| "access": "public" | ||
| }, | ||
| "scripts": { | ||
| "build": "tsc", | ||
| "dev": "tsc --watch", | ||
| "start": "node dist/server.js", | ||
| "test": "vitest run", | ||
| "test:watch": "vitest", | ||
| "test:coverage": "vitest run --coverage", | ||
| "lint": "biome check src test", | ||
| "format": "biome format --write src test", | ||
| "fix": "biome check --write src test" | ||
| } | ||
| } | ||
| } |
AI-detected potential code anomaly
Supply chain riskAI has identified unusual behaviors that may pose a security risk.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
114049
0.17%1318
2.09%4
33.33%6
20%11
10%+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added
+ Added