Skip to main content
Glama
qpd-v

MCP Word Counter

by qpd-v

analyze_text

Count words and characters in a text document to analyze its structure and size. Use the tool to obtain precise statistics for any text file, aiding in effective document analysis.

Instructions

Count words and characters in a text document

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
filePathYesPath to the text file to analyze

Implementation Reference

  • Core handler function that reads the file content and computes word count, total characters, and non-space characters.
    public async analyzeFile(filePath: string) {
      const text = await fs.readFile(filePath, 'utf-8');
      return {
        words: this.countWords(text),
        characters: this.countCharacters(text),
        charactersNoSpaces: this.countCharactersNoSpaces(text)
      };
    }
  • MCP server request handler for tool execution (CallToolRequestSchema) that specifically handles 'analyze_text' tool calls, including name check, parameter validation, delegation to WordCounter, response formatting, and error handling.
    server.setRequestHandler(CallToolRequestSchema, async (request) => {
      if (request.params.name !== "analyze_text") {
        throw new McpError(
          ErrorCode.MethodNotFound,
          `Unknown tool: ${request.params.name}`
        );
      }
    
      const filePath = request.params.arguments?.filePath;
      if (!filePath || typeof filePath !== "string") {
        throw new McpError(
          ErrorCode.InvalidParams,
          "File path parameter is required and must be a string"
        );
      }
    
      try {
        const stats = await wordCounter.analyzeFile(filePath);
        return {
          content: [
            {
              type: "text",
              text: `Analysis Results:
    • Word count: ${stats.words}
    • Character count (including spaces): ${stats.characters}
    • Character count (excluding spaces): ${stats.charactersNoSpaces}`
            }
          ]
        };
      } catch (error) {
        return {
          isError: true,
          content: [
            {
              type: "text",
              text: `Error analyzing file: ${error instanceof Error ? error.message : String(error)}`
            }
          ]
        };
      }
    });
  • Tool schema definition including name, description, and input schema requiring a 'filePath' string.
        {
          name: "analyze_text",
          description: "Count words and characters in a text document",
          inputSchema: {
            type: "object",
            properties: {
              filePath: {
                type: "string",
                description: "Path to the text file to analyze"
              }
            },
            required: ["filePath"]
          }
        }
      ]
    }));
  • src/index.ts:28-45 (registration)
    Registers the ListToolsRequestHandler which exposes the 'analyze_text' tool with its schema.
    server.setRequestHandler(ListToolsRequestSchema, async () => ({
      tools: [
        {
          name: "analyze_text",
          description: "Count words and characters in a text document",
          inputSchema: {
            type: "object",
            properties: {
              filePath: {
                type: "string",
                description: "Path to the text file to analyze"
              }
            },
            required: ["filePath"]
          }
        }
      ]
    }));
  • Helper method for counting words by splitting text on whitespace sequences.
    private countWords(text: string): number {
      // Handle empty or whitespace-only strings
      if (!text.trim()) {
        return 0;
      }
    
      // Split by whitespace and filter out empty strings
      const words = text.trim().split(/\s+/).filter(word => word.length > 0);
      return words.length;
    }

Tool Definition Quality

Score is being calculated. Check back soon.

Install Server

Other Tools

Related 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/qpd-v/mcp-wordcounter'

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