Enables natural language querying of Lucene/NRTSearch indexes through GitHub Copilot Chat, allowing AI-assisted search with support for Boolean, phrase, range, wildcard, and fuzzy queries.
NRTSearch MCP Server
Production-ready Model Context Protocol (MCP) server for Lucene/NRTSearch, with first-class support for AI assistants like GitHub Copilot and Claude.
Features
Exposes NRTSearch/Lucene search as a robust MCP server for AI tools
Accepts any Lucene query (Boolean, phrase, range, wildcard, fuzzy, etc.)
Structured logging, retries, and highlight support
Pure unit-testable search logic with full test coverage
Easy integration with GitHub Copilot, Claude Desktop, and other MCP clients
Modern Python packaging and configuration (Pydantic, pyproject.toml)
Quick Start
This will:
Install all dependencies (including MCP SDK)
Start the server on the configured port
Usage
CLI / Manual
After installation, you can start the server with either:
With GitHub Copilot (VS Code)
Install VS Code and GitHub Copilot
Add
nrtsearch-mcpas a Model Context Provider in VS Code settings (see.vscode/settings.json)Start the server (
./quickstart.shornrtsearch-mcp)Use Copilot Chat to query your Lucene indexes in natural language
Configuration
The server is configured via environment variables and/or a JSON config file. By default, it looks for:
NRTSEARCH_MCP_CONFIGenv var (path to config)./config.jsonin the current directory~/nrtsearch-mcp-config.jsonin your home directory
Example config:
Key environment variables:
LOG_LEVEL(default: INFO)NRTSEARCH_MCP_CONFIG(optional config path)
API: Search Tool
The main tool is nrtsearch/search:
Parameters:
index(str): Index name (e.g.yelp_reviews_staging)queryText(str): Full Lucene query (e.g.text:(irish AND pub AND (texas OR tx)))topHits(int, default 10): Number of results (1-100)retrieveFields(list, optional): Fields to return (default:["text", "stars"])highlight(bool, optional): Highlight matches
Returns:
List of hits:
{score, stars, text}
Lucene Query Examples:
text:(irish AND pub AND (texas OR tx))text:"great coffee"stars:[4 TO 5] AND text:(vegan AND brunch)
Testing
Run all tests (unit, no server needed):
Tests cover:
Success, empty, and multiple hits
Error handling (HTTP, network, malformed, missing fields)
Retry logic
Highlight and custom fields
Input validation
Project Structure
License
Apache License 2.0. See LICENSE.