Skip to main content
Glama

MCP Keyword Search

by AnsariUsaid

MCP Keyword Search Server

A FastAPI-based MCP (Model Context Protocol) server that provides a keyword search tool for searching within files.

Features

  • Keyword Search: Search for keywords in text files with line numbers and occurrence counts

  • Case Sensitivity: Toggle between case-sensitive and case-insensitive searches

  • RESTful API: Simple HTTP endpoints for easy integration

  • Error Handling: Handles missing files, non-text files, and invalid paths

  • Interactive Docs: Built-in Swagger UI for testing

Setup

# Create virtual environment python3 -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate # Install dependencies pip install -r requirements.txt

Usage

Start the server:

python server.py

Server runs at http://127.0.0.1:8000

Test the server (in another terminal):

python test_client.py

API Endpoints

POST /search

Search for a keyword in a file and get all matching lines.

Request Body:

{ "file_path": "example.txt", "keyword": "python", "case_sensitive": false }

Response:

{ "file_path": "example.txt", "keyword": "python", "total_matches": 5, "matches": [ { "line_number": 2, "content": "Python is a popular programming language.", "occurrences": 1 } ] }

Parameters:

  • file_path (string, required): Path to the file to search

  • keyword (string, required): Keyword to search for

  • case_sensitive (boolean, optional): Enable case-sensitive search (default: false)

Response Fields:

  • file_path: The searched file path

  • keyword: The keyword that was searched

  • total_matches: Number of lines containing the keyword

  • matches: Array of matching lines with line numbers, content, and occurrence count

GET /health

Health check endpoint to verify server status.

Response:

{ "status": "healthy" }

GET /

Root endpoint with server information.

Examples

Using curl:

curl -X POST http://127.0.0.1:8000/search \ -H "Content-Type: application/json" \ -d '{"file_path": "example.txt", "keyword": "python", "case_sensitive": false}'

Using Python:

import requests response = requests.post( "http://127.0.0.1:8000/search", json={ "file_path": "example.txt", "keyword": "python", "case_sensitive": False } ) result = response.json() print(f"Found {result['total_matches']} matches")

Testing

The test_client.py script demonstrates various search scenarios:

  • Case-insensitive searches

  • Case-sensitive searches

  • Different keywords

  • Error handling for missing files

Run it while the server is running to see example outputs.

Error Responses

  • 404: File not found at the specified path

  • 400: Invalid file path or file is not readable as text

  • 500: Internal server error while processing the file

Documentation

Interactive API documentation is available at:

  • Swagger UI: http://127.0.0.1:8000/docs

  • ReDoc: http://127.0.0.1:8000/redoc

Project Structure

mcp-keyword-search/ ├── server.py # Main FastAPI server ├── test_client.py # Test script with examples ├── example.txt # Sample file for testing ├── requirements.txt # Python dependencies └── README.md # This file
-
security - not tested
F
license - not found
-
quality - not tested

local-only server

The server can only run on the client's local machine because it depends on local resources.

Enables keyword searching within text files with configurable case sensitivity, returning matching lines with line numbers and occurrence counts.

  1. Features
    1. Setup
      1. Usage
        1. API Endpoints
          1. POST /search
          2. GET /health
          3. GET /
        2. Examples
          1. Using curl:
          2. Using Python:
        3. Testing
          1. Error Responses
            1. Documentation
              1. Project Structure

                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/AnsariUsaid/mcp-keyword-search'

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