Tłumaczenie maszynowe, niezweryfikowane przez osobę, dla której polski jest językiem ojczystym. Wzorcem jest wersja angielska.

API i integracjeEdytuj na GitHubieŹródło: docs/deploy/mcp-http.md

Uruchamianie kshana-mcp przez HTTP (własny hosting)

Fragment wymieniający zewnętrznych klientów AI został tu pominięty; jest w docs/deploy/mcp-http.md na GitHubie.

Kshana nie udostępnia punktu końcowego. Nie ma wspólnego serwera kshana, na który można by wskazać klienta. Uruchamia się go na własnej maszynie, w kontenerze lub w projekcie chmurowym, a kontrola dostępu i koszty leżą po stronie uruchamiającego. Serwer 0.40.0 to ten z tego repozytorium: jego wartości mają etykiety VALIDATED lub MODELLED dokładnie tak samo jak przez stdio.

Bezpieczne ustawienia domyślne#

Mechanizm Zachowanie
Adres nasłuchu Tylko pętla zwrotna (127.0.0.1, ::1). Sam port (--http 8080) oznacza 127.0.0.1:8080.
Non-loopback Wymaga --allow-remote oraz tokenu bearer w zmiennej środowiskowej KSHANA_MCP_HTTP_TOKEN (co najmniej 16 znaków). Bez obu serwer odmawia uruchomienia. Z obiema wypisuje ostrzeżenie, że nasłuchuje poza tą maszyną.
Uwierzytelnianie Authorization: Bearer <token> w każdym żądaniu, gdy ustawiono token (można go ustawić także na pętli zwrotnej). Porównywany w stałym czasie. Brak lub błąd: 401.
System plików Brak. Narzędzia do plików IQ (iq_*) są w trybie HTTP wyłączone niezależnie od wartości KSHANA_MCP_IQ_DIR; każde inne narzędzie przyjmuje scenariusz w treści żądania i odrzuca ten, który wskazuje plik. Żaden argument narzędzia nie odczytuje ani nie zapisuje ścieżki.
Rozmiar treści --max-body-bytes, domyślnie 5 MiB (limit scenariusza to 4 MiB). Po przekroczeniu: 413, niezależnie od tego, czy długość jest zadeklarowana, czy treść jest przesyłana we fragmentach.
Czas odpowiedzi --request-timeout-secs, domyślnie 120. Po przekroczeniu: 408. Ogranicza to czas oczekiwania wywołującego, a nie samą pracę: trwającego już przebiegu nie można zatrzymać, więc po 408 toczy się dalej i kończy w tle.
Współbieżność --max-concurrent, domyślnie 8. Ponad ten limit żądanie od razu dostaje 503 z Retry-After; żadne nie czeka w kolejce.
Pula robocza Każde wywołanie narzędzia działa w wątku blokującym w puli --max-concurrent miejsc, nigdy w wątkach asynchronicznych, więc długi przebieg nie może zatrzymać odpowiadania serwera. Miejsce zwalnia się dopiero wtedy, gdy kończy się sam przebieg, a nie wtedy, gdy wywołujący zrezygnuje: porzucone przebiegi nie mogą więc narosnąć ponad rozmiar puli, a wywołanie, które zastaje pulę pełną, jest odrzucane jako zajęte.
Budżet pracy Scenariusz żądający znacznie więcej niż dołączone przykłady jest odrzucany przed uruchomieniem: ponad 1000 realizacji Monte Carlo (runs), siatka parametrów licząca ponad 1000 węzłów, ponad 5000 przebiegów składowych (węzły siatki razy realizacje) albo siatka czasu licząca ponad 2 miliony epok. Błąd wskazuje pole do zmniejszenia. Ten sam budżet obowiązuje przez stdio; wiersz poleceń kshana go nie ma.
CORS Nagłówek Access-Control-* nigdy nie jest wysyłany. Żądanie z nagłówkiem Origin jest odrzucane (403), chyba że wskazano go przez --allow-origin <scheme://host[:port]>; * nie jest akceptowane.
Nagłówek Host Sprawdzany względem nazw pętli zwrotnej albo adresu nasłuchu plus każdego --allowed-host. Za proxy lub pod adresem URL platformy podaj --allowed-host your.domain. Cokolwiek innego: 403.
Sesje Brak. Każdy POST dostaje odpowiedź JSON; nie jest utrzymywana tabela sesji ani otwarty strumień zdarzeń wysyłanych przez serwer.

TLS nie jest kończony przez kshana-mcp. Gdy serwer jest osiągalny poza jedną maszyną, postaw przed nim HTTPS (TLS platformy lub reverse proxy) i trzymaj token w tajemnicy; token bearer przesyłany zwykłym HTTP można odczytać w sieci.

Lokalnie#

kshana-mcp --http 127.0.0.1:8080

Konfiguracja klienta (klient z adresem URL; nagłówek dodaj tylko wtedy, gdy ustawiono token):

{ "mcpServers": { "kshana": { "url": "http://127.0.0.1:8080/mcp",
    "headers": { "Authorization": "Bearer ${KSHANA_MCP_HTTP_TOKEN}" } } } }

Docker#

export KSHANA_MCP_HTTP_TOKEN="$(openssl rand -hex 32)"
docker run --rm -p 127.0.0.1:8080:8080 -e KSHANA_MCP_HTTP_TOKEN \
  ghcr.io/ashfordeou/kshana-mcp:0.40.0 \
  --http 0.0.0.0:8080 --allow-remote --allowed-host localhost:8080 --allowed-host 127.0.0.1:8080

Wewnątrz kontenera serwer musi nasłuchiwać na 0.0.0.0, więc potrzebuje --allow-remote i tokenu. Opublikowanie portu jako 127.0.0.1:8080:8080 zachowuje go na Twojej maszynie; usuń 127.0.0.1: tylko wtedy, gdy zamierzasz go udostępnić, a wtedy zakończ TLS przed nim. Szablony docker compose oraz Fly.io i Cloud Run są w mcp-http/.

Szablony (wdrażasz je samodzielnie; Kshana żadnego nie uruchamia)#

Każdy uruchamia opublikowany obraz, ustawia --allowed-host na nazwę hosta platformy, którą podmieniasz w pliku, i polega na platformie w kwestii HTTPS.

Ustaw limit CPU i pamięci na platformie#

Limit czasu, pula i budżet ograniczają, ile pracy zostaje przyjęte, ale jedno przyjęte wywołanie nadal może długo zajmować rdzeń, a duży wynik może zająć setki megabajtów. Nałóż też twardy limit na kontener: szablony żądają 2 CPU i 1 GiB (cpus i mem_limit w Compose, [[vm]] we Fly, resources.limits w Cloud Run). Wartość --max-concurrent utrzymuj na poziomie liczby CPU lub niższym.

Czym nie jest#

  • Nie jest usługą wielodostępną. Każdy, kto ma token, uruchamia symulacje na Twoim sprzęcie; poza powyższymi limitami nie ma żadnych limitów na użytkownika.
  • Wyłącznie doradczo, nie jest to sprzęt nawigacyjny z zatwierdzeniem typu: za nawigację nadal odpowiada operator. Wyniki symulatora to obliczone z modelu lub sprawdzone względem niezależnego wzorca wartości do analizy, jak wszędzie indziej w Kshana.