Skip to main content
Glama

write_file

Create and save text files to specified paths with configurable encoding and directory creation options.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pathYes
contentYes
encodingNoutf8
createDirectoriesNo

Implementation Reference

  • The handler function for the 'write_file' tool. It validates the file path, optionally creates parent directories, writes the content to the file using fs.writeFile, and returns a success message.
    async ({ path: filePath, content, encoding, createDirectories }) => { return wrapToolExecution(async () => { const validatedPath = await validatePath(filePath); if (createDirectories) { const dir = path.dirname(validatedPath); await fs.mkdir(dir, { recursive: true }); } await fs.writeFile(validatedPath, content, { encoding: encoding as FileEncoding }); return { content: [{ type: "text" as const, text: `Successfully wrote ${content.length} characters to ${validatedPath}` }] }; }, { errorCode: ERROR_CODES.FILE_OPERATION, context: "Failed to write file" }); }
  • Zod input schema for the 'write_file' tool defining parameters: path (required string), content (string), encoding (optional enum), createDirectories (optional boolean).
    { path: z.string().min(1, "Path is required"), content: z.string(), encoding: z.enum(["utf8", "utf-16le", "latin1"]).optional().default(DEFAULTS.FILE_ENCODING), createDirectories: z.boolean().optional().default(DEFAULTS.CREATE_DIRECTORIES) },
  • The registerWriteFile function that registers the 'write_file' tool on the MCP server, including the schema and handler.
    function registerWriteFile(server: McpServer): void { server.tool("write_file", { path: z.string().min(1, "Path is required"), content: z.string(), encoding: z.enum(["utf8", "utf-16le", "latin1"]).optional().default(DEFAULTS.FILE_ENCODING), createDirectories: z.boolean().optional().default(DEFAULTS.CREATE_DIRECTORIES) }, async ({ path: filePath, content, encoding, createDirectories }) => { return wrapToolExecution(async () => { const validatedPath = await validatePath(filePath); if (createDirectories) { const dir = path.dirname(validatedPath); await fs.mkdir(dir, { recursive: true }); } await fs.writeFile(validatedPath, content, { encoding: encoding as FileEncoding }); return { content: [{ type: "text" as const, text: `Successfully wrote ${content.length} characters to ${validatedPath}` }] }; }, { errorCode: ERROR_CODES.FILE_OPERATION, context: "Failed to write file" }); } ); }
  • src/index.ts:65-65 (registration)
    Call to registerFileTools(server) which includes registration of the write_file tool among file tools.
    registerFileTools(server);

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ishuru/open-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server