Skip to main content

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

Combined FastAPI + MCP Server (one process)

fts-mcp-plus-api --config example_config.yaml
# MCP served at /mcp, REST API at the root paths (e.g., /search, /fetch)

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 FullTextSearchMCP class
  • 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 documents
  • id_column: Name of column containing unique document IDs
  • text_column: Name of main text column for content
  • searchable_columns: List of column names to make searchable
  • description: Description of what this search index contains
  • index_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 string
  • limit: 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 server
  • port: Port number for the server

Metadata

Release files for fts-mcp 0.0.14

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for fts-mcp 0.0.14
File Size Uploaded
fts_mcp-0.0.14.tar.gz 80.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for fts-mcp 0.0.14
File Interpreter ABI Platform
fts_mcp-0.0.14-py3-none-any.whl Python 3 none any Details

Total release size: 177.3 kB

Release files / fts_mcp-0.0.14.tar.gz

Download URL fts_mcp-0.0.14.tar.gz
Size 80.4 kB
Tags Source
SHA-256 checksum
How to use checksums
438f29363b049b02055a9330e27baa824079380aee63b7699a8398f886467496
BLAKE2b-256 checksum
How to use checksums
25ce5f2524ee0f0ae9b2d6ad67364337d2056de0ca2c0eace77b7d70d40688bb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.0

Release files / fts_mcp-0.0.14-py3-none-any.whl

Download URL fts_mcp-0.0.14-py3-none-any.whl
Size 96.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
98a274bce62ed18ec00fea414787f35e841711b9580c7a1c60f5883f0fe836b7
BLAKE2b-256 checksum
How to use checksums
d1b35331cd00af54bbeee10c422ef7ae630c5e8d9e41e674b07c23504eb40f79
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.13.0

Release history Release notifications | RSS feed

This release

0.0.14 This release

2 release files

0.0.13

2 release files

0.0.12

2 release files

0.0.11

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page