Skip to main content
Glama

MCP Keyword Search

by AnsariUsaid
README.md3.4 kB
# 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 ```bash # 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: ```bash python server.py ``` Server runs at `http://127.0.0.1:8000` Test the server (in another terminal): ```bash python test_client.py ``` ## API Endpoints ### POST `/search` Search for a keyword in a file and get all matching lines. **Request Body:** ```json { "file_path": "example.txt", "keyword": "python", "case_sensitive": false } ``` **Response:** ```json { "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:** ```json { "status": "healthy" } ``` ### GET `/` Root endpoint with server information. ## Examples ### Using curl: ```bash 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: ```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 ```

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