vpp-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@vpp-mcpadd the Singleton pattern to KatalogRestauracji, save as projekt-singleton.vpp"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
vpp-mcp: Claude + Visual Paradigm
Serwer MCP, 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
KatalogRestauracjii zapisz jakoprojekt-singleton.vpp.”„Zrób diagram sekwencji dla przypadku użycia Złóż zamówienie na podstawie metod z diagramu klas.”
„Wyeksportuj klasy
Zamowienie,PlatnosciBramkaPlatnoscido PlantUML, potrzebuję fragmentu do studium.”
Narzędzie | Co robi |
| Podsumowanie projektu: diagramy, liczba klas, aktorzy, przypadki użycia, czy plik jest otwarty w VP. |
| Klasy z atrybutami i metodami w notacji UML, relacje danej klasy, położenie na diagramie. |
| Generalizacje, realizacje, zależności i asocjacje z licznościami i rolami. |
| Uczestnicy, komunikaty z numerami jak w VP (1, 1.1, …), fragmenty loop/alt/opt z warunkami. |
| Fragment diagramu klas jako PlantUML. |
| Partia zmian w diagramie klas: nowe klasy, interfejsy, enumeracje i klasy abstrakcyjne (z kształtem na diagramie), atrybuty i metody (także |
| 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, |
| Usuwa diagram sekwencji, np. żeby wygenerować go od nowa. |
| Kontrola struktury pliku. |
Related MCP server: drawio-mcp
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, 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-mcpSprawdzenie: 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:
{
"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_mcpAktualizacja
python -m pip install --upgrade --force-reinstall git+https://github.com/Nikodem5/vpp-mcpPotem uruchom ponownie aplikację Claude.
Jak z tym pracować
Zapisz projekt w VP i najlepiej go zamknij.
Poproś Claude'a o zmianę i podaj pełną ścieżkę do pliku
.vpp. Claude zapisze wynik pod nową nazwą, np.projekt-v2.vpp.Otwórz nowy plik w VP, sprawdź i od razu zapisz (Ctrl+S).
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_VERSION20121026), 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 |
| Parser i serializer tekstowego formatu, w którym VP zapisuje model. Odtwarza bajt w bajt każdą definicję z plików zapisanych przez VP. |
| Odczyt: klasy, składowe, typy, relacje, diagramy. |
| Zapis modelu klas i diagramu klas. |
| Diagramy sekwencji: generator, usuwanie, opis. |
| Weryfikator struktury: odwołania, unikalność ID, powiązania model–widok, listy, kanoniczny zapis. |
| Serwer MCP (FastMCP, stdio). |
| Opis formatu |
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/.
Licencja
MIT, zobacz LICENSE.
Available Tools
10 toolsvpp_add_sequence_diagramsB
Dodaje diagramy sekwencji do kopii projektu. Dodaje całe diagramy sekwencji (każdy jako osobny diagram). Każdy diagram: {"name":"SD13 Reklamacja", "participants":[{"actor":"Klient"}, {"name":"klient","class":"Klient"}, {"name":"zamowienie","class":"Zamowienie"}, {"name":"","class":"Klient"} /* ':Klient' = wywołanie statyczne /, {"name":"platnosc","class":"Platnosc","created":true} / tworzony w trakcie /], "items":[ {"type":"call","from":"Klient","to":"klient","operation":"anulujZamowienie(zamowienie)"}, {"type":"self","on":"zamowienie","operation":"czyMoznaAnulowac()"}, {"type":"create","from":"zamowienie","to":"platnosc","constructor":"Platnosc(...)" / opcjonalnie /}, {"type":"return","from":"zamowienie","to":"klient","label":"true"}, {"type":"found","to":"dyspozytor","operation":"przydzielKuriera(dostawa)"}, {"type":"signal","from":"bramka","to":"System płatności","label":"żądanie autoryzacji"}, {"type":"loop","guard":"dla każdej pozycji","items":[...]}, {"type":"opt","guard":"status == W_DOSTAWIE","items":[...]}, {"type":"alt","operands":[{"guard":"można anulować","items":[...]},{"guard":"else","items":[...]}]}, {"type":"ref","diagram":"SD04 Opłać zamówienie","covers":["Klient","zamowienie"]} / tylko wewnątrz loop/opt/alt */ ]} Uczestników wskazuje się nazwą aktora albo nazwą obiektu (':Klasa' gdy name puste). Operacja: nazwa(arg1, arg2) — argumenty to tylko etykiety, liczy się nazwa i liczba argumentów; metoda musi istnieć w klasie odbiorcy lub jej nadklasie/interfejsie. Zwroty (return) muszą wracać do obiektu, który jest aktywny (wywołał). replace_existing=true najpierw usuwa diagramy o tych nazwach.
| Name | Required | Description | Default |
|---|---|---|---|
| diagrams | Yes | ||
| output_path | Yes | ||
| source_path | Yes | ||
| overwrite_output | No | ||
| replace_existing | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It usefully discloses invariants — the operation's method must exist on the receiver class/superclass/interface, return messages must target an active object, and replace_existing deletes same-named diagrams first. However, it never explains the copy semantics (does source_path get copied to output_path?), what overwrite_output does, or what happens on validation failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, and the JSON example earns its space given the complex nested structure. But the opening is redundant ('Dodaje diagramy sekwencji... Dodaje całe diagramy sekwencji'), and the dense inline comments inside the example require careful parsing rather than being stated as separate rules.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a high-complexity batch-mutation tool, the description covers the hardest part (the diagram data model) thoroughly, and an output schema exists so return values needn't be explained. The remaining gap is the unexplained file-path parameters and overwrite_output, which keeps it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does an excellent job documenting the inner structure of the 'diagrams' parameter (participants, item types call/self/create/return/found/signal/loop/opt/alt/ref), but source_path, output_path, and overwrite_output receive no explanation at all. Partial compensation for a low-coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Dodaje diagramy sekwencji do kopii projektu'), which distinguishes it from the delete/get sequence-diagram siblings by name. It doesn't explicitly state the distinction from vpp_edit_class_model or vpp_export_plantuml, but the operation is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: add diagrams to a project copy. There is no explicit 'use this when...' guidance, no mention of what to do instead for modifying existing diagrams, and no statement of prerequisites for source_path/output_path. The only conditional guidance is the replace_existing=true behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vpp_delete_sequence_diagramB
Usuwa diagram sekwencji (diagram, jego ramkę, uczestników, komunikaty, fragmenty) w kopii projektu. Odmówi, jeśli inny diagram odwołuje się do niego przez ref.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| output_path | Yes | ||
| source_path | Yes | ||
| overwrite_output | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden; it does credibly disclose that the delete is cascading (diagram plus frame, participants, messages, fragments) and that a ref-based reference blocks it. It does not state whether the removal is permanent or recoverable, nor how output_path and overwrite_output govern the write, which matters for a destructive operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the destruction scope first, the failure precondition second. No filler, and the most decision-relevant information is front-loaded, though the meaning would be more accessible if the language matched the English tool and parameter names.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
A return schema exists, so return values need not be explained. However, for a four-parameter destructive tool with zero annotation coverage, the description leaves the copy/output path semantics and the irreversibility question unanswered, which is a meaningful gap even though the cascade and refusal behavior are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and all four parameters are bare titles, yet the description explains only that a diagram is deleted by name. 'W kopii projektu' faintly gestures at the source/output split but says nothing about source_path, output_path, or when overwrite_output must be true — the description fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('Usuwa diagram sekwencji') and enumerates the exact scope of removal (ramkę, uczestników, komunikaty, fragmenty), so the agent knows the blast radius without opening the schema. It is clearly the destructive counterpart to siblings like vpp_get_sequence_diagram and vpp_add_sequence_diagrams, though it never names them explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The refusal condition ('Odmówi, jeśli inny diagram odwołuje się do niego przez ref') is a genuine usage constraint that tells the agent this call can fail for referential reasons. The phrase 'w kopii projektu' hints the operation targets a copy rather than the original, but there is no explicit guidance on when to use this versus re-editing a diagram, nor on how the copy workflow should be sequenced.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vpp_edit_class_modelA
Zmiany w modelu klas i na diagramie klas; wynik do NOWEGO pliku (oryginał bez zmian). Lista zmian wykonywanych po kolei, wszystkie albo żadna. Każda zmiana to obiekt z polem "op":
{"op":"add_class","name":"FabrykaZamowien","kind":"class|abstract class|interface|enumeration", "attributes":["-licznik : int"], "operations":["+utworz(klient : Klient) : Zamowienie"], "literals":["A","B"], "static_members":["licznik"], "abstract_operations":["utworz"], "x":100, "y":200, "diagram":""}
{"op":"add_attribute","class":"Klient","text":"-email : String [0..1]","static":false}
{"op":"add_operation","class":"Klient","text":"+zaloguj(email : String, haslo : String) : boolean","static":false,"abstract":false}
{"op":"change_operation","class":"Menu","name":"dodajDanie","text":"+dodajDanie(nazwa : String, cena : double) : Danie"} (zachowuje ID metody, więc komunikaty w diagramach sekwencji dalej na nią wskazują)
{"op":"change_attribute","class":"Danie","name":"cena","text":"-cena : double"}
{"op":"remove_member","class":"Klient","name":"dodajAdres"} (odmówi, jeśli metodę wywołuje komunikat)
{"op":"add_literal","class":"StatusZamowienia","literal":"REKLAMOWANE"}
{"op":"add_relationship","kind":"generalization|realization|dependency|association|directed|aggregation|composition", "source":"Klient","target":"Użytkownik", "source_multiplicity":"1","source_role":"klient", "target_multiplicity":"0..*","target_role":"zamowienia","stereotype":"use"} generalization: source=podklasa, target=nadklasa; realization: source=klasa, target=interfejs; dependency: source używa target (opcjonalny stereotype np. use/create); aggregation/composition: source=całość (romb przy source); directed: strzałka przy target.
{"op":"remove_relationship","id":""}
{"op":"move_class","class":"Koszyk","x":400,"y":120} (przelicza linie relacji tej klasy)
{"op":"fit_class","class":"Koszyk"} (dopasowuje rozmiar pudełka do treści) Typy: int, double, boolean, void, char, long, float, byte, short, nazwy klas z projektu, dowolny tekst (String, LocalDateTime), generyki np. List. Widoczność: + publiczna, - prywatna.
| Name | Required | Description | Default |
|---|---|---|---|
| changes | Yes | ||
| output_path | Yes | ||
| source_path | Yes | ||
| overwrite_output | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations the description carries the full burden, and it does substantial work: non-destructive output-to-new-file, atomic transaction semantics, sequential ordering, conditional refusal on remove_member, ID preservation in change_operation keeping sequence-diagram messages valid, and side effects for move_class (relation lines recomputed) and fit_class (box resized). Remaining gaps are the source_path/output_path/overwrite_output behaviors and error/partial-failure reporting, but the mutation surface is well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose and a one-line atomicity rule, then a dense bullet-per-operation reference rather than prose. It is long, but nearly every line encodes syntax an agent could not otherwise infer (op names, field names, override semantics); the closing type and visibility glosses are worth their space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a multi-op mutation tool with an output schema, the description covers the operation vocabulary, ordering, atomicity, and key side effects well. It stops short of describing the source_path contract, overwrite_output behavior, or what a rejected batch reports back, which an agent would want before a first call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does so heavily for the dominant parameter: every 'op' variant is enumerated with field-level meaning, direction conventions for generalization/realization/dependency/aggregation, allowed type names, and visibility syntax. The three path/overwrite parameters are only implicitly addressed ('wynik do NOWEGO pliku') and overwrite_output is never explained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource pair ('Zmiany w modelu klas i na diagramie klas') and immediately adds the key distinguishing scope: the result goes to a NEW file with the original untouched. This clearly separates it from read-only siblings like vpp_get_class and vpp_list_classes without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives strong operational context: changes are applied in order and are all-or-nothing, and remove_member refuses when a message still calls the method. What it lacks is any explicit routing versus alternatives (e.g., when to use change_operation vs remove_member+add_operation), leaving that to inference from the genre of the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vpp_export_plantumlB
Eksport (fragmentu) diagramu klas do PlantUML, np. do studium wzorca: fragment 'przed' i 'po' zmianie. classes = lista nazw klas (domyślnie wszystkie); relacje tylko między wybranymi klasami.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| classes | No | ||
| with_members | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden: it does disclose a real behavioral rule (relationships are only included between selected classes), which is valuable. However, it never says that the required 'path' means writing/overwriting a file on disk, nor anything about permissions or side effects — critical for a tool that appears to produce output at a path.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Compact and front-loaded: the export action and PlantUML target come first, followed by the use case and the class-filtering note. No filler sentences, though the parameter notes read as a slightly tacked-on tail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value explanation is not required. Still, for a tool whose only required parameter is a destination path, the omission of what happens at that path (file creation, overwrite, encoding) leaves a meaningful gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains 'classes' well (list of class names, defaults to all) but leaves the required 'path' and the 'with_members' flag (default true) entirely unexplained, so only one of three parameters gains meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource (export a class-diagram fragment to PlantUML) and adds a concrete scenario (before/after pattern study). No sibling tool performs PlantUML export, so the purpose is distinguishable, though the description never explicitly contrasts itself with siblings like vpp_list_classes or vpp_get_class.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The before/after pattern-study example implies when to reach for this tool, but there is no explicit when-not guidance and no mention of alternatives for simply inspecting classes (vpp_list_classes/vpp_get_class). Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vpp_get_classB
Szczegóły jednej klasy: rodzaj, składowe, wszystkie relacje, w których uczestniczy, i położenie na diagramach klas.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the burden; it does convey that this is a read operation returning a rich composite view (members, relationships, diagram positions). However, it says nothing about behavior on a non-existent class, permission/auth needs, or whether the relationship data is expensive to compute.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence that front-loads the resource and then lists the returned facets. Nothing is wasted, though the enumerated facets overlap with what the output schema already conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Because an output schema exists, the description need not explain return values, so the main remaining gap is the undocumented 'path' parameter and the absence of any error/precondition guidance. Adequate but not fully sufficient for a two-required-parameter lookup tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for both required parameters. The description implies that 'name' identifies the class, but the required 'path' parameter is never explained (project path? file path? diagram path?), which is the main ambiguity an agent would hit. Only half the parameters gain any meaning beyond their bare names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific resource (one class) and enumerates what the result contains: kind, members, all relationships it participates in, and placement on class diagrams. This clearly distinguishes it from the sibling vpp_list_classes, which returns many classes. It falls short of 5 only because it never explicitly names the sibling it complements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrasing 'jednej klasy' (a single class) implies this is the drill-down tool after listing, but no explicit when-to-use or when-not-to-use guidance is given. An agent must infer that it should call vpp_list_classes first to obtain the name/path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vpp_get_sequence_diagramC
Opis diagramu sekwencji: uczestnicy od lewej, komunikaty z numerami VP (1, 1.1, ...), rodzaj, nadawca, odbiorca, operacja; fragmenty (loop/alt/opt) z warunkami.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden, yet it says nothing about whether the call is read-only, what permissions or project context are needed, or what happens when the named diagram does not exist. Its content is essentially a description of the returned payload, which is already covered by the declared output schema, so it adds little behavioral value beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single compact sentence with the key noun front-loaded, so there is no padding. However, it spends its limited words enumerating output fields instead of the call's purpose, and the Polish text is inconsistent with an otherwise English tool/sibling vocabulary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return values need not be explained, but with two required undocumented parameters and no annotations, the description should at minimum explain what path and name refer to and what a failed lookup yields. It omits both, leaving invocation details underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for two required parameters (path, name), and the description never mentions either one — it does not clarify whether path is a project path or a file path, nor how name identifies the diagram. With full documentation responsibility falling on the description and nothing provided, this is a clear gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource ("diagram sekwencji") and implies retrieval by saying it is an "opis" (description) of that diagram, but never states the verb explicitly (get/read/return) and gives no differentiation from siblings such as vpp_add_sequence_diagrams, vpp_delete_sequence_diagram, or vpp_export_plantuml. An agent can guess it reads a diagram, but must infer that from the tool name rather than the text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no exclusions, and no mention of the closely related siblings (add/delete sequence diagram, export to PlantUML). The agent is left to infer that this is the read counterpart to the mutating siblings purely from naming conventions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vpp_list_classesB
Lista klas, klas abstrakcyjnych, interfejsów i enumeracji. with_members=true dodaje atrybuty, metody i wartości enumeracji w notacji UML (np. '-email : String', '+zaloguj(email : String, haslo : String) : boolean').
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| with_members | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. 'Lista' implies a read-only operation and the with_members flag's effect is disclosed with real output examples, but nothing states permission requirements, whether the scan is recursive across the .vpp file, or anything about result size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly written sentences that front-load the resource list and follow with the only optional flag. Nothing is redundant, though the abrupt switch from Polish prose to the English parameter name and back is slightly jarring.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the with_members behavior is well covered. For a two-parameter tool the missing pieces are the meaning of the required path argument and the read-only/scope guarantees, which an agent still has to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does so well for with_members, spelling out the UML notation it triggers with concrete samples like '-email : String'. The required 'path' parameter, however, is never explained - it is unclear whether it points at a .vpp file, a directory, or a project selector.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb (list) and enumerates the exact resource types returned: classes, abstract classes, interfaces and enumerations. That is enough to distinguish it from the singular vpp_get_class and from vpp_list_relationships, though it never names those siblings explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains when to set with_members=true (to also get attributes, methods and enum values), which is genuine usage guidance for the parameter. It gives no guidance on when to choose this tool over vpp_get_class or vpp_list_relationships, so tool-selection context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vpp_list_relationshipsB
Relacje w notacji PlantUML-podobnej: generalizacje (--|>), realizacje (..|>), zależności (..> «stereotyp»), asocjacje z licznościami i rolami (--, -->, o--, *--). Każda ma id (potrzebne do usuwania). class_name zawęża do relacji danej klasy.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| class_name | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that every relationship carries an id needed for deletion (implying a follow-up delete workflow) but says nothing about permissions, ordering, or the meaning of 'path' (presumably a .vpp project file).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the output's shape in notation terms, then the id note, then the filter. It is dense but every clause carries information; the notation enumeration is long but genuinely distinguishes relationship types.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return structure needn't be re-explained, and the relationship-kind enumeration covers semantics well. The main gap is the undefined required 'path' parameter, which an agent cannot resolve from schema or description alone.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains class_name as a filter narrowing to one class's relationships, but leaves 'path' completely undefined – the agent must infer it is the project file path.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the specific verb+resource (listing relationships) and enumerates the relationship kinds in PlantUML notation (generalizations, realizations, dependencies, associations with multiplicities/roles). This clearly distinguishes it from siblings like vpp_list_classes or vpp_get_class, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage through 'each has an id (needed for deletion)' and 'class_name narrows to a given class''s relationships,' which hints at pre-deletion discovery and filtered listing. However, there is no explicit when-to-use/when-not guidance versus alternatives such as vpp_export_plantuml or vpp_get_class.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vpp_project_infoB
Podsumowanie projektu .vpp: diagramy (nazwa, typ), liczba klas/interfejsów/enumeracji, aktorzy, przypadki użycia, liczba relacji, czy plik jest otwarty w VP.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, "Podsumowanie" only implies a non-mutating inspection and does not explicitly confirm that the project is left unchanged. It also leaves unclear whether the tool parses the file directly or interacts with VP, and whether an already-open file affects execution.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact, front-loaded statement with no filler. Its enumerated details all help establish the tool's scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with an output schema, the description is largely sufficient to understand the requested operation. The undocumented path semantics and unclear file/VP interaction and safety behavior remain meaningful invocation gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema gives the required path parameter no description, and the description only indirectly indicates that it should identify a .vpp project. It does not explicitly define path as the filesystem path to an existing project file or clarify any path-handling expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as providing a .vpp project summary and enumerates its scope: diagrams, model-element counts, actors, use cases, relationships, and whether the file is open in VP. It does not explicitly distinguish this broad overview from the sibling list and detail tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The listed contents imply that the tool is intended for a high-level project overview rather than detailed retrieval of individual model elements. However, it provides no explicit when-to-use guidance or alternatives such as vpp_list_classes, vpp_list_relationships, or vpp_get_sequence_diagram.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vpp_verifyB
Strukturalna kontrola pliku .vpp (odwołania, ID, powiązania model–widok, listy). Pliki zapisane przez VP przechodzą ją zawsze.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full behavioral burden. It establishes that this is a check, but does not state whether it is read-only, whether it repairs or writes back to the file, whether it can fail hard versus return findings, or what permissions/access the path requires. The "always passes" note is a helpful behavioral clue but far from complete for a mutation-ambiguous tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the operation and its scope, with the caveat about VP-saved files second. No redundant restatement of the name and no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single required parameter, an existing output schema, and no annotations, the description covers the essential question of what the tool inspects. The remaining gap is behavioral: whether verification has side effects on the file and how it relates to vpp_project_info, which the agent must guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter (path) with 0% schema description coverage, so the description should compensate. It does so minimally by tying the input to a .vpp file, telling the agent what kind of path to supply, but says nothing about relative vs absolute paths, whether the file is modified in place, or error behavior for a non-.vpp file.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Strukturalna kontrola pliku .vpp" gives a clear verb (kontrola/walidacja) and resource, and the parenthetical enumerates exactly what is checked: references, IDs, model-view links, lists. It does not name or distinguish itself from any sibling, but the siblings (edit, delete, list, get, export) are operationally distinct, so misselection risk is low.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use or when-not-to-use statement against alternatives such as vpp_project_info. The second sentence, "Pliki zapisane przez VP przechodzą ją zawsze," implicitly signals the useful case (externally or programmatically modified files) and that native exports will be clean, but the agent must infer this rather than being told.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
v0.1.0- First observed
vpp_add_sequence_diagrams - First observed
vpp_delete_sequence_diagram - First observed
vpp_edit_class_model - First observed
vpp_export_plantuml - First observed
vpp_get_class - First observed
vpp_get_sequence_diagram - First observed
vpp_list_classes - First observed
vpp_list_relationships - First observed
vpp_project_info - First observed
vpp_verify
TDQS
Scored across 10 tools
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.
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.
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.
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
Related MCP Connectors
Manage SysML2 projects; check, evaluate, verify, query, document and diagram models.
Work with your DealSharp negotiation projects, documents and tools from Claude.
Render, verify, describe, and safely edit Mermaid diagrams through MCP.
Read and edit DB Planner database schemas, diagrams and board layouts as an AI agent.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables generating PlantUML diagrams directly from Claude Desktop, with tools to render, save, and obtain URLs or ASCII art.948 npmMIT
- AlicenseAqualityDmaintenanceEnables AI assistants to generate professional UML diagrams (class, use case, activity, sequence) from natural language descriptions, producing editable .drawio files compatible with diagrams.net.785 npmISC
- AlicenseNot gradedqualityBmaintenanceEnables Claude and other LLM clients to read and write Microsoft Project files directly, covering tasks, resources, assignments, dependencies, and critical path information without needing Microsoft Project open.MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI clients to inspect and make targeted, revision-checked edits to Excalidraw class diagrams stored in a local Obsidian vault, including adding, moving, rewiring, resizing, and deleting shapes, text, and arrows. It supports low-level design review by summarizing classes and relationships, and confines access to a configured folder while backing up drawings before each change.MIT