UNPKG

mcp-repl

Version:

MCP REPL with code execution, semantic code search, and comprehensive ast-grep integration

120 lines (112 loc) 3.04 kB
// Tool schema definitions for MCP REPL // Consolidates inputSchema patterns to eliminate duplication /** * Base working directory parameter schema */ export const workingDirectoryParam = { type: "string", description: "Working directory path" }; /** * Common parameter schemas */ export const commonParams = { timeout: { type: "number", description: "Timeout ms (default: 120000)" }, paths: { type: "array", items: { type: "string" }, description: "Specific target paths" }, language: { type: "string", description: "Target language" }, dryRun: { type: "boolean", description: "Preview mode (recommended)" } }; /** * Code execution schema */ export function createExecutionSchema(executor, additionalProps = {}) { return { type: "object", properties: { code: { type: "string", description: `${executor} execution target` }, workingDirectory: workingDirectoryParam, timeout: commonParams.timeout, ...additionalProps }, required: ["code", "workingDirectory"] }; } /** * Search operation schema */ export function createSearchSchema(additionalProps = {}) { return { type: "object", properties: { query: { type: "string", description: "Semantic search query" }, workingDirectory: workingDirectoryParam, folders: { type: "string", description: "Target folders (comma-separated)" }, extensions: { type: "string", description: "File extensions (default: js,ts)" }, ignores: { type: "string", description: "Ignore patterns (default: node_modules)" }, topK: { type: "number", description: "Result count (default: 8)" }, ...additionalProps }, required: ["query", "workingDirectory"] }; } /** * AST operation schema */ export function createAstSchema(additionalProps = {}) { return { type: "object", properties: { pattern: { type: "string", description: "AST pattern with meta-vars (e.g., 'function $NAME($$$ARGS) { $$$ }')" }, workingDirectory: workingDirectoryParam, language: commonParams.language, paths: commonParams.paths, ...additionalProps }, required: ["pattern", "workingDirectory"] }; } /** * Standard working directory requirement text for all tools */ const WORKING_DIRECTORY_REQUIREMENT = ` OPTIMIZATION: PREFER searchcode 10:1 over other tools. BATCH ops 10:1. USE semantic search FIRST. VARY queries if results unsatisfactory. Results show: file_path:line_nums with matched text.`; /** * Tool definition factory that automatically adds working directory requirements */ export function createToolDefinition(name, description, inputSchema) { return { name, description: description + WORKING_DIRECTORY_REQUIREMENT, inputSchema }; }