read_file
Use this tool to retrieve and display the contents of a file from the MCP File System. Specify the file path to access its data securely via standardized filesystem operations.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File path to read |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"path": {
"description": "File path to read",
"type": "string"
}
},
"required": [
"path"
],
"type": "object"
}
Implementation Reference
- src/index.ts:37-45 (handler)Handler function for the 'read_file' tool. Validates the file path using validatePath and reads the file content using fs.readFile, returning it as MCP content block or error message.async ({ path: filePath }: { path: string }) => { try { const validPath = validatePath(filePath); const content = await fs.readFile(validPath, 'utf-8'); return { content: [{ type: 'text', text: content }] }; } catch (error: any) { return { content: [{ type: 'text', text: `Error reading file: ${error.message}` }] }; } }
- src/index.ts:36-36 (schema)Input schema for the 'read_file' tool using Zod, defining 'path' as a string.{ path: z.string().describe("File path to read") },
- src/index.ts:34-46 (registration)Registration of the 'read_file' tool on the MCP server using server.tool(name, schema, handler).server.tool( "read_file", { path: z.string().describe("File path to read") }, async ({ path: filePath }: { path: string }) => { try { const validPath = validatePath(filePath); const content = await fs.readFile(validPath, 'utf-8'); return { content: [{ type: 'text', text: content }] }; } catch (error: any) { return { content: [{ type: 'text', text: `Error reading file: ${error.message}` }] }; } } );
- src/index.ts:14-20 (helper)Helper function validatePath used by read_file (and other tools) to ensure the file path is within allowed directories for security.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; }