manifest.json•4.43 kB
{
  "dxt_version": "0.1",
  "name": "mcp-pinot",
  "display_name": "Apache Pinot MCP Server",
  "version": "1.0.0",
  "description": "An MCP server that lets Claude (or any MCP compatible agent) explore and query Apache Pinot clusters.",
  "long_description": "This extension exposes a rich toolset for real-time analytics on Apache Pinot: listing tables, segments, schemas, running read-only SQL, and managing table or schema configs. It’s fully Python-based and runs over STDIO, making it easy to embed inside Claude Desktop or other MCP hosts.",
  "author": {
    "name": "StarTree",
    "url": "https://startree.ai/"
  },
  "icon": "assets/pinot_logo.png",
  "screenshots": [
    "assets/github-events-analysis.png",
    "assets/pinot-mcp-in-action.png"
  ],
  "server": {
    "type": "python",
    "entry_point": "mcp_pinot/server.py",
    "mcp_config": {
      "command": "python3",
      "args": ["${__dirname}/mcp_pinot/server.py"],
      "env": {
        "PYTHONPATH": "${__dirname}/mcp_pinot/lib",
        "PINOT_CONTROLLER_URL": "${user_config.controller_url}",
        "PINOT_BROKER_URL": "${user_config.broker_url}",
        "PINOT_USERNAME": "${user_config.username}",
        "PINOT_PASSWORD": "${user_config.password}",
        "PINOT_TOKEN": "${user_config.token}",
        "PINOT_USE_MSQE": "${user_config.use_msqe}",
        "PINOT_REQUEST_TIMEOUT": "${user_config.request_timeout}"
      }
    }
  },
  "tools": [
    { "name": "test-connection",            "description": "Test Pinot connection and return diagnostics" },
    { "name": "read-query",                 "description": "Execute a SELECT query on the Pinot database" },
    { "name": "list-tables",                "description": "List all tables in Pinot" },
    { "name": "table-details",              "description": "Get table size details" },
    { "name": "segment-list",               "description": "List segments for a table" },
    { "name": "index-column-details",       "description": "Get index/column details for a segment" },
    { "name": "segment-metadata-details",   "description": "Get metadata for segments of a table" },
    { "name": "tableconfig-schema-details", "description": "Get table config and schema" },
    { "name": "create-schema",              "description": "Create a new schema" },
    { "name": "update-schema",              "description": "Update an existing schema" },
    { "name": "get-schema",                 "description": "Fetch a schema by name" },
    { "name": "create-table-config",        "description": "Create table configuration" },
    { "name": "update-table-config",        "description": "Update table configuration" },
    { "name": "get-table-config",           "description": "Get table configuration" }
  ],
  "keywords": ["pinot", "database", "analytics", "mcp", "python"],
  "license": "Apache-2.0",
  "user_config": {
    "controller_url": {
      "type": "string",
      "title": "Pinot Controller URL",
      "description": "HTTP(S) endpoint of the Pinot Controller",
      "default": "http://localhost:9000",
      "required": false
    },
    "broker_url": {
      "type": "string",
      "title": "Pinot Broker URL",
      "description": "HTTP(S) endpoint of the Pinot Broker (host:port)",
      "default": "http://localhost:8000",
      "required": false
    },
    "username": {
      "type": "string",
      "title": "Username",
      "description": "Pinot basic-auth username (optional)",
      "default": "",
      "required": false
    },
    "password": {
      "type": "string",
      "title": "Password",
      "description": "Pinot basic-auth password (optional)",
      "default": "",
      "required": false
    },
    "token": {
      "type": "string",
      "title": "Auth Token",
      "description": "Bearer token for Pinot (overrides username/password)",
      "default": "",
      "required": false
    },
    "use_msqe": {
      "type": "boolean",
      "title": "Use MSQE",
      "description": "Enable Multi-Stage Query Engine (Pinot > 1.1)",
      "default": true,
      "required": false
    },
    "request_timeout": {
      "type": "number",
      "title": "Request Timeout (s)",
      "description": "Per-request timeout in seconds",
      "default": 60,
      "required": false
    }
  },
  "compatibility": {
    "claude_desktop": ">=0.10.0",
    "platforms": ["darwin", "win32", "linux"],
    "runtimes": {
      "python": ">=3.10.0 <4"
    }
  }
}