{
  "name": "typesense",
  "display_name": "Typesense",
  "description": "A Model Context Protocol (MCP) server implementation that provides AI models with access to Typesense search capabilities. This server enables LLMs to discover, search, and analyze data stored in Typesense collections.",
  "repository": {
    "type": "git",
    "url": "https://github.com/suhail-ak-s/mcp-typesense-server"
  },
  "homepage": "https://github.com/suhail-ak-s/mcp-typesense-server",
  "author": {
    "name": "suhail-ak-s"
  },
  "license": "MIT",
  "categories": [
    "Databases"
  ],
  "tags": [
    "Typesense",
    "Server",
    "Search"
  ],
  "installations": {
    "npm": {
      "type": "npm",
      "command": "npx",
      "args": [
        "-y",
        "typesense-mcp-server",
        "--host",
        "${TYPESENSE_HOST}",
        "--port",
        "8108",
        "--protocol",
        "http",
        "--api-key",
        "${API_KEY}"
      ]
    }
  },
  "examples": [
    {
      "title": "Example Usage with Claude Desktop",
      "description": "Configuration for using Typesense MCP Server with Claude Desktop.",
      "prompt": "{\"mcpServers\": {\"typesense\": {\"command\": \"npx\",\"args\": [\"-y\",\"typesense-mcp-server\",\"--host\", \"your-typesense-host\",\"--port\", \"8108\",\"--protocol\", \"http\",\"--api-key\", \"your-api-key\"]}}}"
    }
  ],
  "arguments": {
    "TYPESENSE_HOST": {
      "description": "The host for the Typesense server. This is the address where your Typesense server is running.",
      "required": true,
      "example": "localhost"
    },
    "API_KEY": {
      "description": "The API key for accessing the Typesense server. This is needed for authentication when making requests to the server.",
      "required": true,
      "example": "your_api_key_here"
    }
  },
  "tools": [
    {
      "name": "typesense_query",
      "description": "Search for relevant documents in the TypeSense database based on the user's query.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "The search query entered by the user."
          },
          "collection": {
            "type": "string",
            "description": "The name of the TypeSense collection to search within."
          },
          "query_by": {
            "type": "string",
            "description": "Comma-separated fields to search in the collection, e.g., 'title,content'."
          },
          "filter_by": {
            "type": "string",
            "description": "Optional filtering criteria, e.g., 'category:Chatbot'."
          },
          "sort_by": {
            "type": "string",
            "description": "Sorting criteria, e.g., 'created_at:desc'."
          },
          "limit": {
            "type": "integer",
            "description": "The maximum number of results to return.",
            "default": 10
          }
        },
        "required": [
          "query",
          "collection",
          "query_by"
        ]
      }
    },
    {
      "name": "typesense_get_document",
      "description": "Retrieve a specific document by ID from a Typesense collection",
      "inputSchema": {
        "type": "object",
        "properties": {
          "collection": {
            "type": "string",
            "description": "The name of the TypeSense collection"
          },
          "document_id": {
            "type": "string",
            "description": "The ID of the document to retrieve"
          }
        },
        "required": [
          "collection",
          "document_id"
        ]
      }
    },
    {
      "name": "typesense_collection_stats",
      "description": "Get statistics about a Typesense collection",
      "inputSchema": {
        "type": "object",
        "properties": {
          "collection": {
            "type": "string",
            "description": "The name of the TypeSense collection"
          }
        },
        "required": [
          "collection"
        ]
      }
    }
  ]
}