https://github.com/sazboxai/mcp_metabase
https://github.com/sazboxai/mcp_metabase
Last synced: 3 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/sazboxai/mcp_metabase
- Owner: sazboxai
- Created: 2025-03-06T01:37:11.000Z (7 months ago)
- Default Branch: main
- Last Pushed: 2025-05-12T00:23:51.000Z (5 months ago)
- Last Synced: 2025-06-17T13:11:34.443Z (4 months ago)
- Language: Python
- Size: 42 KB
- Stars: 3
- Watchers: 1
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Metabase MCP Server
A Model Control Protocol (MCP) server that enables AI assistants to interact with Metabase databases and actions.
![Metabase MCP Server]
## Overview
The Metabase MCP Server provides a bridge between AI assistants and Metabase, allowing AI models to:
- List and explore databases configured in Metabase
- Retrieve detailed metadata about database schemas, tables, and fields
- Visualize relationships between tables in a database
- List and execute Metabase actions
- Perform operations on Metabase data through a secure APIThis server implements the [Model Control Protocol (MCP)] specification, making it compatible with AI assistants that support MCP tools.
## Features
- **Database Exploration**: List all databases and explore their schemas
- **Metadata Retrieval**: Get detailed information about tables, fields, and relationships
- **Relationship Visualization**: Generate visual representations of database relationships
- **Action Management**: List, view details, and execute Metabase actions
- **Secure API Key Handling**: Store API keys encrypted and prevent exposure
- **Web Interface**: Test and debug functionality through a user-friendly web interface
- **Docker Support**: Easy deployment with Docker and Docker Compose## Prerequisites
- Metabase instance (v0.46.0 or higher recommended)
- Metabase API key with appropriate permissions
- Docker (for containerized deployment)
- Python 3.10+ (for local development)## Installation
### Using Docker (Recommended)
1. Clone this repository:
```bash
git clone https://github.com/yourusername/metabase-mcp.git
cd metabase-mcp
```2. Build and run the Docker container:
```bash
docker-compose up -d
```3. Access the configuration interface at http://localhost:5001
### Manual Installation
1. Clone this repository:
```bash
git clone https://github.com/yourusername/metabase-mcp.git
cd metabase-mcp
```2. Install dependencies:
```bash
pip install -r requirements.txt
```3. Run the configuration interface:
```bash
python -m src.server.web_interface
```4. Access the configuration interface at http://localhost:5000
## Configuration
1. Open the web interface in your browser
2. Enter your Metabase URL (e.g., http://localhost:3000)
3. Enter your Metabase API key
4. Click "Save Configuration" and test the connection### Obtaining a Metabase API Key
1. Log in to your Metabase instance as an administrator
2. Go to Settings > Admin settings > API Keys
3. Create a new API key with appropriate permissions
4. Copy the generated key for use in the MCP server## Usage
### Running the MCP Server
After configuration, you can run the MCP server:
```bash
# Using Docker
docker run -p 5001:5000 metabase-mcp# Manually
python -m src.server.mcp_server
```### Available Tools
The MCP server provides the following tools to AI assistants:
1. **list_databases**: List all databases configured in Metabase
2. **get_database_metadata**: Get detailed metadata for a specific database
3. **db_overview**: Get a high-level overview of all tables in a database
4. **table_detail**: Get detailed information about a specific table
5. **visualize_database_relationships**: Generate a visual representation of database relationships
6. **run_database_query**: Execute a SQL query against a database
7. **list_actions**: List all actions configured in Metabase
8. **get_action_details**: Get detailed information about a specific action
9. **execute_action**: Execute a Metabase action with parameters### Testing Tools via Web Interface
The web interface provides a testing area for each tool:
1. **List Databases**: View all databases configured in Metabase
2. **Get Database Metadata**: View detailed schema information for a database
3. **DB Overview**: View a concise list of all tables in a database
4. **Table Detail**: View detailed information about a specific table
5. **Visualize Database Relationships**: Generate a visual representation of table relationships
6. **Run Query**: Execute SQL queries against databases
7. **List Actions**: View all actions configured in Metabase
8. **Get Action Details**: View detailed information about a specific action
9. **Execute Action**: Test executing an action with parameters## Security Considerations
- API keys are stored encrypted at rest
- The web interface never displays API keys in plain text
- All API requests use HTTPS when configured with a secure Metabase URL
- The server should be deployed behind a secure proxy in production environments## Development
### Project Structure
```
metabase-mcp/
├── src/
│ ├── api/ # Metabase API client
│ ├── config/ # Configuration management
│ ├── server/ # MCP and web servers
│ └── tools/ # Tool implementations
├── templates/ # Web interface templates
├── docker-compose.yml # Docker Compose configuration
├── Dockerfile # Docker build configuration
├── requirements.txt # Python dependencies
└── README.md # Documentation
```### Adding New Tools
To add a new tool:
1. Implement the tool function in `src/tools/`
2. Register the tool in `src/server/mcp_server.py`
3. Add a testing interface in `templates/config.html` (optional)
4. Add a route in `src/server/web_interface.py` (if adding a testing interface)## Troubleshooting
### Common Issues
- **Connection Failed**: Ensure your Metabase URL is correct and accessible
- **Authentication Error**: Verify your API key has the necessary permissions
- **Docker Network Issues**: When using Docker, ensure proper network configuration### Logs
Check the logs for detailed error information:
```bash
# Docker logs
docker logs metabase-mcp# Manual execution logs
# Logs are printed to the console
```## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.