Skip to main content
Glama
StructlyOfficial

Structly MCP Server

Official
README.md
# Structly MCP Server

MCP-сервер для **Structly** (VisualDB) — позволяет ИИ-агентам полноценно работать
с проектами, схемами, таблицами, колонками, связями, группами, Git-ветками,
SQL-импортом/экспортом и AI-генерацией схем через протокол [Model Context Protocol](https://modelcontextprotocol.io).

Сервер — отдельный процесс, который общается со Structly по REST API,
используя bearer-токен из раздела **«Интеграции»** продукта.

---

## Возможности

**Проекты** — список, создание, редактирование, удаление.

**Схемы** — список, создание, редактирование, удаление, коммит, анализ,
AI-генерация (`create` / `modify`), применение результата ИИ.

**Таблицы и колонки** — получение диаграммы схемы, создание/редактирование/удаление
таблиц, массовое обновление позиций, управление колонками (типы, PK, default).

**Группы и связи** — группы таблиц для визуальной организации, связи
(внешние ключи) с действиями при удалении/обновлении.

**SQL** — импорт DDL в схему, экспорт схемы в SQL.

**Git** — ветки, fork, коммиты, checkout, reset, merge, миграции, DAG коммитов,
ветка по умолчанию.

**Источники данных** — привязка проекта к Structly Agent, проверка подключения,
задачи синхронизации (sync-jobs).

---

## Требования

**Через `npx` (рекомендуется):**
- Node.js 18+ (npx)
- Запущенный бэкенд Structly
- API-токен Structly из раздела **«Интеграции»**

**Из исходников:**
- Python 3.12+
- [uv](https://docs.astral.sh/uv/) (или любой pip-окружение)
- Запущенный бэкенд Structly
- API-токен Structly из раздела **«Интеграции»**

---

## Установка

### Через `npx` (рекомендуется)

Ничего устанавливать не нужно — сервер собран в standalone-бинарник
(PyInstaller) и запускается из npm:

```bash
npx -y structly-mcp
```

### Из исходников

```bash
cd mcp_visualdb
uv sync
cp .env.example .env
```

Заполните `.env`:

```dotenv
STRUCTLY_API_TOKEN=<токен из «Интеграций»>
```

## Запуск

### Через `npx` (рекомендуется, без Python и uv)

```bash
npx -y structly-mcp --transport stdio
```

Параметры те же, что и у Python-версии (`--transport`, `--host`, `--port`).
Переменные окружения `STRUCTLY_API_URL` (по умолчанию `http://localhost:8000`)
и `STRUCTLY_API_TOKEN` задаются через `env` в конфиге MCP-клиента.

### Из исходников

#### stdio (для локальных агентов: Claude Code, opencode и др.)

```bash
uv run structly-mcp --transport stdio
```

Или через модуль:

```bash
uv run python -m mcp_visualdb
```

#### Streamable HTTP (для удалённых агентов)

```bash
uv run structly-mcp --transport streamable-http --host 0.0.0.0 --port 8765
```

MCP endpoint будет доступен по адресу `http://<host>:<port>/mcp`.

#### SSE (устаревший транспорт)

```bash
uv run structly-mcp --transport sse --host 0.0.0.0 --port 8765
```

---

## Сборка и публикация npm-пакета

- Сборка standalone-бинарника: [`build/README.md`](./build/README.md)
- npm-пакет: папка [`npm/`](./npm)
- Публикация: `cd npm && npm publish`
- Локальная проверка без публикации: `cd npm && npm link` → `npx structly-mcp`

---

## Подключение к агенту

### Через `npx` (рекомендуется)

Пример конфигурации MCP-сервера в клиенте (opencode / Claude Desktop):

```json
{
  "mcpServers": {
    "structly": {
      "command": "npx",
      "args": ["-y", "structly-mcp"],
      "env": {
        "STRUCTLY_API_TOKEN": "<ваш_токен>",
      }
    }
  }
}
```

### Из исходников (uv)

```json
{
  "mcpServers": {
    "structly": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "E:/project/PycharmProjects/mcp_visualdb",
        "structly-mcp"
      ],
      "env": {
        "STRUCTLY_API_TOKEN": "<ваш_токен>",
      }
    }
  }
}
```

> ⚠️ MCP-клиенты передают в subprocess только ограниченный набор переменных
> окружения, поэтому токен нужно передавать через `env` конфигурации клиента
> (в `.env` файле проекта он не подхватится при запуске через `npx`).

---

## Инструменты (47)

| Категория    | Инструменты                                                                                                                                                                                                 |
|--------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| Проекты      | `list_projects`, `create_project`, `edit_project`, `delete_project`                                                                                                                                         |
| Схемы        | `list_schemas`, `create_schema`, `edit_schema`, `delete_schema`, `commit_schema`, `analyze_schema`                                                                                                          |
| AI-схемы     | `ai_preview_schema`, `ai_get_preview`, `ai_apply_schema`                                                                                                                                                    |
| Диаграмма    | `get_diagram`, `export_schema_sql`                                                                                                                                                                          |
| Таблицы      | `create_table`, `edit_table`, `delete_table`, `batch_edit_tables`                                                                                                                                           |
| Колонки      | `create_column`, `edit_column`, `delete_column`                                                                                                                                                             |
| Группы       | `create_group`, `edit_group`, `delete_group`                                                                                                                                                                |
| Связи        | `create_relationship`, `edit_relationship`, `delete_relationship`                                                                                                                                           |
| SQL          | `import_sql_into_schema`                                                                                                                                                                                    |
| Git          | `list_branches`, `create_branch`, `fork_branch`, `commit_to_branch`, `checkout_branch`, `checkout_commit`, `reset_branch`, `merge_branches`, `get_branch_migration`, `get_commit_dag`, `set_default_branch` |
| Data sources | `get_data_source`, `set_data_source`, `delete_data_source`, `test_connection`, `list_sync_jobs`, `create_sync_job`, `get_sync_job`                                                                          |

## Ресурсы

- `structly://projects` — список проектов
- `structly://projects/{project_uuid}/schemas` — схемы проекта
- `structly://schemas/{schema_uuid}/diagram` — полная структура схемы

## Промпты

- `create_project` — создать проект по описанию
- `design_schema` — спроектировать схему по требованиям
- `modify_schema` — внести изменения в схему по описанию

---

## Тесты

```bash
uv run pytest
uv run ruff check src
```

## Структура проекта

```
src/mcp_visualdb/
├── __main__.py        # python -m mcp_visualdb
├── cli.py             # точка входа, выбор транспорта
├── config.py          # настройки из .env
├── client.py          # HTTP-клиент Structly API
├── server.py          # сборка MCPServer
├── utils.py           # утилиты (JSON-сериализация)
├── resources.py       # ресурсы MCP
├── prompts.py         # промпты MCP
└── tools/             # инструменты MCP
    ├── projects.py
    ├── schemas.py
    ├── tables.py
    ├── git.py
    ├── data_sources.py
    └── sql.py
```

TDQS

B3.3/5.0

Scored across 47 tools

Disambiguation4/5

Most tools have clearly distinct purposes following a predictable verb_noun pattern. However, a few pairs like commit_schema vs commit_to_branch and ai_apply_schema vs import_sql_into_schema could cause confusion without careful reading of descriptions. Overall, the high number of tools makes selection slightly harder but still manageable.

Naming Consistency5/5

All tool names use consistent snake_case verb_noun structure, e.g., list_projects, create_table, edit_column, delete_relationship. The verbs are uniformly used: 'list' for collections, 'get' for single items, 'create/edit/delete' for CRUD operations, and domain-specific actions like 'commit', 'merge', 'checkout' are clearly named. No mixed conventions or inconsistent patterns.

Tool Count2/5

With 47 tools, the server is well beyond the 25+ threshold, making it feel heavy and potentially overwhelming for agents. While the domain is broad (project/schema/table management, version control, data sync, AI features), this count exceeds what is typically optimal for a single MCP server. The number could likely be consolidated or split into multiple focused servers.

Completeness5/5

The tool surface is exceptionally comprehensive, covering full CRUD for projects, schemas, tables, columns, groups, and relationships, plus branch/commit management, migration generation, AI-assisted schema design, SQL import/export, and data source sync. There are no obvious dead ends or missing essential operations; even advanced workflows like merging branches and scheduling sync jobs are supported.

Maintenance

ActivitySlowing
ResponsivenessNo issues