Skip to main content
Glama
alittleyellowkevin

StarRocks MCP Server

README.md
# StarRocks MCP Server

一个专业的 TypeScript 版本的 StarRocks MCP (Model Context Protocol) 服务器实现。

## 功能特性

- 🔌 **完整的 MCP 协议支持** - 实现了标准的 MCP 协议
- 🗄️ **StarRocks 数据库集成** - 支持 StarRocks 数据库的所有操作
- 🛠️ **多种 SQL 操作** - 支持 SELECT、INSERT、UPDATE、DELETE、CREATE TABLE 等
- 🔒 **安全性** - 内置 SQL 验证和错误处理
- 📝 **完整的日志系统** - 支持不同级别的日志记录
- 🧪 **测试覆盖** - 包含完整的单元测试
- 📦 **TypeScript 支持** - 完整的类型定义和类型安全

## 支持的 MCP 工具

| 工具名称 | 描述 | 参数 |
|---------|------|------|
| `run_sql_query` | 执行只读 SQL 查询(仅限 SELECT 语句) | `query: string` |
| `create_table` | 在 StarRocks 数据库中创建新表 | `query: string` |
| `insert_data` | 向 StarRocks 数据库表插入数据 | `query: string` |
| `update_data` | 更新 StarRocks 数据库表中的数据 | `query: string` |
| `delete_data` | 从 StarRocks 数据库表中删除数据 | `query: string` |
| `execute_sql` | 执行任意非 SELECT 的 SQL 语句 | `query: string` |

## 安装和设置

### 1. 克隆项目

```bash
git clone https://github.com/your-username/StarRocks-MCP.git
cd StarRocks-MCP
```

### 2. 安装依赖

```bash
npm install
```

### 3. 配置环境变量

复制环境变量示例文件:

```bash
cp env.example .env
```

编辑 `.env` 文件,配置你的 StarRocks 数据库连接信息:

```env
# StarRocks Database Configuration
STARROCKS_HOST=localhost
STARROCKS_PORT=9030
STARROCKS_USER=root
STARROCKS_PASSWORD=your_password_here
STARROCKS_DATABASE=your_database_name

# Optional Configuration
STARROCKS_CHARSET=utf8mb4
STARROCKS_TIMEZONE=local
STARROCKS_CONNECTION_LIMIT=10
STARROCKS_ACQUIRE_TIMEOUT=60000
STARROCKS_TIMEOUT=60000

# Logging Configuration
NODE_ENV=production
LOG_LEVEL=info
```

### 4. 构建项目

```bash
npm run build
```

### 5. 运行服务器

```bash
npm start
```

## 开发

### 开发模式运行

```bash
npm run dev
```

### 运行测试

```bash
npm test
```

### 代码检查

```bash
npm run lint
```

### 代码格式化

```bash
npm run format
```

## 项目结构

```
src/
├── connection/          # 数据库连接管理
│   └── StarRocksConnection.ts
├── server/             # MCP 服务器核心
│   └── StarRocksMCPServer.ts
├── types/              # TypeScript 类型定义
│   └── index.ts
├── utils/              # 工具类
│   ├── ErrorHandler.ts
│   ├── Logger.ts
│   └── SqlValidator.ts
├── tests/              # 测试文件
│   ├── setup.ts
│   └── StarRocksConnection.test.ts
└── index.ts            # 主入口文件
```

## 使用示例

### 1. 查询数据

```json
{
  "method": "tools/call",
  "params": {
    "name": "run_sql_query",
    "arguments": {
      "query": "SELECT * FROM users WHERE age > 18;"
    }
  }
}
```

### 2. 创建表

```json
{
  "method": "tools/call",
  "params": {
    "name": "create_table",
    "arguments": {
      "query": "CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(100), age INT);"
    }
  }
}
```

### 3. 插入数据

```json
{
  "method": "tools/call",
  "params": {
    "name": "insert_data",
    "arguments": {
      "query": "INSERT INTO users (id, name, age) VALUES (1, 'John', 25);"
    }
  }
}
```

## 配置选项

### 数据库配置

| 配置项 | 默认值 | 描述 |
|--------|--------|------|
| `STARROCKS_HOST` | `localhost` | StarRocks 服务器主机 |
| `STARROCKS_PORT` | `9030` | StarRocks 服务器端口 |
| `STARROCKS_USER` | `root` | 数据库用户名 |
| `STARROCKS_PASSWORD` | `''` | 数据库密码 |
| `STARROCKS_DATABASE` | `undefined` | 默认数据库名 |
| `STARROCKS_CHARSET` | `utf8mb4` | 字符集 |
| `STARROCKS_TIMEZONE` | `local` | 时区 |

### 连接配置

| 配置项 | 默认值 | 描述 |
|--------|--------|------|
| `STARROCKS_CONNECTION_LIMIT` | `10` | 连接池大小 |
| `STARROCKS_ACQUIRE_TIMEOUT` | `60000` | 获取连接超时时间(毫秒) |
| `STARROCKS_TIMEOUT` | `60000` | 查询超时时间(毫秒) |

### 日志配置

| 配置项 | 默认值 | 描述 |
|--------|--------|------|
| `LOG_LEVEL` | `info` | 日志级别(debug, info, warn, error) |
| `NODE_ENV` | `production` | 运行环境 |

## 错误处理

服务器包含完整的错误处理机制:

- **连接错误** - 自动重连和错误恢复
- **SQL 错误** - 详细的错误信息和建议
- **MCP 协议错误** - 标准化的错误响应
- **日志记录** - 完整的错误日志记录

## 安全性

- ✅ SQL 注入防护
- ✅ 参数化查询
- ✅ 输入验证
- ✅ 错误信息过滤
- ✅ 连接池管理

## 贡献

欢迎提交 Issue 和 Pull Request!

### 开发指南

1. Fork 项目
2. 创建功能分支 (`git checkout -b feature/amazing-feature`)
3. 提交更改 (`git commit -m 'Add some amazing feature'`)
4. 推送到分支 (`git push origin feature/amazing-feature`)
5. 打开 Pull Request

## 许可证

MIT License - 详见 [LICENSE](LICENSE) 文件

## 支持

如果你遇到问题或有建议,请:

1. 查看 [Issues](../../issues)
2. 创建新的 Issue
3. 联系维护团队

---

**StarRocks MCP Server** - 让 StarRocks 数据库操作更简单、更安全!