Serwer MCP udostępnia bramkę CMS jako narzędzia dla agentów AI (Claude Code/Desktop, Cursor, itp.). Agent sam wywołuje operacje CRUD na stronach, przekierowaniach i cenach — bez pisania kodu. Ta sama autoryzacja co REST (klucz API panelu).
https://mcp.dodatki.prohttps://api.dodatki.pro/mcpAuthorization: Bearer <klucz API>panel)claude mcp add --transport http stronycms \
https://mcp.dodatki.pro \
--header "Authorization: Bearer <KLUCZ>"{
"mcpServers": {
"stronycms": {
"type": "http",
"url": "https://mcp.dodatki.pro",
"headers": { "Authorization": "Bearer <KLUCZ>" }
}
}
}cms_list_shopsLista sklepów panelu (numery + nazwy).
bez parametrów
cms_list_typesTypy stron CMS w sklepie. Wbudowane (about/terms/help/info/links) są stałe i masz je jako enum w parametrze „type" — tego narzędzia potrzebujesz głównie po to, żeby poznać WŁASNE typy „cms" i ich cms_id.
| parametr | typ | opis |
|---|---|---|
shop * | integer |
cms_list_languagesJęzyki sklepu (kody + nazwy) — którymi językami można wypełnić treść CMS strony.
| parametr | typ | opis |
|---|---|---|
shop * | integer |
cms_list_pagesLista stron w typie — jedyne wiarygodne źródło informacji, czy strona ISTNIEJE (edycja po id oddaje pusty formularz nawet dla nieistniejącego id). details=true → pełne sekcje; lang → tylko strony z treścią w tym języku.
| parametr | typ | opis |
|---|---|---|
shop * | integer | |
type * | string | Typ stron: about = Strony firmowe, terms = Zasady, help = Pomoc, info = Pozostałe informacje, links = Linki, cms = typ własny (wymaga cms_id z cms_list_types). |
cms_id | integer | |
lang | string | |
details | boolean |
cms_get_pagePełna strona (ustawienia, SEO, treść per język, grafiki, towary powiązane). Pole content.<jezyk>.text jest wyliczane z html — przy zapisie go nie wysyłaj. Nieistniejące id → 404. with_redirects=true dołącza przekierowania.
| parametr | typ | opis |
|---|---|---|
shop * | integer | |
type * | string | Typ stron: about = Strony firmowe, terms = Zasady, help = Pomoc, info = Pozostałe informacje, links = Linki, cms = typ własny (wymaga cms_id z cms_list_types). |
id * | string | |
cms_id | integer | |
lang | string | |
with_redirects | boolean |
cms_create_pageDodaj NOWĄ stronę. Treść podajesz jako content.<jezyk>.html (pole text jest wyliczane i ignorowane). Nieznane pole w body → 400, nic nie przepada po cichu. Nowa strona domyślnie NIE pojawia się w spisie CMS — ustaw settings.showInIndex="y", jeśli ma być widoczna. Obsługuje shortcode [karuzela_towarow]. redirect=true → 301 ze starego adresu (seo.<jezyk>.url). Zwraca id RAZEM z typem i adresem strony (numeracja id jest per typ!). Przykład body: {"content":{"pol":{"title":"Dla Dawida","html":"<p>To jest opis strony</p>"}},"settings":{"showInIndex":"y"}}
| parametr | typ | opis |
|---|---|---|
shop * | integer | |
type * | string | Typ stron: about = Strony firmowe, terms = Zasady, help = Pomoc, info = Pozostałe informacje, links = Linki, cms = typ własny (wymaga cms_id z cms_list_types). |
cms_id | integer | |
redirect | boolean | |
body * | object | Struktura strony. Nieznane pole = błąd 400 (żeby literówka nie przepadła po cichu). |
cms_update_pageEdytuj ISTNIEJĄCĄ stronę — podaj tylko pola do zmiany, reszta zostaje nietknięta. Treść jako content.<jezyk>.html. Nieznane pole → 400. Nieistniejące id → 404 (panel renderuje pusty formularz dla dowolnego id, więc sprawdzamy listę stron typu). Przykład body: {"content":{"pol":{"title":"Dla Dawida","html":"<p>To jest opis strony</p>"}},"settings":{"showInIndex":"y"}}
| parametr | typ | opis |
|---|---|---|
shop * | integer | |
type * | string | Typ stron: about = Strony firmowe, terms = Zasady, help = Pomoc, info = Pozostałe informacje, links = Linki, cms = typ własny (wymaga cms_id z cms_list_types). |
id * | string | |
cms_id | integer | |
redirect | boolean | |
body * | object | Struktura strony. Nieznane pole = błąd 400 (żeby literówka nie przepadła po cichu). |
cms_delete_pageUsuń stronę. Nieistniejące id → 404; po usunięciu potwierdzamy z listy typu (pole „deleted"), a nie samym statusem HTTP.
| parametr | typ | opis |
|---|---|---|
shop * | integer | |
type * | string | |
id * | string | |
cms_id | integer |
cms_match_pageZnajdź istniejącą stronę pasującą treścią (mapowanie importu na id). match = {url,title,metaTitle,html,…}.
| parametr | typ | opis |
|---|---|---|
shop * | integer | |
type * | string | |
cms_id | integer | |
lang | string | |
match * | object | |
threshold | number |
cms_product_pricesCeny towarów ze Storefront GraphQL: bieżąca (z promocją) + przekreślona + omnibus + punkty. ids = lista identyfikatorów.
| parametr | typ | opis |
|---|---|---|
shop * | integer | |
ids * | array[integer] |
cms_list_panelsLista paneli IdoSell dostępnych dla tego klucza (host+url+nazwa). Gdy paneli jest więcej niż jeden, przekaż wybrany host/url jako argument "panel" w pozostałych narzędziach.
bez parametrów
JSON-RPC 2.0 po HTTP. Metody: initialize, tools/list, tools/call. Lista narzędzi:
curl -X POST https://mcp.dodatki.pro \
-H "Authorization: Bearer <KLUCZ>" -H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'