get_list_of_catalogsLABSCO SUMMARY
Selective by design, and configurable about which parts you expose.
Wrapping an entire metadata API would produce responses no model can use; the choice here is a smaller set with responses trimmed to what stays semantically intact. GRAVITINO_ACTIVE_TOOLS goes one step further — you can hand a session only the read tools, and leave role grants out of the surface entirely.
What it is
A FastMCP server over Gravitino. It deliberately does not expose every Gravitino API; each tool returns concise metadata chosen to stay inside an LLM's token budget while remaining meaningful.
What you get
- get_list_of_catalogs, get_list_of_schemas and get_list_of_tables walk the metadata hierarchy, with table listings paginated
- get_table_by_fqn and get_table_columns_by_fqn return one table's detail and its columns by fully qualified name
- get_list_of_tags lists tags, associate_tag_to_entity attaches one to a table or column, and list_objects_by_tag finds everything carrying a tag
- get_list_of_roles and get_list_of_users read the access model; grant_role_to_user and revoke_role_from_user change it
- get_list_of_models and get_list_of_model_versions_by_fqn cover registered models and their versions
- GRAVITINO_ACTIVE_TOOLS narrows the exposed set by tool name — the default is all of them
Requirements
Python 3.10 or higher with uv, run from a checkout as python -m mcp_server_gravitino.server under uv run. GRAVITINO_URI points at your Gravitino server and GRAVITINO_METALAKE names the metalake, defaulting to metalake_demo. Authentication is either a JWT in GRAVITINO_JWT_TOKEN or basic auth through GRAVITINO_USERNAME and GRAVITINO_PASSWORD.
Setup effort
Build from source
USE CASES
Finding a table in a large metalake
Walk catalogs and schemas, then read the table and its columns by fully qualified name.
Governing data with tags
Attach a tag to a table or column, then list everything that carries it.
Reviewing who has which role
Users and roles read together, with grant and revoke available when needed.
Tracking registered models
Models and their versions by fully qualified name.
Exposing only part of the surface
One environment variable restricts the session to the named tools.
14 tools
Listed in project docs. Your client may show a different list.
get_list_of_schemasget_list_of_tablesget_table_by_fqnget_table_columns_by_fqnget_list_of_tagsassociate_tag_to_entitylist_objects_by_tagget_list_of_rolesget_list_of_usersgrant_role_to_userrevoke_role_from_userget_list_of_modelsget_list_of_model_versions_by_fqnBEFORE YOU INSTALL
What to know first
Tools you get
14 tools named in the project's documentation.
Requires
- uv with Python 3.10+
- GRAVITINO_URI in your environment
- GRAVITINO_JWT_TOKEN, or GRAVITINO_USERNAME and GRAVITINO_PASSWORD, in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
You clone this one yourself.
Server setup
git clone https://github.com/datastrato/mcp-server-gravitino.gitMCP Clients
Any MCP client
After cloning, add this to your MCP client configuration; uv run installs the dependencies (Python 3.10+) when the client starts the server. <YOUR_PATH_TO_MCP_SERVER_GRAVITINO> is the full path of your clone, and GRAVITINO_URI is your Gravitino server. For token auth, set GRAVITINO_JWT_TOKEN instead of GRAVITINO_USERNAME and GRAVITINO_PASSWORD.
{
"mcpServers": {
"Gravitino": {
"command": "uv",
"args": [
"--directory",
"<YOUR_PATH_TO_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"
}
}
}
}