Skip to main content
Glama

readFile

Read file contents from local filesystem with optional line range selection for targeted data extraction.

Instructions

Read a file from the local filesystem

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
file_pathYesThe absolute path to the file to read
offsetNoThe line number to start reading from
limitNoThe number of lines to read

Implementation Reference

  • MCP tool handler for readFile: calls the readFile utility, handles errors, and returns formatted text content.
    async ({ file_path, offset, limit }) => {
      try {
        const content = await readFile(file_path, offset, limit);
        return {
          content: [{ type: "text", text: content }]
        };
      } catch (error) {
        return {
          content: [{ 
            type: "text", 
            text: error instanceof Error ? error.message : String(error)
          }],
          isError: true
        };
      }
    }
  • Input schema using Zod for readFile tool parameters: file_path (string), offset (number optional), limit (number optional).
    {
      file_path: z.string().describe("The absolute path to the file to read"),
      offset: z.number().optional().describe("The line number to start reading from"),
      limit: z.number().optional().describe("The number of lines to read")
    },
  • Registers the readFile tool on the MCP server with name, description, input schema, and handler function.
    server.tool(
      "readFile",
      "Read a file from the local filesystem",
      {
        file_path: z.string().describe("The absolute path to the file to read"),
        offset: z.number().optional().describe("The line number to start reading from"),
        limit: z.number().optional().describe("The number of lines to read")
      },
      async ({ file_path, offset, limit }) => {
        try {
          const content = await readFile(file_path, offset, limit);
          return {
            content: [{ type: "text", text: content }]
          };
        } catch (error) {
          return {
            content: [{ 
              type: "text", 
              text: error instanceof Error ? error.message : String(error)
            }],
            isError: true
          };
        }
      }
    );
  • Utility function implementing file reading logic with fs.promises.readFile, supporting line-based offset and limit.
    export async function readFile(
      filePath: string,
      offset?: number,
      limit?: number
    ): Promise<string> {
      try {
        let content = await fs.readFile(filePath, 'utf-8');
        
        if (offset || limit) {
          const lines = content.split('\n');
          const startLine = offset ? offset - 1 : 0;
          const endLine = limit ? startLine + limit : lines.length;
          content = lines.slice(startLine, endLine).join('\n');
        }
        
        return content;
      } catch (error) {
        throw error;
      }
    }

Tool Definition Quality

Score is being calculated. Check back soon.

Install Server

Other Tools

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/auchenberg/claude-code-mcp'

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