# Serwer MCP: agenty AI budują stronę i piszą treści

> Jak agent AI (Claude Code, Codex) łączy się z platformą przez MCP: import całej witryny z pliku JSON i praca na wpisach. Funkcja planów Scale.

Opublikowano: 2026-08-06 · Aktualizacja: 2026-10-07
Źródło: https://kompasfirm.pl/dokumentacja/serwer-mcp-dla-agentow-ai

---
## Do czego to służy

MCP (Model Context Protocol) to standard, którym narzędzia AI, na przykład Claude Code albo Codex, łączą się z zewnętrznymi systemami. Platforma udostępnia własny serwer MCP: agent podłączony do niego buduje całą witrynę z jednego dokumentu JSON, aktualizuje ją, dokłada wersje językowe oraz tworzy i redaguje wpisy bloga, pomocy i dokumentacji. Bez klikania w panelu, w rozmowie z agentem.

## Dostępność

**Wyłącznie plany Scale** (Scale, Scale Pro, Enterprise). Import strony na konto klienta wymaga, aby jego plan zawierał dostęp programistyczny (flaga `api_access`); w niższych planach serwer odmówi operacji z czytelnym komunikatem. Dostęp uruchamiamy wspólnie z obsługą platformy.

## Narzędzia serwera

Serwer przedstawia się agentowi jako **Kompasfirm** i udostępnia kilkanaście narzędzi; poniżej najważniejsze.

### import_site

Buduje, aktualizuje lub rozszerza witrynę z jednego dokumentu JSON. Kontrakt dokumentu jest ten sam co przy [imporcie z pliku w panelu](/dokumentacja/struktura-pliku-importu); dokument opisujący sam sklep stawia samodzielny mini sklep.

Argumenty:

- `json` (wymagany): cały dokument witryny jako tekst JSON,
- `mode`: `create` (domyślny), `update` (nadpisuje stronę zbudowaną z pliku) albo `add_language` (dokłada wersję językową),
- `target_website_id`: identyfikator istniejącej strony, wymagany dla `update` i `add_language`,
- `owner_user_id`: właściciel nowej strony; z nim import przechodzi limity planu właściciela i wymaga flagi `api_access`,
- `preview`: `true` uruchamia próbę na sucho, czyli walidację dokumentu, podsumowanie podstron i kontrolę limitów planu bez zapisu czegokolwiek.

Wynik: identyfikator, nazwa, subdomena i adres gotowej strony. Błędy walidacji wracają jako lista naruszeń kontraktu, punkt po punkcie.

### import_corpo_site

Buduje lub aktualizuje **stronę korporacyjną B2B (CORPOTPL)**. To osobny kontrakt dokumentu (sekcje rodziny `co_*`, menu per język, formularze, wersje językowe), więc `import_site` świadomie odrzuca takie payloady i odwrotnie.

Argumenty:

- `json` (wymagany): dokument CORPOTPL jako tekst JSON,
- `website_id`: identyfikator istniejącej strony CORPOTPL; bez niego powstaje nowa strona,
- `name`: nazwa nowej strony (domyślnie nazwa firmy z dokumentu),
- `owner_user_id`: właściciel nowej strony; wymaga flagi `api_access` i przechodzi limity planu,
- `replace`: `true` (domyślnie) zastępuje wszystkie podstrony, `false` dokłada i nadpisuje po adresie,
- `preview`: próba na sucho, zwraca liczbę stron, języki i formularze bez zapisu.

Tym narzędziem odtworzono w testach kompletną stronę o 139 podstronach w 6 wersjach językowych z jednego dokumentu.

### list_posts i get_post

Odczyt wpisów bloga (`article`), centrum pomocy (`help`) i dokumentacji (`doc`):

- `list_posts`: filtry `type`, `status` (`draft`/`published`), `search` po tytule oraz `limit` (domyślnie 20, maksymalnie 100); zwraca same metadane,
- `get_post`: pojedynczy wpis po `id` albo `slug`, razem z treścią Markdown i polami SEO.

### create_post, update_post i delete_post

Redakcja wpisów:

- `create_post`: wymagane `title`, `type`, `body` (Markdown) i `status`; opcjonalnie `slug` (bez niego powstaje z tytułu), `category`, `excerpt`, `cover_image`, `published_at` (przy publikacji bez daty stempluje się sama), `meta_title`, `meta_description`,
- `update_post`: `id` plus dowolny podzbiór pól; zmienia tylko to, co podano,
- `delete_post`: usuwa wpis po `id`. Wpisy nie mają kosza, operacja jest nieodwracalna i tak jest oznaczona, więc agent prosi o potwierdzenie.

### export_site i get_site_export

Kopia witryny do pobrania (to samo, co przycisk **Pobierz kopię (ZIP)** w panelu): `html/` ze statyczną wersją strony, `content/*.md` z treścią każdej podstrony w Markdown i `site.json` z sekcjami w tym samym kształcie, który zwraca `get_page`.

- `export_site`: `website_id` (wymagany), `owner_user_id` (tryb samoobsługowy; wymaga flag `api_access` i `site_export`), `wait` (`true` buduje paczkę w tym samym wywołaniu i od razu zwraca link; domyślnie `false`, czyli zadanie idzie do kolejki),
- `get_site_export`: `website_id` i opcjonalnie `export_id` (bez niego zwraca najnowszy eksport); wynik to status (`pending`, `running`, `done`, `failed`), liczba podstron, rozmiar, data wygaśnięcia i **podpisany `download_url`**, który działa bez logowania do panelu przez 7 dni.

Między dwoma eksportami tej samej strony obowiązuje 30 minut przerwy; w tym czasie `export_site` zwraca gotową paczkę zamiast budować nową. Typowy scenariusz agenta: `export_site` z `wait=true`, pobranie `download_url`, praca na `content/` lub `site.json`, zapis zmian przez `update_section`. Szczegóły paczki: [Eksport strony do ZIP](/dokumentacja/eksport-strony-zip).

## Zasoby: schematy dokumentu

Poza narzędziami serwer udostępnia agentowi trzy zasoby z pełną dokumentacją formatów JSON: kontrakt całego dokumentu witryny (witryna, witryna ze sklepem, sam sklep), szczegółowy opis części witrynowej (dane firmy, podstrony z sekcjami, katalog, wersje językowe) oraz kontrakt strony korporacyjnej CORPOTPL. Agent czyta je sam przed wygenerowaniem pliku, więc nie trzeba mu wklejać specyfikacji do rozmowy.

## Przebieg pracy

1. Agent czyta schemat dokumentu z zasobu MCP.
2. Generuje plik JSON opisujący witrynę: dane firmy, podstrony z sekcjami, katalog produktów, wersje językowe.
3. Uruchamia `import_site` z `preview: true`; serwer zwraca podsumowanie i ewentualne naruszenia limitów planu.
4. Po poprawkach agent importuje na serio i dostaje adres gotowej strony.

Ten sam przepływ działa dla aktualizacji: agent pobiera schemat, przygotowuje dokument z podstronami do nadpisania i celuje w istniejącą stronę przez `target_website_id`.

## Podłączenie agenta

Serwer działa lokalnie przy aplikacji (transport stdio). Claude Code:

```bash
claude mcp add kompasfirm -- php artisan mcp:start kompasfirm
```

Codex (`~/.codex/config.toml`):

```toml
[mcp_servers.kompasfirm]
command = "php"
args = ["artisan", "mcp:start", "kompasfirm"]
```

Po podłączeniu narzędzia i zasoby pojawiają się w agencie automatycznie, bez dodatkowej konfiguracji.

## Limity i bezpieczeństwo

- Operacje na wpisach wykonują się na koncie wskazanym w konfiguracji serwera, nie na anonimowym dostępie.
- Import na konto klienta przechodzi te same limity planu co import z panelu: liczba stron, podstron, pozycji katalogu i wersji językowych.
- Serwer celowo nie ma wystawki po HTTP; działa wyłącznie lokalnie przy aplikacji, więc nie poszerza publicznej powierzchni ataku.
- Próba na sucho (`preview`) niczego nie zapisuje, dlatego agent zawsze zaczyna od niej.

## Praktyka

Ten rozdział opisuje, co serwer potrafi. Jak z tego zrobić proces (konfiguracja klienta, dokument witryny w repozytorium, generatory podstron) opisujemy na blogu technicznym [Kartografia trakcji](/kartografia), pisanym wyłącznie dla power userów planów Scale.
