Skip to main content
Glama
README.md
# vpp-mcp: Claude + Visual Paradigm

Serwer [MCP](https://modelcontextprotocol.io), dzięki któremu Claude potrafi **czytać i edytować projekty Visual Paradigm (`.vpp`)**: diagram klas (klasy, interfejsy, enumeracje, atrybuty, metody, relacje) i diagramy sekwencji. Nie trzeba przy tym otwierać programu.

Powstał przy przedmiocie *Wzorce projektowe* (AGH), gdzie wszystkie diagramy robi się w Visual Paradigm Community Edition. Przydaje się przy uzupełnianiu diagramu klas, rysowaniu kilkunastu diagramów sekwencji i przy studiach wzorców, czyli zmianach w diagramie klas „przed” i „po”.

> Nieoficjalne narzędzie, niezwiązane z firmą Visual Paradigm. Format plików został odczytany z prawdziwych projektów i przetestowany na **Visual Paradigm Community Edition 18.1 (build 20260914)**. Serwer nigdy nie zmienia twojego pliku. Zawsze zapisuje zmienioną **kopię**, ale i tak trzymaj własną kopię zapasową.

*English: an unofficial MCP server that lets Claude read and edit Visual Paradigm `.vpp` projects (class model, class diagram, sequence diagrams). It always writes an edited copy and verifies it before saving. Docs are in Polish; tool descriptions mix Polish and English.*

## Co można z nim zrobić

Przykładowe polecenia dla Claude'a:

- „Pokaż, jakie klasy i relacje są w `C:\...\projekt.vpp`.”
- „Dodaj do diagramu klas wzorzec Singleton dla klasy `KatalogRestauracji` i zapisz jako `projekt-singleton.vpp`.”
- „Zrób diagram sekwencji dla przypadku użycia *Złóż zamówienie* na podstawie metod z diagramu klas.”
- „Wyeksportuj klasy `Zamowienie`, `Platnosc` i `BramkaPlatnosci` do PlantUML, potrzebuję fragmentu do studium.”

| Narzędzie | Co robi |
|---|---|
| `vpp_project_info` | Podsumowanie projektu: diagramy, liczba klas, aktorzy, przypadki użycia, czy plik jest otwarty w VP. |
| `vpp_list_classes`, `vpp_get_class` | Klasy z atrybutami i metodami w notacji UML, relacje danej klasy, położenie na diagramie. |
| `vpp_list_relationships` | Generalizacje, realizacje, zależności i asocjacje z licznościami i rolami. |
| `vpp_get_sequence_diagram` | Uczestnicy, komunikaty z numerami jak w VP (1, 1.1, …), fragmenty loop/alt/opt z warunkami. |
| `vpp_export_plantuml` | Fragment diagramu klas jako PlantUML. |
| `vpp_edit_class_model` | Partia zmian w diagramie klas: nowe klasy, interfejsy, enumeracje i klasy abstrakcyjne (z kształtem na diagramie), atrybuty i metody (także `static`, `abstract`, `List<...>`), zmiana i usuwanie składowych, wartości enumeracji, relacje każdego rodzaju, usuwanie relacji, przesuwanie i dopasowanie rozmiaru klas. |
| `vpp_add_sequence_diagrams` | Całe diagramy sekwencji z opisu: aktorzy, obiekty (także tworzone w trakcie i wywołania statyczne), call, self, create, return, found, sygnał, fragmenty loop/opt/alt, `ref`. Komunikaty są przypięte do metod z diagramu klas. |
| `vpp_delete_sequence_diagram` | Usuwa diagram sekwencji, np. żeby wygenerować go od nowa. |
| `vpp_verify` | Kontrola struktury pliku. |

## Bezpieczeństwo

- Każda zmiana trafia do nowego pliku (`output_path`). Oryginał zostaje nietknięty.
- Zmiany są wykonywane na pliku tymczasowym. Wynik powstaje tylko wtedy, gdy **wszystkie** zmiany się udały i weryfikator nie znalazł błędu.
- Serwer nie zapisze do pliku, który jest otwarty w VP. VP trzyma wtedy obok plik `.<nazwa>.vpp.lck`.
- Nie da się usunąć metody, którą wywołuje komunikat na diagramie sekwencji.
- **Po każdej zmianie otwórz plik w VP i od razu go zapisz (Ctrl+S).** VP przepisze go wtedy po swojemu.

## Instalacja

Potrzebujesz:
- Pythona 3.10 lub nowszego (na Windows z [python.org](https://www.python.org/downloads/), z zaznaczonym „Add python.exe to PATH”),
- aplikacji Claude na komputer (Claude Desktop) albo Claude Code.

### 1. Zainstaluj serwer

```
python -m pip install git+https://github.com/Nikodem5/vpp-mcp
```

Sprawdzenie: `python -c "import vpp_mcp.server"` nie powinno wypisać żadnego błędu.

### 2a. Dodaj do Claude Desktop

W aplikacji Claude otwórz **Settings → Developer → Edit Config**. Otworzy się plik `claude_desktop_config.json` (na Windows w `%APPDATA%\Claude\`). Dopisz serwer w sekcji `mcpServers`:

```json
{
  "mcpServers": {
    "visual-paradigm": {
      "command": "python",
      "args": ["-m", "vpp_mcp"]
    }
  }
}
```

Jeśli masz już inne serwery, dopisz sam wpis `"visual-paradigm": {...}` obok nich i pilnuj przecinków. Potem **zamknij i uruchom ponownie aplikację Claude**. Serwer pojawi się na liście narzędzi.

Jeśli Claude nie widzi serwera, zamiast `"python"` wpisz pełną ścieżkę do Pythona, np. `"C:\\Users\\TWOJA_NAZWA\\AppData\\Local\\Programs\\Python\\Python312\\python.exe"`. Ścieżkę pokaże polecenie `where python`. Na macOS użyj `python3`.

### 2b. Albo dodaj do Claude Code

```
claude mcp add visual-paradigm -- python -m vpp_mcp
```

### Aktualizacja

```
python -m pip install --upgrade --force-reinstall git+https://github.com/Nikodem5/vpp-mcp
```

Potem uruchom ponownie aplikację Claude.

## Jak z tym pracować

1. Zapisz projekt w VP i najlepiej go zamknij.
2. Poproś Claude'a o zmianę i podaj pełną ścieżkę do pliku `.vpp`. Claude zapisze wynik pod nową nazwą, np. `projekt-v2.vpp`.
3. Otwórz nowy plik w VP, sprawdź i od razu zapisz (Ctrl+S).
4. Uporządkuj linie relacji i ewentualnie podpisy komunikatów. Serwer rysuje proste linie od krawędzi do krawędzi, a układ jest przybliżony.

Komunikaty na diagramach sekwencji muszą wskazywać metody, które istnieją w klasie odbiorcy, jej nadklasie albo interfejsie. Dopasowanie idzie po nazwie i liczbie argumentów. Jeśli metody brakuje, Claude dodaje ją najpierw do diagramu klas, co jest zgodne z wymaganiem spójności diagramu klas i diagramów sekwencji.

## Ograniczenia

- Obsługiwana jest widoczność `+` (publiczna) i `-` (prywatna). Kody VP dla `#` i `~` nie zostały potwierdzone.
- Aktorzy na diagramach sekwencji są osobnymi elementami o tych samych nazwach co na diagramie przypadków użycia. Tak samo wygląda to w przykładowych projektach VP.
- Brak edycji diagramów przypadków użycia, czynności i stanów. Serwer je tylko wymienia.
- Projekt z kilkoma diagramami klas wymaga podania nazwy diagramu przy dodawaniu klas i relacji.
- Testowane na projektach zapisanych przez VP Community Edition 18.1. Inne wersje mają ten sam format bazy (`DB_VERSION` 20121026), ale nie były sprawdzane w programie.

## Test na własnym projekcie

```
git clone https://github.com/Nikodem5/vpp-mcp
cd vpp-mcp
python -m pip install -e .
python tests/smoke_test.py "C:\ścieżka\do\projektu.vpp"
```

Test tylko czyta twój plik. Sprawdza parser i weryfikator, a potem tworzy w katalogu tymczasowym kopię z dwiema przykładowymi klasami i małym diagramem sekwencji. Ścieżkę do kopii wypisuje na końcu, żebyś mógł ją obejrzeć w VP.

## Budowa

| Plik | Rola |
|---|---|
| `vpp_mcp/notation.py` | Parser i serializer tekstowego formatu, w którym VP zapisuje model. Odtwarza bajt w bajt każdą definicję z plików zapisanych przez VP. |
| `vpp_mcp/project.py` | Odczyt: klasy, składowe, typy, relacje, diagramy. |
| `vpp_mcp/edit.py` | Zapis modelu klas i diagramu klas. |
| `vpp_mcp/sequence.py` | Diagramy sekwencji: generator, usuwanie, opis. |
| `vpp_mcp/verify.py` | Weryfikator struktury: odwołania, unikalność ID, powiązania model–widok, listy, kanoniczny zapis. |
| `vpp_mcp/server.py` | Serwer MCP (FastMCP, stdio). |
| `docs/` | Opis formatu `.vpp`, na którym opiera się serwer. |

Plik `.vpp` to baza SQLite, w której VP zapisuje elementy modelu i diagramów we własnej notacji tekstowej. Szczegóły są w [docs/](docs/).

## Licencja

MIT, zobacz [LICENSE](LICENSE).

TDQS

B3.2/5.0

Scored across 10 tools

Disambiguation4/5

Each tool has a fairly distinct purpose: read (list_classes, get_class, list_relationships, get_sequence_diagram, project_info), mutate (edit_class_model, add/delete_sequence_diagrams), verify, and export. The main overlap is that get_class and list_relationships both surface relationship data, and project_info partially overlaps with the list tools, but descriptions make the boundaries workable.

Naming Consistency4/5

All tools share a vpp_ prefix and use a clear verb_noun convention (list_classes, get_class, add_sequence_diagrams, delete_sequence_diagram, export_plantuml). Minor deviations like vpp_verify (verb only) and vpp_project_info (noun only) are still readable and unambiguous.

Tool Count5/5

Ten tools is a well-scoped set for a .vpp diagram editor, and the heavy lifting is consolidated into vpp_edit_class_model rather than exploded into many single-op tools. Every tool has a clear role in the read/edit/verify/export workflow.

Completeness3/5

The surface covers read, create, update, delete-member, relationship management, and sequence diagram add/delete, but has notable gaps: no operation to delete a class or enumeration literal, and no in-place sequence diagram editing (must delete-and-re-add). These gaps force workarounds for common lifecycle tasks.

Maintenance

ActivityMaintained
ResponsivenessNo issues