configure-watcher
Monitor and manage changes to Claude for Desktop and Cursor configuration files by tracking specified paths, ensuring consistent configurations across your MCP environment.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| claudeConfigPath | No | Path to Claude for Desktop config file | |
| cursorConfigPath | No | Path to Cursor config file | |
| watchClaude | No | Whether to watch Claude for Desktop config | |
| watchCursor | No | Whether to watch Cursor config |
Implementation Reference
- src/tools/watcher-tools.ts:27-81 (handler)The main handler function for the 'configure-watcher' tool. It updates the watcher configurations (Claude and Cursor) in the installation config based on input parameters and reinitializes the watchers.async ({ watchClaude, watchCursor, claudeConfigPath, cursorConfigPath }, extra) => { const config = configService.getInstallationConfig(); const updates = { watchers: { ...config.watchers } }; if (watchClaude !== undefined) { updates.watchers.claude = { ...config.watchers.claude, enabled: watchClaude }; } if (watchCursor !== undefined) { updates.watchers.cursor = { ...config.watchers.cursor, enabled: watchCursor }; } if (claudeConfigPath !== undefined) { updates.watchers.claude = { ...config.watchers.claude, configPath: claudeConfigPath }; } if (cursorConfigPath !== undefined) { updates.watchers.cursor = { ...config.watchers.cursor, configPath: cursorConfigPath }; } const updatedConfig = await configService.updateInstallationConfig(updates); // Reinitialize watchers with new config await watcherService.initializeWatchers(); return { content: [ { type: "text", text: JSON.stringify({ success: true, watchers: updatedConfig.watchers }, null, 2) } ] }; } );
- src/tools/watcher-tools.ts:21-26 (schema)Zod schema defining the input parameters for the 'configure-watcher' tool.{ watchClaude: z.boolean().optional().describe("Whether to watch Claude for Desktop config"), watchCursor: z.boolean().optional().describe("Whether to watch Cursor config"), claudeConfigPath: z.string().optional().describe("Path to Claude for Desktop config file"), cursorConfigPath: z.string().optional().describe("Path to Cursor config file") },
- src/tools/watcher-tools.ts:19-81 (registration)Registration of the 'configure-watcher' tool using server.tool(), including inline schema and handler.server.tool( "configure-watcher", { watchClaude: z.boolean().optional().describe("Whether to watch Claude for Desktop config"), watchCursor: z.boolean().optional().describe("Whether to watch Cursor config"), claudeConfigPath: z.string().optional().describe("Path to Claude for Desktop config file"), cursorConfigPath: z.string().optional().describe("Path to Cursor config file") }, async ({ watchClaude, watchCursor, claudeConfigPath, cursorConfigPath }, extra) => { const config = configService.getInstallationConfig(); const updates = { watchers: { ...config.watchers } }; if (watchClaude !== undefined) { updates.watchers.claude = { ...config.watchers.claude, enabled: watchClaude }; } if (watchCursor !== undefined) { updates.watchers.cursor = { ...config.watchers.cursor, enabled: watchCursor }; } if (claudeConfigPath !== undefined) { updates.watchers.claude = { ...config.watchers.claude, configPath: claudeConfigPath }; } if (cursorConfigPath !== undefined) { updates.watchers.cursor = { ...config.watchers.cursor, configPath: cursorConfigPath }; } const updatedConfig = await configService.updateInstallationConfig(updates); // Reinitialize watchers with new config await watcherService.initializeWatchers(); return { content: [ { type: "text", text: JSON.stringify({ success: true, watchers: updatedConfig.watchers }, null, 2) } ] }; } );
- src/server.ts:34-34 (registration)Top-level registration call that invokes registerWatcherTools to add watcher tools, including 'configure-watcher', to the main MCP server.registerWatcherTools(server, configService, watcherService);