The set covers both halves that usually live in separate tools: you can define a collection, push documents into it from a batch or a CSV, and then immediately search it by keyword or by vector without switching to a client library. Three transports is more than most servers of this size offer, and the reason shows in the configuration — stateless mode and an explicit CORS origin exist so a browser-based chat client can talk to it directly.
A Python client for a Typesense node covering the whole loop: collection lifecycle, document writes, both search modes, and a health check. It speaks stdio for desktop clients and Streamable HTTP or SSE for browser-based ones.
- Search two ways against a collection — keyword search, and vector similarity search (search, vector_search).
- Collections listed, described with their schema and metadata, created from a schema you supply, and deleted (list_collections, describe_collection, create_collection, delete_collection).
- A collection emptied of documents while its schema stays in place, and a full export of everything in one (truncate_collection, export_collection).
- Documents written one at a time, created outright or upserted when the record may already exist, and deleted by ID (create_document, upsert_document, delete_document).
- Bulk loading two ways: a batch of documents created, upserted or updated in one call, and documents imported straight from CSV data (index_multiple_documents, import_documents_from_csv).
- A health check on the configured node, for when it is not obvious whether the query or the server is the problem (check_typesense_health).
Python 3.11 or higher and uv, plus a clone of the repository — it runs as `uv --directory <path> run mcp run main.py` rather than from a published package. Four values carry the connection: TYPESENSE_HOST, TYPESENSE_PORT, TYPESENSE_PROTOCOL and TYPESENSE_API_KEY. Stdio is the default; for a browser client set MCP_TRANSPORT to streamable-http, which serves a single /mcp endpoint, and turn on MCP_STATELESS_HTTP for clients that do not keep a session across requests. CORS is off until MCP_CORS_ORIGINS names an origin — name the real one rather than leaving a wildcard in production.
Build from source — clone the repository and build it, then point your client at the binary
