write_file
Replace entire file contents for major edits or when incremental changes fail, overwriting existing files within permitted directories.
Instructions
Completely replace file contents. Best for large changes (>20% of file) or when edit_block fails. Use with caution as it will overwrite existing files. Only works within allowed directories.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| content | Yes |
Implementation Reference
- src/tools/filesystem.ts:70-73 (handler)Core handler function that validates the file path and writes the provided content to the file using Node.js fs.promises.writeFile.export async function writeFile(filePath: string, content: string): Promise<void> { const validPath = await validatePath(filePath); await fs.writeFile(validPath, content, "utf-8"); }
- src/tools/schemas.ts:40-43 (schema)Zod schema defining the input arguments for the write_file tool: path (string) and content (string).export const WriteFileArgsSchema = z.object({ path: z.string(), content: z.string(), });
- src/server.ts:142-148 (registration)Tool registration in the MCP server's ListTools response, including name, description, and input schema.{ name: "write_file", description: "Completely replace file contents. Best for large changes (>20% of file) or when edit_block fails. " + "Use with caution as it will overwrite existing files. Only works within allowed directories.", inputSchema: zodToJsonSchema(WriteFileArgsSchema), },
- src/server.ts:280-286 (handler)Dispatch handler in the MCP server's CallToolRequest handler that parses arguments, calls the writeFile function, and returns success response.case "write_file": { const parsed = WriteFileArgsSchema.parse(args); await writeFile(parsed.path, parsed.content); return { content: [{ type: "text", text: `Successfully wrote to ${parsed.path}` }], }; }