Apache Gravitino

Acesse o Apache Gravitino, um lago de metadados federado e de alto desempenho para dados e IA.

Documentação

Servidor MCP para Apache Gravitino

Python Version

Servidor MCP que fornece APIs do Gravitino - Uma integração FastMCP para serviços Apache Gravitino.

Recursos

  • Integração perfeita com FastMCP para APIs do Gravitino
  • Interface simplificada para interação com metadados
  • Suporta operações de metadados para catálogos, esquemas, tabelas, modelos, usuários, tags e gerenciamento de papéis de usuário

Instalação

Este projeto usa uv como ferramenta de gerenciamento de dependências e ambiente virtual. Certifique-se de que uv esteja instalado no seu sistema.

  1. Clone o repositório:

    git clone git@github.com:datastrato/mcp-server-gravitino.git
    
  2. Navegue até o diretório do projeto:

    cd mcp-server-gravitino
    
  3. Crie um ambiente virtual:

    uv venv
    
  4. Ative o ambiente virtual:

    source .venv/bin/activate
    
  5. Instale as dependências:

    uv install
    

Configuração

Configuração Comum

Independentemente da autorização, as seguintes variáveis de ambiente precisam ser definidas:

GRAVITINO_METALAKE=<YOUR_METALAKE> # default: "metalake_demo"
GRAVITINO_URI=<YOUR_GRAVITINO_URI>
  • GRAVITINO_URI: A URL base do seu servidor Gravitino.
  • GRAVITINO_METALAKE: O nome do metakube a ser usado.

Autorização

mcp-server-gravitino suporta métodos de autenticação baseados em token e básicos. Esses mecanismos permitem acesso seguro às ferramentas e prompts do MCP e são adequados para integração com sistemas externos.

Autenticação por Token

Defina as seguintes variáveis de ambiente:

GRAVITINO_JWT_TOKEN=<YOUR_GRAVITINO_JWT_TOKEN>

GRAVITINO_JWT_TOKEN: O token JWT para autenticação.

Autenticação Básica

Alternativamente, você pode usar autenticação básica:

GRAVITINO_USERNAME=<YOUR_GRAVITINO_USERNAME>
GRAVITINO_PASSWORD=<YOUR_GRAVITINO_PASSWORD>
  • GRAVITINO_USERNAME: O nome de usuário para autenticação no Gravitino.
  • GRAVITINO_PASSWORD: A senha correspondente.

Ativação de Ferramentas

A ativação de ferramentas é atualmente baseada em nomes de métodos (por exemplo, get_list_of_table). Você pode especificar quais ferramentas ativar definindo a variável de ambiente opcional GRAVITINO_ACTIVE_TOOLS. O valor padrão é *, que ativa todas as ferramentas. Se quiser ativar apenas a ferramenta get_list_of_roles, você pode definir a variável de ambiente da seguinte forma:

GRAVITINO_ACTIVE_TOOLS=get_list_of_roles

Uso

Para iniciar o Servidor MCP do Gravitino, execute o seguinte comando:

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

O significado de cada argumento é o seguinte:

ArgumentoDescrição
uvInicia a ferramenta CLI do UV
--directory /path/to/mcp-gravitinoEspecifica o diretório do projeto de trabalho com pyproject.toml
runIndica que um comando será executado no ambiente gerenciado
--with fastmcpAdiciona fastmcp ao ambiente de execução sem alterar as dependências do projeto
--with httpxAdiciona a dependência httpx para funcionalidade HTTP assíncrona
--with mcp-server-gravitinoAdiciona o módulo local como dependência de execução
python -m mcp_server_gravitino.serverInicia o servidor MCP usando o módulo de entrada do pacote

Exemplo com o Cliente Goose

Exemplo de configuração para executar o servidor usando 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 Ferramentas

mcp-server-gravitino não expõe todas as APIs do Gravitino, mas fornece um conjunto selecionado de ferramentas otimizadas:

Ferramentas de Tabela

  • get_list_of_catalogs: Recuperar uma lista de catálogos
  • get_list_of_schemas: Recuperar uma lista de esquemas
  • get_list_of_tables: Recuperar uma lista paginada de tabelas
  • get_table_by_fqn: Buscar informações detalhadas de uma tabela específica
  • get_table_columns_by_fqn: Recuperar informações de colunas de uma tabela

Ferramentas de Tag

  • get_list_of_tags: Recuperar todas as tags
  • associate_tag_to_entity: Anexar uma tag a uma tabela ou coluna
  • list_objects_by_tag: Listar objetos associados a uma tag específica

Ferramentas de Papel de Usuário

  • get_list_of_roles: Recuperar todos os papéis
  • get_list_of_users: Recuperar todos os usuários
  • grant_role_to_user: Atribuir um papel a um usuário
  • revoke_role_from_user: Revogar o papel de um usuário

Ferramentas de Modelo

  • get_list_of_models: Recuperar uma lista de modelos
  • get_list_of_model_versions_by_fqn: Obter versões de um modelo pelo nome totalmente qualificado

Cada ferramenta é projetada para retornar metadados concisos e relevantes para permanecer dentro dos limites de tokens do LLM, mantendo a integridade semântica.

Licença

Este projeto é licenciado sob a Apache License Versão 2.0.