PI API MCP Server

Un servidor MCP para interactuar con la API de PI Dashboard.

Documentación

Servidor MCP de PI API

smithery badge

Un servidor de Protocolo de Contexto de Modelo (MCP) que proporciona herramientas y recursos estandarizados para interactuar con la API del Panel de PI. Esta implementación permite a Claude y otros asistentes de IA compatibles con MCP acceder y gestionar de forma segura los recursos del Panel de PI, incluyendo categorías y gráficos.

Utilizando PI con MCP

A continuación se muestran escenarios de uso típicos para este Servidor MCP después de completar la configuración.

Autenticación inicial:

  • Ejecute las siguientes instrucciones para establecer una conexión:
Ensure the PI API MCP server is running
Set the API URL to http://localhost:8224/pi/api/v2
Use the authenticate tool for authentication guidance
Check the connection status to verify everything is working
List two charts from the dashboard

Análisis de gráficos:

  • Si el gráfico con ID 450 contiene información de metadatos, use el siguiente mensaje:
Retrieve the metadata from chart ID 450
Extract the chart JSON data from ID 450
Identify chart IDs associated with claims
Obtain JSON data for the identified charts
Analyze the data to generate actionable insights

Ejemplo de salida:

example-response.png

Instalación

Instalación mediante Smithery

Para instalar pi-api-mcp-server para Claude Desktop automáticamente a través de Smithery:

npx -y @smithery/cli install @mingzilla/pi-api-mcp-server --client claude

Instalación - Usando Docker (Recomendado)

  • No se necesita configuración del Servidor MCP
  • Configuración del archivo del cliente MCP:
{
  "mcpServers": {
    "pi-api": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "API_URL=http://localhost:8224/pi/api/v2",
        "-e",
        "PI_API_KEY=XXXXXXXX",
        "mingzilla/pi-api-mcp-server"
      ],
      "disabled": false,
      "autoApprove": [
        "keep-session-alive",
        "check-connection",
        "authenticate",
        "list-categories",
        "get-category",
        "list-charts", 
        "get-chart",
        "export-chart",
        "get-filterable-attributes",
        "export-chart"
      ]
    }
  }
}

Nota importante: Si el parámetro --api-url no se proporciona en la inicialización, el servidor le solicitará configurar la URL de la API usando la herramienta set-api-url antes de ejecutar cualquier operación. Este diseño permite una configuración flexible en entornos donde la URL no está predeterminada al inicio.

Ubicación del Archivo de Configuración

Acceda a la configuración de la aplicación Claude for Desktop en:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: Use otras herramientas por ahora. Por ejemplo, Cline - pídale que le muestre el archivo de configuración de MCP

Herramientas Disponibles

Descubrimiento de Esquema

  • get-filterable-attributes: Obtenga la lista de atributos que se pueden usar para filtrar examinando una entidad de muestra
    Get the filterable attributes for chart entities
    

Gestión de Conexión

  • check-connection: Verifique si la URL de la API actual y la autenticación son válidas
  • set-api-url: Configure la URL base de la API para todas las solicitudes
    Set the API URL to http://localhost:8224/pi/api/v2
    

Autenticación

  • authenticate: Obtenga orientación sobre las opciones de autenticación
  • authenticate-with-credentials: Autentíquese con nombre de usuario y contraseña (opción de último recurso)
  • keep-session-alive: Verifique y actualice el token de autenticación actual (también se usa para autenticación basada en tokens)
  • logout: Invalide el token actual y finalice la sesión
  • set-organization: Establezca el ID de organización para solicitudes posteriores

Categorías

  • list-categories: Liste todas las categorías con soporte de filtrado
  • get-category: Obtenga una categoría por ID
  • create-category: Cree una nueva categoría
  • update-category: Actualice una categoría existente
  • delete-category: Elimine una categoría
  • list-category-objects: Liste todos los objetos de una categoría específica

Gráficos

  • list-charts: Liste todos los gráficos con soporte de filtrado
  • get-chart: Obtenga un gráfico por ID
  • delete-chart: Elimine un gráfico
  • export-chart: Exporte un gráfico en varios formatos

Recursos Disponibles

  • auth://status: Obtenga el estado de autenticación
  • categories://list: Liste todas las categorías
  • categories://{id}: Obtenga una categoría específica
  • categories://{categoryId}/objects: Obtenga objetos de una categoría específica
  • charts://list: Liste todos los gráficos
  • charts://{id}: Obtenga un gráfico específico
  • charts://{id}/export/{format}: Exporte un gráfico en un formato específico

Mensajes Disponibles

  • analyze-categories: Analice categorías en el panel
  • analyze-charts: Analice gráficos en el panel
  • compare-charts: Compare datos entre dos gráficos
  • category-usage-analysis: Analice cómo se utilizan las categorías en los gráficos
  • use-filters: Muestra cómo usar los filtros de manera efectiva con esta API

Ejemplos de Integración con Claude

Aquí hay algunas consultas de ejemplo para usar con Claude después de conectar el servidor:

Establecer la URL de la API

Please use the set-api-url tool to set the PI API URL to http://localhost:8224/pi/api/v2

Autenticación

Please help me authenticate to the PI API.
I have a token. Please use the keep-session-alive tool with my token: [YOUR_TOKEN_HERE]
Please check if my connection to the PI API is working properly.

Trabajando con Categorías

List all categories in the dashboard.
Get details about category with ID 123.

Trabajando con Gráficos

List all the charts available in the dashboard.
Export chart with ID 456 as a PDF.

Usando Filtros

Get the filterable attributes for chart entities to understand what fields I can filter on.
List charts with description containing "revenue" using the filter option.

Usando Mensajes de Análisis

Analyze the categories in the dashboard.
Compare data between charts 123 and 456.
Show me how to use filters effectively with this API.

Desarrollo

Ejecución Local

  • Nota: también puede usar start.sh para ejecutar el servidor de desarrollo.
# Clone the repository (SSH or HTTPS option)
git clone git@github.com:mingzilla/pi-api-mcp-server.git
cd pi-api-mcp-server

# Install dependencies
npm install
./dependencies.sh # Installs global dependencies to enable MCP client connection via "@mingzilla/pi-api-mcp-server"

# Build the project
npm run build

# Execute the server
npm start

Instalación mediante NPM

# Global installation
npm install -g @mingzilla/pi-api-mcp-server

# Direct execution via npx
npx @mingzilla/pi-api-mcp-server --api-url "http://localhost:8224/pi/api/v2" --auth-token "XXXXXXXX"

Configuración del Cliente MCP

Integración con Claude for Desktop:

Implementación en Node.js

  • Ejecute las instrucciones de la sección "Ejecución Local"
  • Asegúrese de que ./dependencies.sh se haya ejecutado para instalar las dependencias requeridas
  • Implemente la siguiente configuración (Nota: "@mingzilla/pi-api-mcp-server" hace referencia al paquete instalado mediante "Ejecución Local")
{
  "mcpServers": {
    "pi-api": {
      "command": "npx",
      "args": [
        "-y",
        "@mingzilla/pi-api-mcp-server",
        "--api-url",
        "http://localhost:8224/pi/api/v2",
        "--auth-token",
        "XXXXXXXX"
      ],
      "autoApprove": [
        "keep-session-alive",
        "check-connection",
        "authenticate",
        "list-categories",
        "get-category",
        "list-charts",
        "get-chart",
        "export-chart",
        "get-filterable-attributes",
        "export-chart"
      ]
    }
  }
}

Desarrollo Local

  • ejecute el servidor usando ./start.sh
  • configure la configuración con la ruta al archivo build/index.js
./start.sh
{
  "mcpServers": {
    "pi-api": {
      "command": "node",
      "args": [
        "/home/mingzilla/dev/tool-mcp-pi-api-server/build/index.js",
        "--api-url",
        "http://localhost:8224/pi/api/v2",
        "--auth-token",
        "XXXXXXXX"
      ],
      "autoApprove": [
        "keep-session-alive",
        "check-connection",
        "authenticate",
        "list-categories",
        "get-category",
        "list-charts",
        "get-chart",
        "export-chart",
        "get-filterable-attributes",
        "export-chart"
      ]
    }
  }
}

Lista de Verificación de Desarrollo

  • actualice el código -> inicie el servidor local -> pruebe el servidor local con la ruta del archivo a index.js
  • actualice el archivo readme.md -> cambie la sección de configuración de mcpServers: docker + node + npx
  • ./publish.sh - publique en npm
  • ./dockerBuild.sh -> ./dockerPublish.sh (edite el número de versión para que coincida con package.json) -> pruebe la configuración de docker
  • envíe el código a github

Licencia

Licencia MIT

Autor

Ming Huang (mingzilla)

Verified on MseeP

smithery badge