Serwer MCP: wideo i obrazy prosto z agenta
Serwer MCP Jantarisa daje agentowi AI (Claude Code, Codex, Cursor i innym) zestaw narzędzi: listę modeli z cenami, wycenę przed startem, generowanie wideo, obrazów i muzyki, podgląd zadania i saldo. Piszesz po ludzku "zrób rolkę 9:16 o kawie", a agent wybiera model, pokazuje koszt i zleca generację. Płacisz z tego samego salda co za API, nieudane generacje nic nie kosztują.
MCP (Model Context Protocol) to otwarty standard, przez który programy z agentami AI podłączają zewnętrzne narzędzia. Działa jak gniazdko: raz wpisujesz adres serwera i klucz, a agent sam widzi, jakie narzędzia ma do dyspozycji i kiedy ich użyć. Nie musisz pisać kodu ani znać endpointów.
| Ustawienie | Wartość |
|---|---|
| Adres | https://jantaris.com/mcp |
| Transport | Streamable HTTP (zdalny serwer, nic nie instalujesz) |
| Nagłówek | Authorization: Bearer sk-jt-... |
Instalacja jednym kliknięciem
- Dodaj do Cursora - Cursor czyta klucz ze zmiennej środowiskowej
JANTARIS_API_KEY(ustaw ją najpierw, jak w sekcji o Codexie niżej). - Dodaj do VS Code - VS Code pyta o klucz raz i trzyma go w bezpiecznym magazynie.
Te same przyciski oraz gotowe do skopiowania polecenia dla Claude Code i Codexa z właściwym adresem są w panelu, zakładka Klucze API. Ani przyciski, ani polecenia nie zawierają klucza. Zaraz po utworzeniu klucza panel pokazuje też raz polecenie Claude Code z tym kluczem.
Klucz API
- Otwórz panel, zakładka Klucze API.
- Nazwij klucz, np.
mcp-claude-code, i wpisz Limit miesięczny w złotówkach, np.50. - Kliknij Utwórz klucz i skopiuj
sk-jt-...(pokazujemy go tylko raz).
Limit miesięczny to twój bezpiecznik. Agent, który dostał narzędzie do generowania wideo, może w złej pętli zlecić kilka klipów pod rząd. Gdy klucz dojdzie do limitu, API odpowiada 403 i nic więcej nie schodzi z salda. Więcej: Uwierzytelnianie.
W przykładach niżej zamień sk-jt-... na swój klucz.
Claude Code
Jedno polecenie w terminalu (to samo w macOS, Linuksie i Windows PowerShell):
claude mcp add --transport http jantaris https://jantaris.com/mcp --header "Authorization: Bearer sk-jt-..."Domyślnie serwer działa tylko w bieżącym folderze projektu. Żeby był dostępny we wszystkich projektach, dodaj --scope user:
claude mcp add --transport http jantaris https://jantaris.com/mcp --scope user --header "Authorization: Bearer sk-jt-..."Sprawdzenie:
claude mcp listPrzy jantaris powinno być Connected. W samej sesji Claude Code wpisz /mcp, żeby zobaczyć status i listę narzędzi.
Claude Code przed każdym wywołaniem narzędzia pyta o zgodę. Zostaw to tak przy generate - widzisz wtedy, jaki model i jakie parametry agent chce wysłać.
Jeśli Claude Code korzysta już z Jantarisa jako dostawcy modeli (ANTHROPIC_BASE_URL, patrz Claude Code), MCP działa obok - ten sam klucz albo osobny, oba schodzą z jednego salda.
Codex CLI
Codex trzyma klucz w zmiennej środowiskowej, a w konfiguracji tylko jej nazwę.
macOS i Linux:
export JANTARIS_API_KEY="sk-jt-..."
codex mcp add jantaris --url https://jantaris.com/mcp --bearer-token-env-var JANTARIS_API_KEYWindows PowerShell (zmienna zapisana na stałe, potem otwórz nowy terminal):
[Environment]::SetEnvironmentVariable("JANTARIS_API_KEY", "sk-jt-...", "User")
codex mcp add jantaris --url https://jantaris.com/mcp --bearer-token-env-var JANTARIS_API_KEYPolecenie dopisze do ~/.codex/config.toml (w Windows %USERPROFILE%\.codex\config.toml):
[mcp_servers.jantaris]
url = "https://jantaris.com/mcp"
bearer_token_env_var = "JANTARIS_API_KEY"Sprawdzenie: codex mcp list. Pełna instrukcja z wyjaśnieniem, czego Codex nie umie: Codex CLI z Jantaris.
Cursor
Utwórz plik .cursor/mcp.json w projekcie (albo ~/.cursor/mcp.json dla wszystkich projektów):
{
"mcpServers": {
"jantaris": {
"url": "https://jantaris.com/mcp",
"headers": {
"Authorization": "Bearer ${env:JANTARIS_API_KEY}"
}
}
}
}${env:JANTARIS_API_KEY} Cursor podmienia na wartość zmiennej środowiskowej, więc klucz nie ląduje w pliku. Ustaw zmienną tak jak w sekcji Codex wyżej i uruchom Cursora ponownie. Jeśli wolisz prościej, wpisz klucz wprost: "Authorization": "Bearer sk-jt-..." - wtedy nie commituj tego pliku.
Po zapisaniu pliku serwer jantaris pojawi się na liście serwerów MCP w ustawieniach Cursora. Tam możesz go też wyłączyć bez usuwania.
VS Code
Tryb agenta w VS Code (GitHub Copilot) czyta plik .vscode/mcp.json. Ten wariant pyta o klucz przy pierwszym starcie i trzyma go w bezpiecznym magazynie VS Code, nie w pliku:
{
"inputs": [
{
"type": "promptString",
"id": "jantaris-key",
"description": "Klucz Jantaris (sk-jt-...)",
"password": true
}
],
"servers": {
"jantaris": {
"type": "http",
"url": "https://jantaris.com/mcp",
"headers": {
"Authorization": "Bearer ${input:jantaris-key}"
}
}
}
}Sprawdzenie: paleta poleceń (Ctrl+Shift+P, na macOS Cmd+Shift+P), polecenie MCP: List Servers, wybierz jantaris i zobacz status.
Cline
W panelu Cline kliknij ikonę MCP Servers, zakładka Remote Servers: nazwa jantaris, adres https://jantaris.com/mcp, transport Streamable HTTP. Nagłówek z kluczem dopisujesz w pliku ustawień (Configure MCP Servers):
{
"mcpServers": {
"jantaris": {
"type": "streamableHttp",
"url": "https://jantaris.com/mcp",
"headers": {
"Authorization": "Bearer sk-jt-..."
},
"disabled": false,
"autoApprove": []
}
}
}Zostaw autoApprove puste, żeby Cline pytał przed każdym generowaniem.
Claude Desktop
W aplikacji Claude (i na claude.ai) zdalny serwer dodajesz jako własny konektor:
- Customize, potem Connectors.
- + Add, potem Add custom connector.
- Nazwa:
Jantaris, adres:https://jantaris.com/mcp. - Uwierzytelnianie: bez logowania (No sign in), a w sekcji Request headers dodaj nagłówek
Authorizationo wartościBearer sk-jt-....
Według pomocy Anthropic własne konektory działają w planach Free (jeden konektor), Pro, Max, Team i Enterprise. W Team i Enterprise konektor dodaje właściciel organizacji w ustawieniach organizacji. Konektor łączy się z serwerów Anthropic, nie z twojego komputera.
OpenCode
W pliku opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"jantaris": {
"type": "remote",
"url": "https://jantaris.com/mcp",
"enabled": true,
"headers": {
"Authorization": "Bearer sk-jt-..."
}
}
}
}Inne programy
Każdy program, który obsługuje zdalne serwery MCP przez Streamable HTTP, potrzebuje tych samych trzech rzeczy: adresu https://jantaris.com/mcp, nagłówka Authorization i wartości Bearer sk-jt-.... Na przykład Windsurf w pliku mcp_config.json używa pola serverUrl zamiast url:
{
"mcpServers": {
"jantaris": {
"serverUrl": "https://jantaris.com/mcp",
"headers": { "Authorization": "Bearer sk-jt-..." }
}
}
}Narzędzia serwera
| Narzędzie | Co robi |
|---|---|
search_models | Dobiera modele do zadania: rodzaj (text-to-video, image-to-video, image-edit, music, upscale...), cena maksymalna, dźwięk, proporcje, rozdzielczość, dowolny opis. Zwraca 5 najlepszych z ceną i podpowiedzią "kiedy wybrać" |
list_models | Wszystkie modele z ceną za jednostkę (długa lista - zwykle lepszy jest search_models) |
get_model | Szczegóły modelu: parametry, dozwolone wartości, limity, cena |
estimate_cost | Sprawdza parametry i zwraca szacowany koszt oraz confirm_token. Nic nie pobiera |
generate | Zleca generację i czeka na wynik (domyślnie 45 sekund, najwyżej 240). Przyjmuje max_cost i confirm_token. Obrazy wracają też jako podgląd |
wait_for_task | Czeka do 240 sekund na trwające zadanie i zwraca wynik |
get_task | Status zadania i linki do wyników, od razu |
list_tasks | 20 ostatnich zadań, opcjonalnie według statusu |
cancel_task | Mówi, czy zadanie da się jeszcze zatrzymać. Zadania wysłanego już do modelu nie da się zatrzymać: jeśli się nie uda, kosztuje 0 zł, jeśli się uda - jest rozliczane |
get_balance | Saldo, środki dostępne po odjęciu blokad i - dla klucza z limitem - ile limitu miesięcznego zużyto |
upload_file | Zamienia plik z komputera albo publiczny link na adres do pól image_url, video_url, audio_url i podobnych |
chat | Pytanie do dowolnego modelu czatu z katalogu, np. o drugą opinię |
search_docs | Przeszukuje tę dokumentację i zwraca 3 najlepsze fragmenty z linkami |
Obrazy zwykle mieszczą się w 45 sekundach. Wideo trwa 1-4 minuty: generate czeka do 240 sekund, a gdy zadanie wciąż trwa, agent dostaje id i podpowiedź, żeby wywołać wait_for_task. Programy obsługujące postęp (MCP progressToken) pokazują w tym czasie "running 40 s".
Linki do wyników są ważne ograniczony czas (expires_at). Każdy wynik ma gotowe polecenie curl -o, więc możesz napisać agentowi "zapisz wideo w folderze media/".
Kontrola wydatków: najpierw zgoda, potem generacja
Dwa bezpieczniki pilnują, żeby agent nie wydał więcej, niż zatwierdziłeś:
max_costwgenerate: gdy wycena jest wyższa, zadanie nie startuje, nic nie jest pobrane ani zablokowane.confirm_tokenzestimate_cost: agent pokazuje koszt, ty piszesz "OK", a on wywołujegeneratez tymi samymi parametrami i tym tokenem. Jeśli od wyceny zmienił się model albo którykolwiek parametr, albo minęło 15 minut, wywołanie zostaje odrzucone i nic nie schodzi z salda.
Zalecany przebieg (gotowe prompty niżej go stosują): search_models -> estimate_cost -> twoja zgoda -> generate z confirm_token i max_cost -> w razie potrzeby wait_for_task.
Trzeci bezpiecznik to osobny klucz z limitem miesięcznym (patrz Klucz API) - get_balance pokazuje, ile z niego zużyto.
Pliki z komputera
Animacja zdjęcia, synchronizacja ust czy audio referencyjne wymagają adresu pliku. upload_file załatwia to na jeden z trzech sposobów:
data_base64(+filename) - agent wysyła plik w wywołaniu, do 8 MB.source_url- serwer sam pobiera publiczny link (do 25 MB).request_upload_url: true- serwer zwraca jednorazowy adres ważny 10 minut, a agent uruchamia:
curl -T zdjecie.png "https://jantaris.com/mcp/upload/..."Invoke-WebRequest -Method Put -InFile .\zdjecie.png -Uri "https://jantaris.com/mcp/upload/..."Każdy sposób zwraca url, mime, bytes i expires_at. Dozwolone typy: PNG, JPG, WebP, MP4, MOV, MP3, WAV (sprawdzane po zawartości, nie po nazwie). Pliki znikają po 30 dniach.
Gotowe prompty
Serwer udostępnia przepisy, które program pokazuje jako prompty albo polecenia z ukośnikiem (w Claude Code: /mcp__jantaris__reel_9x16). Każdy prowadzi agenta przez wybór modelu, zgodę na koszt, wgranie pliku i generację:
| Prompt | Argumenty |
|---|---|
reel_9x16 | topic, duration, language |
product_ad | product, style |
ugc_testimonial | product, persona, language |
image_to_video_from_file | file_path, motion |
podcast_cover | title, style |
music_jingle | mood, length |
compare_models | prompt, models |
Przykładowe polecenia
Wklej do agenta po podłączeniu serwera:
- "Zrób rolkę 9:16 w Seedance 2.5, 5 sekund, o porannej kawie w małej kawiarni. Najpierw pokaż mi koszt i poczekaj na moją zgodę."
- "Wygeneruj 3 warianty okładki do tego README w GPT Image 2.5, proporcje 16:9, i zapisz je w
docs/img/." - "Pokaż 5 najtańszych modeli wideo, które obsługują 1080p, z ceną za sekundę."
- "Ile mam jeszcze na koncie?"
- "Zapytaj Gemini 3.8 Flash o drugą opinię na temat tej funkcji i porównaj z twoją."
Aktualne ceny przykładowych modeli: Seedance 2.5 od 1,51 zł za sekundę, GPT Image 2.5 0,254 zł za obraz, Nano Banana Pro od 0,439 zł za obraz. Pełny cennik: Cennik.
Bezpieczeństwo i koszty
- Osobny klucz z limitem miesięcznym dla każdego agenta. Po przekroczeniu limitu dostajesz
403, saldo konta zostaje nietknięte. - Zgoda przed generacją. Agent wywołuje
estimate_cost, pokazuje koszt i przekazujeconfirm_tokenorazmax_costdogenerate(patrz Kontrola wydatków). Dodaj tę zasadę także do pliku AGENTS.md. - Nie włączaj automatycznej zgody na narzędzie
generate. Zgoda nasearch_models,list_models,get_model,estimate_cost,get_task,wait_for_task,list_tasks,get_balanceisearch_docsjest bezpieczna, bo nic nie kosztują. - Nieudana generacja = 0 zł. Środki są blokowane na czas zadania i wracają w całości, gdy model zwróci błąd.
- Klucz nie trafia do repozytorium. W plikach projektowych używaj zmiennych (
${env:...}w Cursorze,${input:...}w VS Code,bearer_token_env_varw Codexie).
Najczęstsze błędy
| Objaw | Przyczyna i rozwiązanie |
|---|---|
Failed to connect / serwer czerwony | Literówka w adresie (musi kończyć się na /mcp) albo brak słowa Bearer i spacji przed kluczem |
401 | Zły, usunięty albo niepełny klucz. Utwórz nowy w panelu |
402 | Za niskie saldo. Doładuj i powtórz |
403 | Klucz doszedł do limitu miesięcznego. Utwórz nowy z wyższym limitem |
422 przy generate | Parametr spoza zakresu modelu, np. za długie wideo. Poproś agenta, żeby najpierw wywołał get_model |
| Codex: serwer nie startuje | Zmienna JANTARIS_API_KEY nie jest ustawiona w terminalu, z którego uruchamiasz codex |
| Agent nie widzi narzędzi | Uruchom program ponownie po dodaniu serwera. W Claude Code sprawdź /mcp |
Więcej kodów: Błędy.









