update-mcp-config
Modify JSON configuration files for MCP server diagnostics to resolve issues, validate settings, and test connections. Essential for maintaining server performance and troubleshooting.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| config | Yes | JSON configuration to write (entire file content) |
Implementation Reference
- src/index.ts:331-370 (handler)The handler function for the 'update-mcp-config' tool. Validates the input JSON string, backs up the existing Claude Desktop configuration file if it exists, ensures the config directory is present, writes the new configuration to the platform-specific path, and returns a success message or error details.async ({ config }) => { try { // Validate the JSON try { JSON.parse(config); } catch (error) { return { isError: true, content: [{ type: "text", text: `Invalid JSON configuration: ${error.message}` }] }; } // Create backup of existing config if it exists try { const existingConfig = await fs.readFile(configPath, 'utf-8'); const backupPath = `${configPath}.backup.${Date.now()}`; await fs.writeFile(backupPath, existingConfig); } catch (error) { // Ignore if no existing config } // Ensure directory exists await fs.mkdir(path.dirname(configPath), { recursive: true }); // Write new config await fs.writeFile(configPath, config); return { content: [{ type: "text", text: `Configuration successfully updated at ${configPath}.\n\nNote: You'll need to restart Claude Desktop for changes to take effect.` }] }; } catch (error) { return { isError: true, content: [{ type: "text", text: `Error updating configuration: ${error.message}` }] }; } }
- src/index.ts:328-330 (schema)The Zod input schema for the 'update-mcp-config' tool, defining a single 'config' parameter as a string containing the full JSON configuration to write to the file.{ config: z.string().describe("JSON configuration to write (entire file content)") },
- src/index.ts:326-371 (registration)The registration of the 'update-mcp-config' tool on the MCP server instance using server.tool(), specifying the tool name, input schema, and handler function.server.tool( "update-mcp-config", { config: z.string().describe("JSON configuration to write (entire file content)") }, async ({ config }) => { try { // Validate the JSON try { JSON.parse(config); } catch (error) { return { isError: true, content: [{ type: "text", text: `Invalid JSON configuration: ${error.message}` }] }; } // Create backup of existing config if it exists try { const existingConfig = await fs.readFile(configPath, 'utf-8'); const backupPath = `${configPath}.backup.${Date.now()}`; await fs.writeFile(backupPath, existingConfig); } catch (error) { // Ignore if no existing config } // Ensure directory exists await fs.mkdir(path.dirname(configPath), { recursive: true }); // Write new config await fs.writeFile(configPath, config); return { content: [{ type: "text", text: `Configuration successfully updated at ${configPath}.\n\nNote: You'll need to restart Claude Desktop for changes to take effect.` }] }; } catch (error) { return { isError: true, content: [{ type: "text", text: `Error updating configuration: ${error.message}` }] }; } } );