Add your description here
Project description
Full Text Search MCP
A full-text search server using Tantivy that can be used as both an MCP (Model Context Protocol) server and a Python library.
Installation
pip install -e .
Usage
As an MCP Server (CLI)
python -m full_text_search.mcp \
--data-file data.jsonl \
--id-column id \
--text-column content \
--searchable-columns title content tags \
--description "My document search index" \
--host 0.0.0.0 \
--port 8000
As a Python Library
The FullTextSearchMCP class can be imported and used programmatically:
from full_text_search.mcp import FullTextSearchMCP
# Create and initialize the search server
server = FullTextSearchMCP()
server.initialize(
data_file="data.jsonl",
id_column="id",
text_column="content",
searchable_columns=["title", "content", "tags"],
description="My search index"
)
# Use search functionality directly
results = server.search("python programming", limit=10)
print(results)
# Retrieve specific documents
docs = server.read_documents(["doc1", "doc2"])
print(docs)
# Or run as MCP server programmatically
server.run_server(host="localhost", port=8080)
Creating an MCP Server Instance
You can also create a FastMCP server instance for integration with other applications:
from full_text_search.mcp import FullTextSearchMCP
server = FullTextSearchMCP()
server.initialize(
data_file="data.jsonl",
id_column="id",
text_column="content",
searchable_columns=["title", "content"],
description="My search index"
)
# Get the FastMCP server instance
mcp_server = server.create_mcp_server()
# Use mcp_server with your preferred transport
Data Format
The input data should be in JSONL format (one JSON object per line):
{"id": "1", "title": "Python Basics", "content": "Introduction to Python programming..."}
{"id": "2", "title": "Advanced Python", "content": "Advanced concepts in Python..."}
Features
- Full-text search using Tantivy search engine
- Modular design - can be used as a library or standalone server
- No global state - all functionality encapsulated in the
FullTextSearchMCPclass - MCP protocol support for integration with AI assistants
- Flexible column mapping - specify which columns to search and how to identify documents
- Document retrieval by ID for full content access
API Methods
FullTextSearchMCP.initialize()
Initialize the search index with your data.
Parameters:
data_file: Path to JSONL file containing documentsid_column: Name of column containing unique document IDstext_column: Name of main text column for contentsearchable_columns: List of column names to make searchabledescription: Description of what this search index containsindex_path: Optional path for index storage (defaults to{data_file}_index)
FullTextSearchMCP.search(query, limit=5)
Search documents and return previews.
Parameters:
query: Search query stringlimit: Maximum number of results to return
Returns: Formatted string with search results and previews
FullTextSearchMCP.read_documents(document_ids)
Retrieve full content for specific document IDs.
Parameters:
document_ids: List of document IDs to retrieve
Returns: Formatted string with full document content
FullTextSearchMCP.create_mcp_server()
Create a FastMCP server instance with search tools.
Returns: FastMCP server instance
FullTextSearchMCP.run_server(host="0.0.0.0", port=8000)
Run the MCP server.
Parameters:
host: Host address for the serverport: Port number for the server
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fts_mcp-0.0.5.tar.gz.
File metadata
- Download URL: fts_mcp-0.0.5.tar.gz
- Upload date:
- Size: 20.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e42554b1cf50a3d9e71354c9292b1d9faae82fe45fa4ff60a9d56ffa89619e4
|
|
| MD5 |
496b8e6bfa25dafbb78b69078e068b25
|
|
| BLAKE2b-256 |
2b5df6d9172d51dbb1c7db6e5cce3d23ba1a2c68e89c446641af746d47ab1182
|
File details
Details for the file fts_mcp-0.0.5-py3-none-any.whl.
File metadata
- Download URL: fts_mcp-0.0.5-py3-none-any.whl
- Upload date:
- Size: 21.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.11.10
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dc2ab3b8069f6a77e56bd9515a19379f890c52d3fdc68a1e4303493ab77dfd01
|
|
| MD5 |
37ba5ff5bf0ec4f6d63442d9d76277ad
|
|
| BLAKE2b-256 |
ab06a0b90ea2c1b7d20261e2f10d80e7baf631985116b31a1a94d6b036f69e83
|