Index and Query Documents with Lucene
Java/Spring Boot MCP server for Apache Lucene full-text document search, indexing, and metadata-filtered queries.
Why it matters
Leverage Apache Lucene for efficient full-text search and document retrieval. This Spring Boot-based MCP server allows for indexing, updating, and querying documents with advanced filtering capabilities.
Outcomes
What it gets done
Index documents using Apache Lucene.
Perform full-text searches and retrieve documents.
Update and delete documents by ID.
Filter search results using metadata.
Install
Add it to your toolbox
Run in your project directory:
curl -fsSL https://spark.entire.vc/get/vb-lucene-mcp-server | bash Capabilities
Tools your agent gets
Get server and index status information
Add or update documents in the Lucene index
Query documents with optional metadata filters using Lucene syntax
Delete documents by ID from the Lucene index
List documents with pagination support
Overview
lucene-mcp-server MCP Server
A Java/Spring Boot MCP server exposing Apache Lucene full-text search and indexing through five tools (status, upsert, query, delete, list), with complex query syntax and metadata filtering. Use it when an MCP client needs classic full-text inverted-index search, not vector/embedding-based semantic search.
What it does
A Java-based MCP server providing document search and retrieval using Apache Lucene for full-text indexing and search, built on Spring Boot. It exposes an MCP-compatible tool interface backed by a RESTful API for document management: adding, updating, deleting, and listing documents in a Lucene index, plus complex Lucene query-syntax searches with metadata-based filtering.
When to use - and when NOT to
Use it when an MCP client such as Claude Desktop needs full-text search and document indexing backed by Apache Lucene - upserting documents, running Lucene-syntax queries with metadata filters, or listing and deleting indexed documents. It is not a vector or embedding-based semantic search server - it is Lucene's classic full-text inverted-index search.
Capabilities
Five tools are exposed: lucene_status (get server/index status), lucene_upsert (add or update documents), lucene_query (query documents with optional metadata filters), lucene_delete (delete by ID), and lucene_list (list documents with pagination). The server supports complex queries using Lucene's query syntax and metadata-based filtering, is built on Spring Boot for straightforward setup and deployment, and includes Docker instructions for containerization. Configuration requires the LUCENE_BASE_URL environment variable (the Lucene server API base URL); MCP_FORCE_TEXT is optional, forcing text output when a client can't render JSON tool output. It requires Java 11+ and Maven 3.6.0+ (Docker optional), listens on port 8080 by default, and can be reconfigured via Spring Boot application properties such as server.port and lucene.index.path. A Node.js MCP shim bridges the Java server to Claude Desktop over STDIO. Besides building from source, the server can be run via Docker (docker build then docker run -p 8080:8080) or directly with mvn spring-boot:run; the shim itself is started separately with npm install followed by LUCENE_BASE_URL=http://localhost:8080/mcp/v1 npm start. Claude Desktop is pointed at the shim through an mcpServers config entry naming the Node executable and the shim's server.js path (or a wrapper shell script), with LUCENE_BASE_URL and MCP_FORCE_TEXT passed through its env block. Example tool invocations include running lucene_status with no arguments, lucene_list with a limit/offset pair, lucene_upsert with a documents array carrying id/text/metadata, lucene_query with a queries array specifying query and top_k, and lucene_delete with an ids array.
How to install
git clone https://github.com/your-username/mcp-lucene-server.git
cd mcp-lucene-server
mvn clean install
java -jar target/mcp-lucene-server-0.0.1-SNAPSHOT.jar
Who it's for
Developers who need MCP-connected full-text document search backed by Apache Lucene, integrated into Claude Desktop or another MCP client via a Node-based shim over STDIO.
Source README
A Java-based MCP server that provides efficient document search and retrieval capabilities using Apache Lucene for full-text indexing and search, built on Spring Boot.
Installation
From Source
git clone https://github.com/your-username/mcp-lucene-server.git
cd mcp-lucene-server
mvn clean install
java -jar target/mcp-lucene-server-0.0.1-SNAPSHOT.jar
Docker
docker build -t mcp-lucene-server .
docker run -p 8080:8080 mcp-lucene-server
Spring Boot
mvn spring-boot:run
MCP Shim
cd mcp-shim
npm install
LUCENE_BASE_URL=http://localhost:8080/mcp/v1 npm start
Configuration
Claude Desktop
{
"mcpServers": {
"lucene": {
"command": "/opt/homebrew/bin/node",
"args": [".../MCP-Lucene-Server/mcp-shim/server.js"],
"env": {
"LUCENE_BASE_URL": "http://localhost:8080/mcp/v1",
"MCP_FORCE_TEXT": "1"
}
}
}
}
Claude Desktop with Wrapper Script
{
"mcpServers": {
"lucene": {
"command": ".../MCP-Lucene-Server/mcp-shim/run-shim.sh",
"env": {
"LUCENE_BASE_URL": "http://localhost:8080/mcp/v1",
"MCP_FORCE_TEXT": "1"
}
}
}
}
Available Tools
| Tool | Description |
|---|---|
lucene_status |
Get server/index status |
lucene_upsert |
Add or update documents |
lucene_query |
Query documents (with optional metadata filters) |
lucene_delete |
Delete by ID |
lucene_list |
List documents with pagination |
Features
- MCP Compatibility: Implements the core Model Context Protocol
- Lucene-Based: Uses Apache Lucene for full-text search and indexing
- RESTful API: Provides a RESTful API for server interaction
- Document Management: Add, update, delete, and list documents in the Lucene index
- Complex Queries: Supports complex queries using Lucene query syntax
- Filtering: Filter queries based on document metadata
- Spring Boot: Built on Spring Boot for easy configuration and deployment
- Dockerization: Includes instructions for containerizing the application with Docker
Environment Variables
Required
LUCENE_BASE_URL- Base URL for the Lucene server API
Optional
MCP_FORCE_TEXT- Force text output if the client cannot render JSON tool outputs
Usage Examples
Run lucene_status
Run lucene_list with: { "limit": 10, "offset": 0 }
Run lucene_upsert with: {"documents":[{"id":"doc-1","text":"hello world","metadata":{"lang":"en"}}]}
Run lucene_query with: {"queries":[{"query":"hello","top_k":5}]}
Run lucene_delete with: { "ids": ["doc-1"] }
Resources
Notes
Requires Java 11+, Maven 3.6.0+, and optionally Docker. The server runs on port 8080 by default. Configuration can be customized using Spring Boot application properties, including server.port and lucene.index.path. The MCP shim enables integration with Claude Desktop via STDIO.
FAQ
Common questions
Discussion
Questions & comments · 0
Sign In Sign in to leave a comment.