write_file
Replace entire file contents with new data, ideal for large modifications or when incremental edits fail. Overwrites existing files, so use with caution. Operates within permitted directories only.
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 |
|---|---|---|---|
| content | Yes | ||
| path | Yes |
Implementation Reference
- src/tools/filesystem.ts:70-73 (handler)Core handler function that validates the file path for security restrictions 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 parameters for the write_file tool: 'path' (string) and 'content' (string).export const WriteFileArgsSchema = z.object({ path: z.string(), content: z.string(), });
- src/server.ts:143-147 (registration)Tool registration in the MCP server's listTools handler, specifying name, description, and input schema for write_file.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-285 (handler)MCP callTool dispatch handler that parses input arguments using the schema, invokes the core writeFile function, and returns a 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}` }], };