这是一个用于与Metabase集成的Model Context Protocol服务器。
这是一个基于TypeScript的MCP服务器,实现了与Metabase API的集成。它允许AI助手与Metabase进行交互,提供以下资源的访问:
metabase://URI列表并访问Metabase资源list_dashboards - 列出Metabase中的所有仪表板list_cards - 列出Metabase中的所有问题/卡片list_databases - 列出Metabase中的所有数据库execute_card - 执行一个Metabase问题/卡片并获取结果get_dashboard_cards - 获取仪表板中的所有卡片execute_query - 对Metabase数据库执行SQL查询在运行服务器之前,您需要设置环境变量以进行身份验证。服务器支持两种方法:
API密钥(首选):
METABASE_URL:您的Metabase实例的URL(例如,https://your-metabase-instance.com)。METABASE_API_KEY:您的Metabase API密钥。用户名/密码(备用):
METABASE_URL:您的Metabase实例的URL。METABASE_USERNAME:您的Metabase用户名。METABASE_PASSWORD:您的Metabase密码。服务器首先会检查METABASE_API_KEY。如果已设置,则使用API密钥进行身份验证。如果未设置METABASE_API_KEY,则服务器将回退到使用METABASE_USERNAME和METABASE_PASSWORD。您必须至少提供一种方法的凭据。
示例配置:
使用API密钥:
# 必需的环境变量
export METABASE_URL=https://your-metabase-instance.com
export METABASE_API_KEY=your_metabase_api_key
或者,使用用户名/密码:
# 必需的环境变量
export METABASE_URL=https://your-metabase-instance.com
export METABASE_USERNAME=your_username
export METABASE_PASSWORD=your_password
您可以在shell配置文件中设置这些环境变量,或使用dotenv包等工具的.env文件。
安装依赖项:
npm install
构建服务器:
npm run build
开发时自动重建:
npm run watch
# 适合CI环境的一行命令
git clone https://github.com/imlewc/metabase-server.git && cd metabase-server && npm i && npm run build && npm link
要在Claude Desktop中使用,请添加服务器配置:
在MacOS上:~/Library/Application Support/Claude/claude_desktop_config.json
在Windows上:%APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"metabase-server": {
"command": "metabase-server",
"env": {
"METABASE_URL": "https://your-metabase-instance.com",
// 使用API密钥(首选)
"METABASE_API_KEY": "your_metabase_api_key"
// 或者用户名/密码(如果未设置API密钥)
// "METABASE_USERNAME": "your_username",
// "METABASE_PASSWORD": "your_password"
}
}
}
}
注意:您也可以在系统中设置这些环境变量,而不是在配置文件中设置它们。
要通过Smithery自动安装metabase-server供Claude Desktop使用:
npx -y @smithery/cli install @imlewc/metabase-server --client claude
由于MCP服务器通过标准I/O通信,调试可能会很困难。我们建议使用MCP Inspector,它作为一个包脚本可用:
npm run inspector
Inspector将提供一个URL,以便您可以在浏览器中访问调试工具。
按照“配置”部分所述设置环境变量后,您可以手动测试服务器的身份验证。MCP Inspector(npm run inspector)是一个有用的工具,可以向服务器发送请求。
METABASE_URL和有效的METABASE_API_KEY环境变量,指向您的Metabase实例。METABASE_USERNAME和METABASE_PASSWORD未设置或留空,因为API密钥应优先。npm run build && node build/index.js(或使用您选择的方法运行服务器,如通过Claude Desktop配置)。tools/call,参数为{"name": "list_dashboards"}METABASE_API_KEY环境变量未设置。METABASE_URL、METABASE_USERNAME和METABASE_PASSWORD,使用您的Metabase实例的有效凭据。list_dashboards工具。METABASE_URL和一个无效的METABASE_API_KEY。确保METABASE_USERNAME和METABASE_PASSWORD变量未设置。list_dashboards)。工具调用应失败,服务器日志可能显示来自Metabase的身份验证错误(例如,“Metabase API错误:无效的X-API-Key”)。METABASE_API_KEY未设置。设置METABASE_URL和无效的METABASE_USERNAME/METABASE_PASSWORD。METABASE_API_KEY、METABASE_USERNAME和METABASE_PASSWORD。仅设置METABASE_URL。