Skip to main content
Glama
nikhgupta

MindsDB MySQL MCP Server

by nikhgupta
README.md
# MindsDB MySQL MCP Server

MCP server for MindsDB that connects via MySQL protocol (port 47335), providing reliable tools for Claude Code and Desktop.

## Why MySQL over SSE/HTTP?

- MySQL protocol is stable and well-tested
- No async event loop issues (the "this event loop is already running" errors)
- Better error messages and debugging
- Works reliably with knowledge base queries

## Installation

```bash
cd mcp/mindsdb-mysql
npm install
npm run build
```

## Configuration

### Environment Variables

| Variable | Default | Description |
|----------|---------|-------------|
| `MINDSDB_HOST` | `127.0.0.1` | MindsDB server host |
| `MINDSDB_PORT` | `47335` | MindsDB MySQL port |
| `MINDSDB_USER` | `mindsdb` | Username (use your MindsDB Cloud email for cloud instances) |
| `MINDSDB_PASSWORD` | (empty) | Password (required for MindsDB Cloud) |

### Claude Code (`~/.claude.json`)

```json
{
  "mcpServers": {
    "mindsdb": {
      "type": "stdio",
      "command": "node",
      "args": [
        "/path/to/mindsdb-mysql/dist/index.js"
      ],
      "env": {
        "MINDSDB_HOST": "localhost",
        "MINDSDB_PORT": "47335",
        "MINDSDB_USER": "mindsdb",
        "MINDSDB_PASSWORD": ""
      }
    }
  }
}
```

For MindsDB Cloud, use your email as `MINDSDB_USER` and your password for `MINDSDB_PASSWORD`.

### Claude Desktop (`claude_desktop_config.json`)

Same configuration, add to the `mcpServers` object.

## Available Tools (11)

### 1. `query` - Execute SQL
Execute any MindsDB SQL query. Use this for custom queries not covered by other tools.

```typescript
query(sql: string, database?: string): QueryResult
```

### 2. `list_databases` - List Data Sources
List all databases/data sources in MindsDB.

```typescript
list_databases(): string[]
```

### 3. `list_knowledge_bases` - List KBs
List all knowledge bases in MindsDB.

```typescript
list_knowledge_bases(): KnowledgeBase[]
```

### 4. `describe` - Describe Any Object
Describe a model, table, or knowledge base. Returns column information.

```typescript
describe(name: string, database?: string): Description
```

### 5. `search_kb` - Search Knowledge Base
Search a knowledge base using hybrid semantic + keyword search.

```typescript
search_kb(
  kb_name: string,
  question: string,
  limit?: number,         // default: 10
  alpha?: number,         // default: 0.5 (0=keyword, 1=semantic)
  min_relevance?: number, // default: 0
  metadata_filter?: Record<string, string>
): SearchResult[]
```

### 6. `insert_kb` - Insert Data into Knowledge Base
Insert data into a knowledge base from a source query.

```typescript
insert_kb(
  kb_name: string,
  source_query: string,   // e.g., "SELECT id, content FROM mydb.docs"
  batch_size?: number,    // default: 1000
  threads?: number,       // default: 1
  skip_existing?: boolean // default: false
): { rows_inserted: number }
```

### 7. `create_kb` - Create Knowledge Base
Create a new knowledge base with embedding model configuration.

```typescript
create_kb(
  name: string,
  embedding_model: {
    provider: string,     // openai, azure, google, ollama
    model_name: string,
    api_key?: string
  },
  content_columns: string[],
  metadata_columns?: string[],
  id_column?: string,
  reranking_model?: {...},
  storage?: string        // default: chromadb
): { kb_name: string }
```

### 8. `list_jobs` - List Scheduled Jobs
List all scheduled jobs in MindsDB.

```typescript
list_jobs(): Job[]
```

### 9. `create_job` - Schedule Recurring Query
Create a scheduled job to run a query at regular intervals.

```typescript
create_job(
  name: string,
  query: string,          // SQL to execute
  every: string,          // e.g., "1 hour", "1 day"
  start?: string,         // ISO datetime
  end?: string            // ISO datetime
): { job_name: string }
```

### 10. `list_tables` - List Tables
List all tables in a specific database.

```typescript
list_tables(database: string): string[]
```

### 11. `connect_database` - Connect External Data Source
Connect an external database as a data source in MindsDB.

```typescript
connect_database(
  name: string,
  engine: string,         // postgres, mysql, mongodb, etc.
  parameters: {
    host: string,
    port: number,
    database: string,
    user: string,
    password: string
  }
): { database_name: string }
```

## Testing

### With MCP Inspector

```bash
npx @modelcontextprotocol/inspector node dist/index.js
```

Or with a remote MindsDB instance:

```bash
MINDSDB_HOST=your-mindsdb-host MINDSDB_PORT=47335 \
  npx @modelcontextprotocol/inspector node dist/index.js
```

### Manual verification

After configuring Claude Code, restart and verify:

```
# In Claude Code, these tools should be available:
mcp__mindsdb__list_databases
mcp__mindsdb__list_knowledge_bases
mcp__mindsdb__search_kb
mcp__mindsdb__query
# ... etc.
```

## MindsDB SQL Reference

### Knowledge Base Query

```sql
-- Semantic search
SELECT * FROM my_kb WHERE content = 'search phrase' LIMIT 10;

-- With relevance filter
SELECT * FROM my_kb WHERE content = 'query' AND relevance >= 0.5;

-- Hybrid search (keyword + semantic)
SELECT * FROM my_kb WHERE content = 'query' AND hybrid_search_alpha = 0.8;

-- Metadata filter
SELECT * FROM my_kb WHERE content = 'query' AND metadata_column = 'value';
```

### Output Columns

- `chunk_id`: `<id>:<chunk_number>of<total>:<start_char>to<end_char>`
- `chunk_content`: The text content
- `relevance`: 0-1 score (higher = better match)
- `distance`: Vector distance (lower = closer)

TDQS

B3.4/5.0

Scored across 11 tools

Disambiguation4/5

Most tools have distinct purposes, such as connect_database for data source connections and search_kb for hybrid searches. However, the 'describe' tool is somewhat ambiguous as it can describe models, tables, or knowledge bases, potentially overlapping with other tools like list_tables or list_knowledge_bases in providing structural information, which could cause minor confusion.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, such as connect_database, create_job, and list_tables. This uniformity makes the tool set predictable and easy to understand, with no deviations in naming conventions across the 11 tools.

Tool Count5/5

With 11 tools, the server is well-scoped for managing MindsDB's features like databases, jobs, knowledge bases, and queries. Each tool serves a clear purpose, such as list_databases for listing sources and query for custom SQL, making the count appropriate without being overwhelming or insufficient.

Completeness4/5

The tool set covers key MindsDB operations, including data source management (connect_database, list_databases), knowledge base handling (create_kb, insert_kb, search_kb), and job scheduling (create_job, list_jobs). A minor gap is the lack of update or delete tools for jobs or knowledge bases, but agents can likely work around this using the query tool for custom modifications.

Maintenance

ActivityInactive
ResponsivenessNo issues