MCP Server with File Search Tool

MCP Server with File Search Tool

A Model Context Protocol server providing file search and question tools for AI models. Enables keyword search in files with line numbers and integration with external chat services.

Category
Visit Server

README

MCP Server with File Search Tool

A Model Context Protocol (MCP) server implementation in Node.js using TypeScript. This server provides tools for AI models to interact with external systems, including a powerful file search capability.

Features

  • šŸš€ MCP Server: Implements the Model Context Protocol for AI model integration
  • šŸ” File Search Tool: Search for keywords within text files with line number results
  • šŸ”§ Question Tool: A tool for asking freeform questions to a chatbot service
  • šŸ› ļø BaseTool Abstraction: A simple abstraction for creating new tools with Zod-based schema validation
  • 🌐 HTTP & STDIO Transport: Supports both HTTP and STDIO transport modes for the MCP server
  • šŸ“ TypeScript: Full TypeScript support with strict type checking
  • šŸŽÆ ESLint + Prettier: Code quality and formatting tools
  • šŸ“¦ Modern Node.js: ES2020+ features and modern JavaScript

Prerequisites

  • Node.js 18+
  • npm or yarn

Installation

  1. Clone and navigate to the project:

    cd chatbot-mcp
    
  2. Install dependencies:

    npm install
    
  3. Set up environment variables:

    cp env.example .env
    # Edit .env with your configuration
    

Usage

Development Mode

Run the server with hot reloading:

npm run dev

Production Build

Build the TypeScript code:

npm run build

Run the compiled JavaScript:

npm start

Testing with MCP Inspector

Test your tools using the MCP Inspector:

npx @modelcontextprotocol/inspector dist/index.js

Code Quality

Lint the code:

npm run lint

Fix linting issues:

npm run lint:fix

Format code:

npm run format

Project Structure

chatbot-mcp/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ index.ts              # Main entry point
│   ā”œā”€ā”€ server.ts             # MCP server setup
│   ā”œā”€ā”€ tools/
│   │   ā”œā”€ā”€ FileSearchTool.ts # File search tool implementation
│   │
│   └── utils/
│       ā”œā”€ā”€ BaseTool.ts       # Base class for creating tools
│       └── toolRegistry.ts   # Utility to register all tools
ā”œā”€ā”€ sample.txt                # Sample file for testing file search
ā”œā”€ā”€ package.json              # Dependencies and scripts
ā”œā”€ā”€ tsconfig.json             # TypeScript configuration
ā”œā”€ā”€ .env.example              # Environment variables template
└── README.md                 # This file

MCP Tools

1. search_file (File Search Tool)

Searches for a specified keyword within a file and returns matching lines with line numbers.

Input Schema:

{
  filepath: string,           // Path to the file to search
  keyword: string,            // Keyword to search for
  caseSensitive?: boolean     // Whether search is case-sensitive (default: false)
}

Example Usage:

{
  "filepath": "sample.txt",
  "keyword": "MCP",
  "caseSensitive": false
}

Example Output:

Found 4 match(es) for keyword "MCP" in file: sample.txt

Line 1: Welcome to the MCP Server Documentation
Line 3: The Model Context Protocol enables seamless integration...
Line 5: MCP servers provide powerful capabilities...
Line 10: MCP makes it easy to build tool-enhanced AI applications.

Features:

  • Case-insensitive search by default
  • Returns line numbers with matching content
  • Handles file not found errors gracefully
  • Supports both absolute and relative file paths

HTTP Endpoints

  • POST /mcp - The primary endpoint for MCP requests when in HTTP mode
  • GET / - A simple message indicating the server is running

Configuration

Environment variables (set in .env file):

  • PORT - The port for the MCP server to listen on (default: 5001)
  • TRANSPORT_MODE - The transport mode for the server, either http or stdio (default: http)
  • CHAT_SERVER_URL - The URL for the external chat service used by the questionTool

Development

Adding New Tools

  1. Create a new tool file in src/tools/
  2. Extend the BaseTool class
  3. Define the input schema using Zod
  4. Implement the execute method
  5. Register the tool in src/utils/toolRegistry.ts

Example Tool Structure

// src/tools/myNewTool.ts
import { BaseTool } from '../utils/BaseTool';
import { z } from 'zod';

export class MyNewTool extends BaseTool {
  constructor() {
    super({
      name: 'my_new_tool',
      title: 'My New Tool',
      description: 'A description for the new tool',
      inputSchema: {
        parameter1: z.string().describe('Description for parameter 1'),
        parameter2: z.number().optional().describe('Optional parameter')
      }
    });
  }

  async execute(input: any): Promise<any> {
    const { parameter1, parameter2 } = input;
    // Your tool's logic here
    return { success: true, result: `Received ${parameter1}` };
  }
}

File Search Tool Implementation

The File Search Tool demonstrates:

  • File system operations using Node.js fs module
  • Error handling for missing files
  • String manipulation and search algorithms
  • Case-sensitive and case-insensitive search options
  • Formatted output with line numbers

Testing the File Search Tool

  1. Create a test file (sample.txt):

    Welcome to the MCP Server Documentation
    This is a sample file for testing.
    The Model Context Protocol enables seamless integration.
    You can search for any keyword in this file.
    MCP servers provide powerful capabilities.
    
  2. Run the MCP Inspector:

    npx @modelcontextprotocol/inspector dist/index.js
    
  3. Test with sample input:

    • filepath: sample.txt or full path to the file
    • keyword: MCP
    • caseSensitive: false
  4. Verify the output shows all matching lines with line numbers

MCP Protocol

This server implements the Model Context Protocol, allowing AI models to:

  • Discover available tools
  • Call tools with structured inputs
  • Receive structured outputs
  • Handle errors gracefully

The server can be configured to use either stdio or http transport, making it flexible for different MCP client implementations.

Troubleshooting

Common Issues

  1. Port already in use: Change the PORT variable in your .env file
  2. TypeScript compilation errors: Run npm run lint to see detailed errors
  3. File not found: Use absolute paths or ensure relative paths are correct
  4. MCP connection issues: Ensure the server is running and transport mode is correct

Logs

The server provides detailed logging for debugging:

  • MCP server initialization
  • Tool execution and results
  • File operations
  • Error details with stack traces

Use Cases

File Search Tool Applications

  • Code Review: Search for specific patterns or keywords in source code
  • Log Analysis: Find error messages or specific events in log files
  • Documentation: Locate specific information in text documents
  • Configuration: Search for settings in configuration files
  • Data Processing: Find specific entries in CSV or text data files

Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Run tests and linting
  5. Submit a pull request

Resources

Author: Parthik Diyora
Date: November 2, 2025

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured