提供 Gravitino API 的 MCP 服务器——与 Apache Gravitino 服务集成的 FastMCP。
该项目使用 uv 作为依赖和虚拟环境管理工具。请确保您的系统已安装 uv。
克隆仓库:
git clone git@github.com:datastrato/mcp-server-gravitino.git
进入项目目录:
cd mcp-server-gravitino
创建虚拟环境:
uv venv
激活虚拟环境:
source .venv/bin/activate
安装依赖项:
uv install
无论采用哪种授权方式,都需要设置以下环境变量:
GRAVITINO_METALAKE=<YOUR_METALAKE> # 默认值:"metalake_demo"
GRAVITINO_URI=<YOUR_GRAVITINO_URI>
GRAVITINO_URI:您的 Gravitino 服务器的基本 URL。GRAVITINO_METALAKE:要使用的元数据库名称。mcp-server-gravitino 支持基于令牌和基本身份验证的方法。这些机制允许安全地访问 MCP 工具和提示,并且适合与外部系统集成。
设置以下环境变量:
GRAVITINO_JWT_TOKEN=<YOUR_GRAVITINO_JWT_TOKEN>
GRAVITINO_JWT_TOKEN:用于认证的 JWT 令牌。
或者,您可以使用基本认证:
GRAVITINO_USERNAME=<YOUR_GRAVITINO_USERNAME>
GRAVITINO_PASSWORD=<YOUR_GRAVITINO_PASSWORD>
GRAVITINO_USERNAME:Gravitino 认证的用户名。GRAVITINO_PASSWORD:对应的密码。当前工具激活基于方法名(例如 get_list_of_table)。您可以通过设置可选环境变量 GRAVITINO_ACTIVE_TOOLS 来指定要激活的工具。默认值是 *,这会激活所有工具。如果您只想激活 get_list_of_roles 工具,可以这样设置环境变量:
GRAVITINO_ACTIVE_TOOLS=get_list_of_roles
要启动 Gravitino MCP 服务器,请运行以下命令:
uv \
--directory /path/to/mcp-gravitino \
run \
--with fastmcp \
--with httpx \
--with mcp-server-gravitino \
python -m mcp_server_gravitino.server
每个参数的意义如下:
| 参数 | 描述 |
|---|---|
uv | 启动 UV CLI 工具 |
--directory /path/to/mcp-gravitino | 指定包含 pyproject.toml 的工作项目目录 |
run | 表示将在托管环境中执行命令 |
--with fastmcp | 将 fastmcp 添加到运行时环境,而不改变项目依赖 |
--with httpx | 添加 httpx 依赖以实现异步 HTTP 功能 |
--with mcp-server-gravitino | 将本地模块添加为运行时依赖 |
python -m mcp_server_gravitino.server | 使用包的入口模块启动 MCP 服务器 |
使用 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"
}
}
}
}
mcp-server-gravitino 并不暴露所有的 Gravitino API,而是提供了一组优化的工具集:
get_list_of_catalogs:获取目录列表get_list_of_schemas:获取模式列表get_list_of_tables:获取分页的表列表get_table_by_fqn:获取特定表的详细信息get_table_columns_by_fqn:获取表的列信息get_list_of_tags:获取所有标签associate_tag_to_entity:将标签附加到表或列list_objects_by_tag:列出与特定标签关联的对象get_list_of_roles:获取所有角色get_list_of_users:获取所有用户grant_role_to_user:给用户分配角色revoke_role_from_user:撤销用户的角色get_list_of_models:获取模型列表get_list_of_model_versions_by_fqn:通过完全限定名称获取模型版本每个工具都设计为返回简洁且相关的元数据,以便在保持语义完整性的同时,符合 LLM 令牌限制。
本项目根据 Apache License Version 2.0 授权。