Skip to main content
Glama

Datasette MCP

by mhalle
README.md8.72 kB
# Datasette MCP > **⚠️ ALPHA SOFTWARE WARNING** > This implementation is in early alpha and should **NOT** be used for production environments. MCP servers have serious potential safety issues that must be considered when accessing unvetted data. **Use at your own risk.** A [Model Context Protocol (MCP)](https://modelcontextprotocol.io/) server that provides read-only access to [Datasette](https://datasette.io/) instances. This server enables AI assistants to explore, query, and analyze data from Datasette databases through a standardized interface. ## Features - **SQL Query Execution**: Run custom SQL queries against Datasette databases - **Full-Text Search**: Search within tables using Datasette's FTS capabilities - **Schema Exploration**: List databases, tables, and inspect table schemas - **Multiple Instances**: Connect to multiple Datasette instances simultaneously - **Authentication**: Support for Bearer token authentication - **Request Throttling**: Configurable courtesy delays between requests - **Multiple Transports**: stdio, HTTP, and Server-Sent Events support ## Installation ### Prerequisites - Python 3.10+ - [uv](https://docs.astral.sh/uv/) package manager ### Install as a tool ```bash # Install directly from GitHub uv tool install git+https://github.com/mhalle/datasette-mcp.git # Check installation datasette-mcp --help ``` ### Run without installation ```bash # Run directly with uvx (no installation required) uvx git+https://github.com/mhalle/datasette-mcp.git --url https://your-datasette.com # Or with config file uvx git+https://github.com/mhalle/datasette-mcp.git --config /path/to/config.yaml ``` ### Development installation ```bash # Clone and install for development git clone https://github.com/mhalle/datasette-mcp.git cd datasette-mcp uv sync uv run datasette-mcp --help ``` ## Configuration The server supports two configuration methods: ### 1. Configuration File Create a YAML or JSON configuration file with your Datasette instances: ```yaml # ~/.config/datasette-mcp/config.yaml datasette_instances: my_database: url: "https://my-datasette.herokuapp.com" description: "My production database" auth_token: "your-api-token-here" # optional local_dev: url: "http://localhost:8001" description: "Local development database" # Global settings (optional) courtesy_delay_seconds: 0.5 # delay between requests ``` The server automatically searches for config files in: 1. `$DATASETTE_MCP_CONFIG` environment variable 2. `~/.config/datasette-mcp/config.{yaml,yml,json}` 3. `/etc/datasette-mcp/config.{yaml,yml,json}` ### 2. Command Line (Single Instance) For quick single-instance setup: ```bash datasette-mcp \ --url https://my-datasette.herokuapp.com \ --id my_db \ --description "My database" ``` ## Usage ### Basic Startup ```bash # Use auto-discovered config file datasette-mcp # Use specific config file datasette-mcp --config /path/to/config.yaml # Single instance mode datasette-mcp --url https://example.com --id mydb ``` ### Transport Options ```bash # stdio (default, for MCP clients) datasette-mcp # HTTP server datasette-mcp --transport streamable-http --port 8080 # Server-Sent Events datasette-mcp --transport sse --host 0.0.0.0 --port 8080 ``` ### Development Usage When developing or testing: ```bash # Run from source with uv uv run datasette-mcp --url https://example.com # Install in development mode uv tool install --editable . ``` ### All CLI Options ``` --config CONFIG Path to configuration file --url URL Datasette instance URL for single instance mode --id ID Instance ID (optional, derived from URL if not specified) --description DESC Description for the instance --courtesy-delay FLOAT Delay between requests in seconds --transport TRANSPORT Protocol: stdio, streamable-http, sse --host HOST Host for HTTP transports (default: 127.0.0.1) --port PORT Port for HTTP transports (default: 8198) --log-level LEVEL Logging level: DEBUG, INFO, WARNING, ERROR ``` ## Claude Code Integration To use this MCP server with [Claude Code](https://claude.ai/code): ### 1. Install the server ```bash uv tool install git+https://github.com/mhalle/datasette-mcp.git ``` ### 2. Add to Claude Code ```bash claude mcp add datasette-mcp -- datasette-mcp --url https://your-datasette-instance.com ``` Or with a configuration file: ```bash claude mcp add datasette-mcp -- datasette-mcp --config /path/to/config.yaml ``` ### 3. Use with scopes (optional) ```bash claude mcp add -s data-analysis datasette-mcp -- datasette-mcp --url https://analytics.example.com ``` Once added, Claude Code will have access to explore and query your Datasette instances directly within conversations. ## Available Tools The server provides these MCP tools for AI assistants: ### `list_instances()` List all configured Datasette instances and their details. ### `list_databases(instance)` List all databases in a Datasette instance with table counts. ### `describe_database(instance, database)` Get complete database schema including all table structures, columns, types, and relationships in one efficient call. ### `execute_sql(instance, database, sql, ...)` Execute custom SQL queries with options for: - `shape`: Response format ("objects", "arrays", "array") - `json_columns`: Parse specific columns as JSON - `trace`: Include performance trace information - `timelimit`: Query timeout in milliseconds - `size`: Maximum number of results per page - `next_token`: Pagination token for getting next page ### `search_table(instance, database, table, search_term, ...)` Perform full-text search within a table with options for: - `search_column`: Search only in specific column - `columns`: Return only specific columns to reduce tokens - `raw_mode`: Enable advanced FTS operators (AND, OR, NOT) - `size`: Maximum number of results per page - `next_token`: Pagination token for getting next page ## Usage Examples ### Exploring Data Structure ``` # Step 1: See what Datasette instances are available list_instances() # Step 2: Explore databases in your chosen instance list_databases(instance="my_database") # Step 3: Get complete database schema with all tables and columns describe_database(instance="my_database", database="main") ``` ### Querying Data ``` # Get recent users with SQL execute_sql( instance="my_database", database="main", sql="SELECT * FROM users ORDER BY created_date DESC LIMIT 10" ) # Search for specific content with limited columns to reduce tokens search_table( instance="my_database", database="main", table="posts", search_term="machine learning", columns=["title", "content", "author"], size=20 ) ``` ### Advanced Queries ``` # Complex aggregation with pagination for large result sets execute_sql( instance="my_database", database="main", sql="SELECT category, COUNT(*) as count, AVG(price) as avg_price FROM products WHERE created_date > '2024-01-01' GROUP BY category ORDER BY count DESC", size=50 ) # Search with advanced FTS operators search_table( instance="my_database", database="main", table="articles", search_term="python AND (fastapi OR django)", raw_mode=true ) ``` ## Security Considerations - The server provides **read-only** access to Datasette instances - Authentication tokens are passed as Bearer tokens to Datasette - No write operations are supported - SQL queries are subject to Datasette's built-in security restrictions - Request throttling helps prevent overwhelming target servers ## Error Handling The server provides detailed error messages for: - Invalid SQL queries - Missing or inaccessible databases/tables - Authentication failures - Network timeouts - Configuration errors ## Logging Configure logging levels for debugging: ```bash datasette-mcp --log-level DEBUG ``` Log levels: `DEBUG`, `INFO`, `WARNING`, `ERROR` ### Tool Management ```bash # List installed tools uv tool list # Upgrade to latest version uv tool upgrade datasette-mcp # Uninstall uv tool uninstall datasette-mcp ``` ## Contributing This server is built with [FastMCP](https://gofastmcp.com/), making it easy to extend with additional tools and functionality. The codebase follows MCP best practices for server development. ## License Licensed under the Apache License, Version 2.0. See [LICENSE](LICENSE) for details. ## Related Projects - [Datasette](https://datasette.io/) - Data exploration tool - [FastMCP](https://gofastmcp.com/) - Python MCP framework - [Model Context Protocol](https://modelcontextprotocol.io/) - Standard for AI tool integration

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mhalle/datasette-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server