write_file
Create or update files by specifying the path and content, enabling secure file management within the MCP File System's controlled directory structure.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | File content | |
| path | Yes | File location |
Implementation Reference
- src/index.ts:78-90 (registration)Registration of the 'write_file' tool using server.tool, including schema and handler function.server.tool( "write_file", { path: z.string().describe("File location"), content: z.string().describe("File content") }, async ({ path: filePath, content }: { path: string, content: string }) => { try { const validPath = validatePath(filePath); await fs.writeFile(validPath, content, 'utf-8'); return { content: [{ type: 'text', text: `File written successfully: ${filePath}` }] }; } catch (error: any) { return { content: [{ type: 'text', text: `Error writing file: ${error.message}` }] }; } } );
- src/index.ts:81-89 (handler)The handler function for 'write_file' tool that validates the path and writes the content to the file using fs.writeFile.async ({ path: filePath, content }: { path: string, content: string }) => { try { const validPath = validatePath(filePath); await fs.writeFile(validPath, content, 'utf-8'); return { content: [{ type: 'text', text: `File written successfully: ${filePath}` }] }; } catch (error: any) { return { content: [{ type: 'text', text: `Error writing file: ${error.message}` }] }; } }
- src/index.ts:80-80 (schema)Zod schema defining input parameters: path (string) and content (string) for the 'write_file' tool.{ path: z.string().describe("File location"), content: z.string().describe("File content") },
- src/index.ts:14-20 (helper)Helper function validatePath used by the write_file handler to ensure the file path is within allowed directories.function validatePath(filePath: string): string { const absolutePath = path.resolve(filePath); if (!allowedDirs.some(dir => absolutePath.startsWith(path.resolve(dir)))) { throw new Error(`Access denied: ${filePath} is not within allowed directories`); } return absolutePath; }