Apache Gravitino

Accede a Apache Gravit

Documentación

Servidor MCP para Apache Gravitino

Python Version

Servidor MCP que proporciona APIs de Gravitino: una integración FastMCP para servicios Apache Gravitino.

Características

  • Integración perfecta con FastMCP para APIs de Gravitino
  • Interfaz simplificada para la interacción con metadatos
  • Soporta operaciones de metadatos para catálogos, esquemas, tablas, modelos, usuarios, etiquetas y gestión de roles de usuario

Instalación

Este proyecto utiliza uv como herramienta de gestión de dependencias y entornos virtuales. Asegúrese de que uv esté instalado en su sistema.

  1. Clone el repositorio:

    git clone git@github.com:datastrato/mcp-server-gravitino.git
    
  2. Navegue al directorio del proyecto:

    cd mcp-server-gravitino
    
  3. Cree un entorno virtual:

    uv venv
    
  4. Active el entorno virtual:

    source .venv/bin/activate
    
  5. Instale las dependencias:

    uv install
    

Configuración

Configuración común

Independientemente de la autorización, se deben establecer las siguientes variables de entorno:

GRAVITINO_METALAKE=<YOUR_METALAKE> # default: "metalake_demo"
GRAVITINO_URI=<YOUR_GRAVITINO_URI>
  • GRAVITINO_URI: La URL base de su servidor Gravitino.
  • GRAVITINO_METALAKE: El nombre del metakube a utilizar.

Autorización

mcp-server-gravitino admite métodos de autenticación basados en token y básicos. Estos mecanismos permiten un acceso seguro a las herramientas y avisos de MCP y son adecuados para la integración con sistemas externos.

Autenticación por token

Establezca las siguientes variables de entorno:

GRAVITINO_JWT_TOKEN=<YOUR_GRAVITINO_JWT_TOKEN>

GRAVITINO_JWT_TOKEN: El token JWT para la autenticación.

Autenticación básica

Alternativamente, puede utilizar autenticación básica:

GRAVITINO_USERNAME=<YOUR_GRAVITINO_USERNAME>
GRAVITINO_PASSWORD=<YOUR_GRAVITINO_PASSWORD>
  • GRAVITINO_USERNAME: El nombre de usuario para la autenticación de Gravitino.
  • GRAVITINO_PASSWORD: La contraseña correspondiente.

Activación de herramientas

La activación de herramientas se basa actualmente en nombres de métodos (por ejemplo, get_list_of_table). Puede especificar qué herramientas activar estableciendo la variable de entorno opcional GRAVITINO_ACTIVE_TOOLS. El valor predeterminado es *, que activa todas las herramientas. Si solo desea activar la herramienta get_list_of_roles, puede establecer la variable de entorno de la siguiente manera:

GRAVITINO_ACTIVE_TOOLS=get_list_of_roles

Uso

Para iniciar el Servidor MCP de Gravitino, ejecute el siguiente comando:

uv \
--directory /path/to/mcp-gravitino \
run \
--with fastmcp \
--with httpx \
--with mcp-server-gravitino \
python -m mcp_server_gravitino.server

El significado de cada argumento es el siguiente:

ArgumentoDescripción
uvInicia la herramienta CLI de UV
--directory /path/to/mcp-gravitinoEspecifica el directorio del proyecto de trabajo con pyproject.toml
runIndica que se ejecutará un comando en el entorno gestionado
--with fastmcpAñade fastmcp al entorno de ejecución sin alterar las dependencias del proyecto
--with httpxAñade la dependencia httpx para funcionalidad HTTP asíncrona
--with mcp-server-gravitinoAñade el módulo local como dependencia de ejecución
python -m mcp_server_gravitino.serverInicia el servidor MCP utilizando el módulo de entrada del paquete

Ejemplo de cliente Goose

Ejemplo de configuración para ejecutar el servidor con Goose:

{
  "mcpServers": {
    "Gravitino": {
      "command": "uv",
      "args": [
        "--directory",
        "/Users/user/workspace/mcp-server-gravitino",
        "run",
        "--with",
        "fastmcp",
        "--with",
        "httpx",
        "--with",
        "mcp-server-gravitino",
        "python",
        "-m",
        "mcp_server_gravitino.server"
      ],
      "env": {
        "GRAVITINO_URI": "http://localhost:8090",
        "GRAVITINO_USERNAME": "admin",
        "GRAVITINO_PASSWORD": "admin",
        "GRAVITINO_METALAKE": "metalake_demo"
      }
    }
  }
}

Lista de herramientas

mcp-server-gravitino no expone todas las APIs de Gravitino, sino que proporciona un conjunto seleccionado de herramientas optimizadas:

Herramientas de tablas

  • get_list_of_catalogs: Recuperar una lista de catálogos
  • get_list_of_schemas: Recuperar una lista de esquemas
  • get_list_of_tables: Recuperar una lista paginada de tablas
  • get_table_by_fqn: Obtener información detallada de una tabla específica
  • get_table_columns_by_fqn: Recuperar información de columnas de una tabla

Herramientas de etiquetas

  • get_list_of_tags: Recuperar todas las etiquetas
  • associate_tag_to_entity: Adjuntar una etiqueta a una tabla o columna
  • list_objects_by_tag: Listar objetos asociados con una etiqueta específica

Herramientas de roles de usuario

  • get_list_of_roles: Recuperar todos los roles
  • get_list_of_users: Recuperar todos los usuarios
  • grant_role_to_user: Asignar un rol a un usuario
  • revoke_role_from_user: Revocar el rol de un usuario

Herramientas de modelos

  • get_list_of_models: Recuperar una lista de modelos
  • get_list_of_model_versions_by_fqn: Obtener versiones de un modelo por nombre totalmente calificado

Cada herramienta está diseñada para devolver metadatos concisos y relevantes para mantenerse dentro de los límites de tokens de LLM mientras se mantiene la integridad semántica.

Licencia

Este proyecto está licenciado bajo la Apache License Version 2.0.