Typesense MCP Server
The Typesense MCP Server is a tool for managing and interacting with a Typesense search engine server through a Model Context Protocol (MCP) interface. It provides:
Server Management: Check health status of the Typesense server and list all available collections.
Collection Management: Describe, export, create, delete, or truncate collections.
Document Operations: Create, upsert, index multiple, or delete individual documents, as well as import documents from CSV data.
Search Capabilities: Perform keyword searches with filtering, sorting, and pagination, and execute vector similarity searches for advanced querying.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Typesense MCP Serversearch for customer support articles about billing issues"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Typesense MCP Server
A Model Context Protocol (MCP) Server that interfaces with Typesense
Installation
Install uv
Requires Python 3.11 or higher.
On Mac you can install it using homebrew
brew install uvClone the package
git clone git@github.com:avarant/typesense-mcp-server.git ~/typesense-mcp-serverAdd the server to your MCP client config. Most clients (Cursor at ~/.cursor/mcp.json, Claude Desktop at ~/Library/Application Support/Claude/claude_desktop_config.json, Windsurf, Zed, VS Code, etc.) accept the same mcpServers shape:
{
"mcpServers": {
"typesense": {
"command": "uv",
"args": ["--directory", "~/typesense-mcp-server", "run", "mcp", "run", "main.py"],
"env": {
"TYPESENSE_HOST": "",
"TYPESENSE_PORT": "",
"TYPESENSE_PROTOCOL": "",
"TYPESENSE_API_KEY": ""
}
}
}
}Refer to your client's MCP documentation for the exact config file location.
Related MCP server: Better Qdrant MCP Server
Transports
The server supports three MCP transports. STDIO is the default and is what most desktop clients (Claude Desktop, Cursor, etc.) use. For remote clients or web UIs, you can run it as an HTTP server using either the legacy SSE transport or the newer Streamable HTTP transport.
STDIO (default)
TYPESENSE_API_KEY=xyz uv run python main.pyStreamable HTTP (recommended for web clients)
Single endpoint at /mcp. Works with browser-based clients like the llama.cpp web chat. Set MCP_TRANSPORT=streamable-http (or pass --http):
TYPESENSE_API_KEY=xyz \
MCP_TRANSPORT=streamable-http \
MCP_STATELESS_HTTP=true \
MCP_CORS_ORIGINS='*' \
uv run python main.pyStateless mode (
MCP_STATELESS_HTTP=true) is required for clients that don't keep an MCP session across requests.CORS must be enabled (
MCP_CORS_ORIGINS) for browser clients. Use a specific origin likehttp://localhost:8080in production rather than*.
SSE (legacy)
Two endpoints, GET /sse for the event stream and POST /messages/ for JSON-RPC. Set MCP_TRANSPORT=sse (or pass --sse):
TYPESENSE_API_KEY=xyz MCP_TRANSPORT=sse uv run python main.pyConfiguration
Env var | Default | Description |
|
|
|
|
| Bind address for HTTP transports |
|
| Bind port for HTTP transports |
|
| Stateless mode for HTTP transports (required for some web clients) |
| (empty) | Comma-separated allowed origins. Empty disables CORS. |
Available Tools
The Typesense MCP Server provides the following tools:
Server Management
check_typesense_health- Checks the health status of the configured Typesense serverlist_collections- Retrieves a list of all collections in the Typesense server
Collection Management
describe_collection- Retrieves the schema and metadata for a specific collectionexport_collection- Exports all documents from a specific collectioncreate_collection- Creates a new collection with the provided schemadelete_collection- Deletes a specific collectiontruncate_collection- Truncates a collection by deleting all documents but keeping the schema
Document Operations
create_document- Creates a single new document in a specific collectionupsert_document- Upserts (creates or updates) a single document in a specific collectionindex_multiple_documents- Indexes (creates, upserts, or updates) multiple documents in a batchdelete_document- Deletes a single document by its ID from a specific collectionimport_documents_from_csv- Imports documents from CSV data into a collection
Search Capabilities
search- Performs a keyword search on a specific collectionvector_search- Performs a vector similarity search on a specific collection
Available Tools
14 toolscheck_typesense_healthB
Checks the health status of the configured Typesense server.
Args:
ctx (Context): The MCP context, providing access to application resources.
Returns:
dict | str: The health status dictionary from Typesense or an error message.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the tool returns 'The health status dictionary from Typesense or an error message,' which hints at read-only behavior and potential errors. However, it lacks details on authentication needs, rate limits, what 'health status' entails (e.g., uptime, metrics), or side effects. For a tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the purpose clearly, followed by structured 'Args' and 'Returns' sections. There's minimal waste, though the 'ctx' argument explanation is somewhat redundant given MCP conventions. Overall, it's efficient and well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (0 parameters, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose and return types but lacks depth in behavioral aspects like error handling or health metrics details. Without annotations or output schema, more context on what 'health status' includes would improve completeness, but it's not entirely inadequate for a simple check tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameters need documentation. The description correctly notes 'Args: ctx (Context): The MCP context,' which adds context beyond the empty schema, though this is standard for MCP tools. It doesn't introduce unnecessary parameter details, aligning with the schema's simplicity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Checks the health status of the configured Typesense server.' It specifies the verb ('checks') and resource ('health status of Typesense server'), making the intent unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'describe_collection' or 'list_collections', which serve different purposes but could be loosely related to system status.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., server configuration), typical use cases (e.g., monitoring, troubleshooting), or exclusions (e.g., not for data operations). With siblings focused on data manipulation (create, delete, search), some implicit context exists, but no explicit usage instructions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_collectionC
Creates a new collection with the provided schema.
Args:
ctx (Context): The MCP context.
schema (dict): The collection schema dictionary (must include 'name' and 'fields').
Returns:
dict | str: The created collection schema dictionary or an error message string.
| Name | Required | Description | Default |
|---|---|---|---|
| schema | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states this is a creation operation, implying mutation, but doesn't cover permissions, idempotency, error handling, or side effects. The return type hint ('dict | str') is minimal. For a mutation tool with zero annotation coverage, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a purpose statement, Args section, and Returns section. It's front-loaded and avoids unnecessary details. However, the 'ctx' parameter documentation adds minimal value since it's a standard MCP context, slightly reducing efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (mutation with nested objects), lack of annotations, no output schema, and low schema coverage, the description is incomplete. It doesn't explain the collection schema format, error conditions, or behavioral implications. The return type hint is vague ('dict | str'), failing to provide adequate context for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds value by naming the parameter ('schema'), specifying it's a 'dict', and noting it 'must include 'name' and 'fields''. However, it doesn't fully explain the schema structure or constraints beyond this, leaving gaps. The baseline is 3 due to partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Creates a new collection with the provided schema.' It specifies the verb ('creates') and resource ('collection'), and distinguishes it from siblings like 'delete_collection' or 'list_collections'. However, it doesn't explicitly differentiate from 'describe_collection' in terms of creation vs. description, keeping it at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, when-not-to-use scenarios, or compare it to other collection-related tools like 'truncate_collection' or 'export_collection'. The agent must infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_documentC
Creates a single new document in a specific collection.
Args:
ctx (Context): The MCP context.
collection_name (str): The name of the collection.
document (dict): The document data to create (must include an 'id' field unless auto-schema).
Returns:
dict | str: The created document dictionary or an error message string.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_name | Yes | ||
| document | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool creates a document and mentions an 'id' field requirement, but fails to cover critical aspects like permissions needed, error handling, whether it's idempotent, or mutation effects. This leaves significant gaps for a mutation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by structured parameter and return details. It avoids unnecessary fluff, but the Args/Returns formatting could be more integrated into natural language, slightly affecting flow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a mutation tool with no annotations, no output schema, and 0% schema coverage, the description is incomplete. It lacks details on error cases, return value structure beyond 'dict | str', and behavioral traits like idempotency or side effects, making it inadequate for safe agent use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains that 'collection_name' specifies the target collection and 'document' includes data with an 'id' field requirement, adding some semantic context beyond the bare schema. However, it doesn't detail format constraints or examples, keeping it at a baseline level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('creates') and resource ('single new document in a specific collection'), making the purpose evident. However, it doesn't explicitly differentiate from sibling tools like 'index_multiple_documents' or 'upsert_document', which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'upsert_document' or 'index_multiple_documents'. The description mentions the tool's function but lacks context about prerequisites, constraints, or comparisons with siblings, leaving the agent without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_collectionC
Deletes a specific collection.
Args:
ctx (Context): The MCP context.
collection_name (str): The name of the collection to delete.
Returns:
dict | str: The deleted collection schema dictionary or an error message string.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It mentions that the tool returns either the deleted schema or an error, which is useful, but doesn't cover critical aspects like whether deletion is irreversible, permission requirements, or side effects on related data (e.g., documents in the collection).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the core purpose. The Args and Returns sections are structured but could be more integrated; overall, it's efficient with minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations, no output schema, and low schema coverage, the description is incomplete. It lacks details on behavioral traits (e.g., irreversibility), error handling beyond a mention, and context for usage among siblings, making it inadequate for safe and effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds the meaning of 'collection_name' as 'the name of the collection to delete', which clarifies the parameter's role. However, it doesn't provide format details, constraints, or examples, leaving gaps in understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('deletes') and resource ('a specific collection'), making the purpose immediately understandable. It distinguishes from siblings like 'truncate_collection' by specifying deletion rather than emptying, though it doesn't explicitly compare to alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'truncate_collection' (which empties but doesn't delete) or 'describe_collection' (which inspects). The description doesn't mention prerequisites, consequences, or appropriate contexts for deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_documentA
Deletes a single document by its ID from a specific collection.
Args:
ctx (Context): The MCP context.
collection_name (str): The name of the collection.
document_id (str): The ID of the document to delete.
Returns:
dict | str: The deleted document dictionary or an error message string.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_name | Yes | ||
| document_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. While 'Deletes' clearly indicates a destructive operation, the description doesn't disclose whether this requires specific permissions, whether the deletion is permanent/reversible, what happens to related data, or any rate limits. The return value description adds some context but doesn't fully address behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized with a clear purpose statement followed by parameter and return value documentation. The Args/Returns sections are well-structured, though the inclusion of 'ctx (Context)' in Args is unnecessary since it's an MCP implementation detail not relevant to tool selection.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation with no annotations and no output schema, the description provides basic purpose and parameter information but lacks important context about permissions, permanence, side effects, and error handling. The return value description helps but doesn't fully compensate for the missing behavioral transparency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by clearly explaining both parameters: 'collection_name' identifies the specific collection, and 'document_id' identifies the exact document to delete. The description adds meaningful context beyond the bare schema, though it doesn't specify format requirements or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Deletes'), resource ('a single document by its ID'), and scope ('from a specific collection'). It distinguishes from sibling tools like 'delete_collection' (which deletes entire collections) and 'truncate_collection' (which removes all documents from a collection).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for deleting individual documents by ID from collections, but doesn't explicitly state when to use this vs alternatives like 'delete_collection' or 'truncate_collection'. No guidance on prerequisites or error conditions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_collectionC
Retrieves the schema and metadata for a specific collection.
Args:
ctx (Context): The MCP context.
collection_name (str): The name of the collection to describe.
Returns:
dict | str: The collection schema dictionary or an error message string.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is a retrieval operation, implying read-only behavior, but doesn't mention error handling (returns 'error message string'), performance characteristics, authentication needs, or other behavioral traits beyond the basic operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded with the core purpose in the first sentence. The Args and Returns sections are structured but slightly verbose for a single parameter; every sentence earns its place by clarifying input and output.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is minimally complete. It covers the basic operation and parameter semantics but lacks usage guidelines, detailed behavioral context, and output format explanation (only mentions 'schema dictionary' or 'error message').
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning by specifying that 'collection_name' is 'the name of the collection to describe,' which clarifies the parameter's purpose beyond the schema's title 'Collection Name.' However, it doesn't provide format constraints, examples, or validation rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Retrieves the schema and metadata for a specific collection.' It specifies the verb ('retrieves') and resource ('collection'), but doesn't explicitly differentiate from siblings like 'list_collections' or 'export_collection' which handle different operations on collections.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, context for usage, or comparisons to sibling tools like 'list_collections' (which lists collections) or 'export_collection' (which exports data).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_collectionB
Exports all documents from a specific collection.
Warning: This can be memory-intensive for very large collections.
Args:
ctx (Context): The MCP context.
collection_name (str): The name of the collection to export.
Returns:
list[dict] | str: A list of document dictionaries or an error message string.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It usefully warns about memory intensity for large collections, which is valuable operational context. However, it doesn't mention other important behaviors: whether this requires special permissions, what format the exported documents are in (beyond 'list of dictionaries'), whether it's paginated or streams results, or potential timeout/rate limit considerations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the core purpose is stated first, followed by a warning, then parameter and return documentation. Every sentence earns its place, though the Args/Returns formatting is somewhat verbose for a single parameter. No redundant information is included.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (export operation with memory implications), no annotations, and no output schema, the description is partially complete. It covers the basic operation and a key warning, but lacks details about authentication needs, error conditions beyond 'error message string', output format specifics, or performance characteristics. The return type documentation is minimal ('list of document dictionaries').
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, so the description must compensate. It does explain the single parameter ('collection_name') as 'The name of the collection to export', which adds basic meaning beyond the schema's title 'Collection Name'. However, it doesn't provide format expectations, constraints (e.g., naming rules), or examples—just a minimal definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Exports') and resource ('all documents from a specific collection'). It distinguishes itself from siblings like 'list_collections' (metadata only) and 'describe_collection' (schema info), but doesn't explicitly differentiate from 'import_documents_from_csv' (inverse operation) or 'truncate_collection' (deletion vs export).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'list_collections' (for metadata) or 'search' (for filtered queries). The warning about memory intensity is helpful but doesn't constitute usage guidance—it's a behavioral constraint rather than a recommendation about when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_documents_from_csvA
Imports documents from CSV data (as a string) or a file path into a collection.
Assumes CSV header row maps directly to Typesense field names.
Does basic type inference for int/float, otherwise treats as string.
Args:
ctx (Context): The MCP context.
collection_name (str): The name of the collection.
csv_data_or_path (str): Either the raw CSV data as a string or the path to a CSV file.
batch_size (int): Number of documents to import per batch. Defaults to 100.
action (str): Import action ('create', 'upsert', 'update'). Defaults to 'upsert'.
Returns:
dict: A summary of the import process including total processed, successful, failed count, and any errors.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | upsert | |
| batch_size | No | ||
| collection_name | Yes | ||
| csv_data_or_path | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: CSV format expectations (header row mapping, type inference), batch processing capability, and multiple import actions. It explains what gets created/updated and the batch processing approach, though it doesn't mention error handling specifics or performance characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with purpose statement, behavioral details, parameter explanations, and return description in logical sections. The Args and Returns sections are particularly helpful. Could be slightly more concise by integrating some behavioral details into the opening statement, but overall efficient with minimal redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter mutation tool with no annotations and no output schema, the description provides good coverage: clear purpose, parameter semantics, behavioral context (CSV expectations, batching, actions), and return value description. Missing details about error handling edge cases or performance limitations, but generally complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates well by explaining all 4 parameters in the Args section, providing meaning beyond the bare schema. It clarifies that 'csv_data_or_path' accepts either raw data or file path, explains 'batch_size' default and purpose, and enumerates possible 'action' values. Only 'ctx' parameter lacks explanation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific verb ('Imports'), resource ('documents'), source ('from CSV data or a file path'), and destination ('into a collection'). It distinguishes itself from siblings like 'create_document', 'upsert_document', and 'index_multiple_documents' by specifying CSV-based bulk import functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through the CSV header mapping assumption and type inference details, but doesn't explicitly state when to use this tool versus alternatives like 'index_multiple_documents' or 'upsert_document'. No explicit when-not-to-use guidance or prerequisite information is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
index_multiple_documentsA
Indexes (creates, upserts, or updates) multiple documents in a batch.
Args:
ctx (Context): The MCP context.
collection_name (str): The name of the collection.
documents (list[dict]): A list of document dictionaries to index.
action (str): The import action ('create', 'upsert', 'update'). Defaults to 'upsert'.
Returns:
list[dict] | str: A list of result dictionaries (one per document) or an error message string.
Each result dict typically looks like {'success': true/false, 'error': '...', 'document': {...}}.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | upsert | |
| collection_name | Yes | ||
| documents | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the batch nature and available actions, but lacks details on permissions, rate limits, error handling, or what 'indexes' entails (e.g., storage implications). The return format is described, which adds value beyond basic function.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a purpose statement followed by Args and Returns sections. It's front-loaded and efficient, though the return description could be slightly more concise. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with 3 parameters, 0% schema coverage, and no output schema, the description does adequately by covering parameters and return format. However, it lacks context on side effects, idempotency, or error cases, which would be helpful given the complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains all 3 parameters: collection_name, documents (as a list of dicts), and action (with enum-like values and default). This adds crucial meaning beyond the bare schema, though it doesn't detail document structure or collection requirements.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('indexes') and resource ('multiple documents'), specifying it handles batch operations. It distinguishes from single-document siblings like create_document and upsert_document by emphasizing 'multiple' and 'batch', though it doesn't explicitly contrast with import_documents_from_csv.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for batch indexing with different actions (create, upsert, update), but doesn't specify when to choose this over alternatives like create_document for single documents or import_documents_from_csv for CSV imports. No explicit when-not scenarios or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_collectionsC
Retrieves a list of all collections in the Typesense server.
Args:
ctx (Context): The MCP context.
Returns:
list | str: A list of collection schemas or an error message string.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states this is a retrieval operation (read-only), but doesn't disclose important behavioral traits like whether this requires authentication, rate limits, pagination behavior, or what happens when no collections exist. The return type description ('list | str') is minimal and doesn't explain error conditions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately concise with three sentences, but the structure could be improved. The purpose statement is clear, but the Args/Returns formatting is somewhat redundant given the empty parameter list. The description could be more front-loaded with behavioral context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read operation with no annotations and no output schema, the description is incomplete. It doesn't explain what a 'collection schema' contains, how errors are signaled, or important operational constraints. Given the server has multiple collection-related tools, more context about this tool's role would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0 parameters and 100% schema description coverage, the baseline is 4. The description correctly indicates there are no parameters beyond the context object, which aligns with the empty input schema. No additional parameter semantics are needed or provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with a specific verb ('Retrieves') and resource ('list of all collections in the Typesense server'). It distinguishes itself from siblings like 'describe_collection' (detailed view) and 'create_collection' (write operation), but doesn't explicitly mention these distinctions in the description text itself.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'describe_collection' (for detailed info on a specific collection) and 'check_typesense_health' (for server status), there's no indication of when this list operation is appropriate versus those alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchB
Performs a keyword search on a specific collection.
Args:
ctx (Context): The MCP context.
collection_name (str): The name of the collection to search within.
query (str): The search query string. Use '*' for all documents.
query_by (str): Comma-separated list of fields to search in.
filter_by (str | None): Filter conditions (e.g., 'price:>100 && category:Electronics'). Defaults to None.
sort_by (str | None): Sorting criteria (e.g., 'price:asc, rating:desc'). Defaults to None.
group_by (str | None): Field to group results by. Defaults to None.
facet_by (str | None): Fields to facet on. Defaults to None.
per_page (int): Number of results per page. Defaults to 20.
page (int): Page number to retrieve. Defaults to 1.
Returns:
dict | str: The search results dictionary from Typesense or an error message string.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_name | Yes | ||
| facet_by | No | ||
| filter_by | No | ||
| group_by | No | ||
| page | No | ||
| per_page | No | ||
| query | Yes | ||
| query_by | Yes | ||
| sort_by | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions the tool 'Performs a keyword search' and describes parameters, it doesn't disclose important behavioral traits: whether this is a read-only operation, potential rate limits, authentication requirements, error handling patterns, or what happens with large result sets. The Returns section mentions 'error message string' but doesn't elaborate on failure modes.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Args, Returns) and front-loaded purpose. Every sentence earns its place by either stating the tool's purpose or documenting parameters. However, the parameter documentation is quite lengthy (9 parameters with examples), which is necessary given the complexity but reduces overall conciseness. The structure is logical but could be more compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 parameters, no annotations, no output schema), the description is partially complete. It excels at parameter documentation but lacks behavioral context and usage guidelines. The Returns section mentions the format but doesn't describe the structure of successful results. For a search tool with many configuration options and no annotations, more behavioral disclosure would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides excellent parameter semantics beyond the input schema. With 0% schema description coverage, the description fully compensates by explaining all 9 parameters with clear examples: 'Use '*' for all documents', 'e.g., 'price:>100 && category:Electronics'', 'e.g., 'price:asc, rating:desc'', and default values. This adds crucial meaning about how to format complex parameters like filter_by, sort_by, and facet_by.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Performs a keyword search on a specific collection' which provides a specific verb ('search') and resource ('collection'). It distinguishes from siblings like 'vector_search' by specifying 'keyword search' and from CRUD operations like 'create_document' by focusing on retrieval. However, it doesn't explicitly differentiate from 'list_collections' or 'describe_collection' in terms of search vs listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to choose 'search' over 'vector_search' (a key sibling), nor does it provide context about when keyword search is appropriate versus other operations like 'list_collections' or 'describe_collection'. The agent receives no usage boundaries or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
truncate_collectionA
Truncates a collection by deleting all documents but keeping the schema.
Achieved by retrieving schema, deleting collection, and recreating it.
Args:
ctx (Context): The MCP context.
collection_name (str): The name of the collection to truncate.
Returns:
str: A success or error message string.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the destructive nature ('deleting all documents') and the implementation method ('retrieving schema, deleting collection, and recreating it'), which adds useful context about potential side effects (e.g., temporary unavailability). However, it lacks details on permissions, error handling, or performance implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by implementation details and parameter/return explanations. Every sentence earns its place by adding value, with no redundant or verbose content, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description is adequate but has gaps. It covers the purpose, method, and parameters, but lacks details on return values beyond 'success or error message,' error conditions, or integration with sibling tools. Given the complexity, it could benefit from more behavioral context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains that 'collection_name' is 'the name of the collection to truncate,' which adds essential meaning beyond the schema's basic type. However, it doesn't provide examples, constraints, or format details for the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('truncates a collection'), the resource affected ('collection'), and the precise effect ('deleting all documents but keeping the schema'). It distinguishes from sibling tools like delete_collection (which removes the entire collection) and delete_document (which removes individual documents).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through the phrase 'deleting all documents but keeping the schema,' suggesting this tool is for resetting document content while preserving structure. However, it doesn't explicitly state when to use this versus alternatives like delete_collection (for full removal) or manual document deletion, nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upsert_documentA
Upserts (creates or updates) a single document in a specific collection.
Args:
ctx (Context): The MCP context.
collection_name (str): The name of the collection.
document (dict): The document data to upsert (must include an 'id' field).
Returns:
dict | str: The upserted document dictionary or an error message string.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_name | Yes | ||
| document | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the action ('upserts') and return type, but lacks details on permissions, error conditions (beyond mentioning error messages), idempotency, or side effects. For a mutation tool with zero annotation coverage, this is insufficient behavioral disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose in the first sentence, followed by structured Args and Returns sections. Every sentence earns its place by providing essential information without redundancy, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 parameters with 0% schema coverage, no annotations, and no output schema, the description provides basic purpose and parameter hints but lacks details on behavior, error handling, and full parameter semantics. It's minimally adequate but has clear gaps for a mutation tool in this context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning by explaining that 'document' must include an 'id' field, which is crucial semantic info not in the schema. However, it doesn't clarify the format or constraints for 'collection_name' or other aspects of 'document', leaving gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('upserts'), resource ('a single document'), and scope ('in a specific collection'), distinguishing it from siblings like create_document (only creates) and delete_document (deletes). The term 'upserts' is specific and indicates both creation and update functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by specifying 'creates or updates a single document', suggesting it's for when you want to ensure a document exists with given data. However, it doesn't explicitly state when to use this vs. alternatives like create_document or update_document (if present), nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vector_searchB
Performs a vector similarity search on a specific collection.
Args:
ctx (Context): The MCP context.
collection_name (str): The name of the collection to search within.
vector_query (str): The vector query string, formatted as 'vector_field:([v1,v2,...], k: num_neighbors)'.
query_by (str | None): Optional: Comma-separated list of text fields for hybrid search query ('q' parameter). Defaults to None.
filter_by (str | None): Filter conditions to apply before vector search. Defaults to None.
sort_by (str | None): Optional sorting criteria (less common for pure vector search). Defaults to None.
per_page (int): Number of results per page. Defaults to 10.
page (int): Page number to retrieve. Defaults to 1.
Returns:
dict | str: The vector search results dictionary from Typesense or an error message string.
| Name | Required | Description | Default |
|---|---|---|---|
| collection_name | Yes | ||
| filter_by | No | ||
| page | No | ||
| per_page | No | ||
| query_by | No | ||
| sort_by | No | ||
| vector_query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral context. It mentions the tool returns 'vector search results dictionary from Typesense or an error message string' but doesn't describe pagination behavior, rate limits, authentication requirements, or what constitutes a successful versus failed search. For a complex search tool with 7 parameters, this is inadequate disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections for Args and Returns. Each parameter gets its own line with helpful explanations. While comprehensive, it's appropriately sized for a tool with 7 parameters. The opening sentence clearly states the purpose, though some parameter explanations could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, no annotations, no output schema), the description provides good parameter documentation but lacks sufficient behavioral context. It doesn't explain what the search results look like, error conditions, or performance characteristics. The parameter coverage is excellent, but overall completeness suffers from missing operational guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides excellent parameter semantics despite 0% schema description coverage. It explains each parameter's purpose, format requirements (especially for 'vector_query'), default values, and usage context. The 'vector_query' format specification is particularly valuable, and optional parameters are clearly marked with their behaviors. This fully compensates for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'performs a vector similarity search on a specific collection', which is a specific verb+resource combination. It distinguishes from sibling 'search' by specifying 'vector similarity' search, though it doesn't explicitly contrast with other search methods beyond mentioning hybrid search capabilities in parameters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like the sibling 'search' tool. It mentions hybrid search capabilities through the 'query_by' parameter but doesn't explain when vector search is preferred over text search or combined approaches. No prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a distinct purpose with clear boundaries. For example, create_document vs. upsert_document vs. index_multiple_documents cover different single/batch operations, while search vs. vector_search target different search methods. No tools appear to duplicate functionality.
All tools follow a consistent verb_noun pattern with snake_case throughout (e.g., create_collection, delete_document, list_collections). The naming convention is predictable and matches the action-resource structure of the Typesense API domain.
With 14 tools, this server provides comprehensive coverage for a search engine/database server. The count is well-scoped for the domain, offering health checks, collection management, document CRUD operations, search capabilities, and data import/export without being overwhelming.
The tool set provides complete coverage for Typesense operations, including health monitoring, full collection lifecycle (create/describe/list/delete/truncate), document operations (create/upsert/delete/batch import/indexing), and both keyword and vector search capabilities. No obvious gaps exist for core search engine functionality.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
The Needle MCP server enables semantic search on documents stored in files like PDFs, DOCX, and XLSX by connecting AI applications to external data sources. It provides capabilities to create and manage document collections, perform natural language searches on stored content, and retrieve relevant information without requiring exact keyword matches.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
Related MCP Servers
- AlicenseAqualityCmaintenanceA Model Context Protocol server providing vector database capabilities through Chroma, enabling semantic document search, metadata filtering, and document management with persistent storage.641MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol server that enables semantic search capabilities by providing tools to manage Qdrant vector database collections, process and embed documents using various embedding services, and perform semantic searches across vector embeddings.4714MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that provides AI assistants with direct access to local document collections through full-text search, supporting multiple formats and hierarchical collections.MIT
- AlicenseNot gradedqualityBmaintenanceA local-first semantic search server for documents, supporting PDFs, Office files, and text/markdown, enabling natural language search via the Model Context Protocol (MCP).1MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/avarant/typesense-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server