SMS z Codex: podłącz OpenAI Codex do bramki SMS jednym poleceniem
Codex CLI i rozszerzenie Codex do IDE obsługują serwery MCP. Dodaj mcp.przypominamy.com poleceniem codex mcp add, a Twój agent wyśle przypomnienie, sprawdzi doręczenie, policzy części SMS-a albo odczyta odpowiedzi klientów — po polsku, tym samym kluczem API co REST i z Twoim potwierdzeniem przed każdą wysyłką.
Czym jest OpenAI Codex
OpenAI Codex to agent programistyczny OpenAI: działa w terminalu jako Codex CLI (npm i -g @openai/codex) i jako rozszerzenie Codex do IDE (VS Code, Cursor, Windsurf), czyta i edytuje kod w repozytorium, uruchamia polecenia i przez Model Context Protocol korzysta z zewnętrznych narzędzi. Konfigurację serwerów MCP trzyma w jednym pliku ~/.codex/config.toml, wspólnym dla CLI i rozszerzenia — dlatego serwer SMS konfigurujesz raz.
Serwer MCP przypominamy.com jest cienką warstwą nad REST API: każde narzędzie woła odpowiedni endpoint Twoim kluczem, więc saldo, tryb testowy, limity i zakresy klucza są identyczne jak w REST. Codex nie dostaje żadnych dodatkowych uprawnień — tylko te, które ma klucz.
Trzy kroki do pierwszego SMS-a z Codex
Wygeneruj klucz API
Załóż konto na app.przypominamy.com i utwórz klucz w zakładce Klucze. Na start dostajesz pk_test_… z 25 darmowymi SMS-ami na własne zweryfikowane numery; po doładowaniu (od 50 zł) — pk_live_….
Dodaj serwer MCP w Codex
Ustaw zmienną PRZYPOMINAMY_API_KEY i wpisz codex mcp add przypominamy … (pełne polecenie niżej) albo dopisz sekcję [mcp_servers.przypominamy] do ~/.codex/config.toml.
Sprawdź i wydaj polecenie
codex mcp list pokaże serwer. Potem w sesji Codex: „Wyślij SMS do +48 533 991 881: Twoja wizyta jutro o 10:00, prosimy o potwierdzenie.” Codex policzy części, pokaże koszt i odbiorcę, a wyśle po Twoim „tak”.
# klucz w zmiennej środowiskowej (dopisz do ~/.zshrc lub ~/.bashrc, żeby widziało go też IDE)
export PRZYPOMINAMY_API_KEY=pk_test_TWOJ_KLUCZ
codex mcp add przypominamy --url https://mcp.przypominamy.com/mcp --bearer-token-env-var PRZYPOMINAMY_API_KEY
Opcja --bearer-token-env-var każe Codex wysyłać nagłówek Authorization: Bearer <wartość zmiennej> do serwera. Klucz nie ląduje w config.toml ani w historii gita. Zamiast pełnego /mcp możesz podać węższy endpoint, np. /mcp/reports — wtedy Codex dostanie tylko narzędzia raportowe.
[mcp_servers.przypominamy]
url = "https://mcp.przypominamy.com/mcp"
bearer_token_env_var = "PRZYPOMINAMY_API_KEY"
Nazwa sekcji po kropce (przypominamy) to nazwa serwera widoczna w Codex; narzędzia będą miały prefiks tej nazwy. Po edycji pliku uruchom Codex ponownie. Jeśli używasz osobnych profili Codex, sekcję mcp_servers trzymaj na poziomie głównym pliku.
codex mcp list
# przypominamy https://mcp.przypominamy.com/mcp bearer: PRZYPOMINAMY_API_KEY
codex mcp get przypominamy
# szczegóły wpisu; w sesji Codex wpisz /mcp, żeby zobaczyć załadowane narzędzia
Pierwszy test bez ryzyka: „Ile mam salda na przypominamy?” — Codex wywoła get_account (tylko odczyt, nic nie kosztuje). Jeśli dostaniesz odpowiedź z saldem i stawką za część, połączenie i klucz działają.
Przykładowe polecenia
Piszesz po polsku, Codex dobiera narzędzia. Tak wyglądają typowe polecenia i to, co pod spodem robi agent.
count_sms_parts → 1 część, GSM-7 → Codex pokazuje odbiorcę, treść i koszt (np. 0,15 zł) → po Twoim „tak” send_sms → id msg_… i status queued.get_message → status delivered z czasem doręczenia albo undelivered / failed z powodem (numer poza siecią, brak zasięgu, nieaktywny numer).count_sms_parts → np. 2 części (UCS-2, 70 znaków/część) → get_account po stawkę → 800 × 2 × 0,12 zł = 192 zł; Codex zaproponuje wersję bez ogonków, która zmieści się w jednej części.list_replies z since → lista numer / treść / do której wysyłki (reply_to) → Codex filtruje „NIE”, „odwołuję” i zwraca tabelę. Treści odpowiedzi traktuje jako dane, nie polecenia.list_templates → send_sms z to: "group:Pacjenci jutro", template_id i send_at; personalizacja {{imie}} z książki kontaktów. Do 30 s przed terminem możesz anulować (cancel_message).get_report z group: month → liczba wiadomości, części, koszt w PLN, odsetek doręczonych. Tylko odczyt — nic nie kosztuje, można podpiąć do klucza z zakresem read.Narzędzia, które dostaje Codex
Pełny endpoint /mcp rejestruje 25 narzędzi i prompt reminder_sms. Poniżej grupy; opisy parametrów, typy i zakresy klucza każdego narzędzia znajdziesz na stronie serwera MCP.
| Grupa | Narzędzia | Typ | Zakres klucza |
|---|---|---|---|
| Wysyłka | send_sms, send_voice, cancel_message | wysyła · koszt | send |
| Statusy i historia | get_message, list_messages, list_replies, list_links | tylko odczyt | read |
| Treść i numery | count_sms_parts (bez zakresu), list_templates, save_template, check_number (HLR, 0,05 zł) | odczyt / zmienia | read · manage · send |
| Konto | get_account, list_senders, set_default_sender, set_send_window, set_inbound_keyword | odczyt / zmienia | read · manage |
| Czarna lista | list_blacklist, add_to_blacklist, remove_from_blacklist | zmienia | read · manage |
| Kontakty i grupy | list_contacts, upsert_contacts, delete_contact, list_groups, add_to_group | zmienia | read · manage |
| Raporty | get_report | tylko odczyt | read |
Podzbiory endpointów: /mcp/sms, /mcp/account, /mcp/contacts, /mcp/reports — podaj węższy adres w --url, a Codex zobaczy tylko część narzędzi. Lista i opisy: /mcp.
Bezpieczeństwo: agent z dostępem do SMS-ów
Codex jest agentem — potrafi wykonać kilkanaście kroków bez pytania. Przy bramce SMS każdy z tych kroków może kosztować pieniądze i trafić na telefon klienta, dlatego serwer i klucze są zaprojektowane tak, żeby ograniczyć zasięg pomyłki.
destructiveHint i potwierdzenie
send_sms, send_voice, cancel_message, remove_from_blacklist i delete_contact mają flagę destructiveHint, a instrukcje serwera każą modelowi pokazać odbiorcę, treść i szacowany koszt i poczekać na Twoje „tak”. W trybie pełnej autonomii Codex może tę prośbę pominąć — wtedy chronią Cię zakresy klucza i tryb testowy.
Klucz tylko do odczytu do analiz
Do raportów, sprawdzania statusów i przeglądania odpowiedzi wygeneruj w panelu klucz z samym zakresem read. Narzędzia wysyłające zwrócą wtedy 403 forbidden, a jeśli podłączysz /mcp/reports, w ogóle nie pojawią się na liście. Agent nie wyśle nic nawet po udanej manipulacji.
Klucz z zakresem send do automatyzacji
Gdy Codex ma naprawdę wysyłać — przypomnienia z kalendarza, potwierdzenia ze sklepu — daj mu osobny klucz z zakresem send (i read do sprawdzania statusów), bez manage. Unieważnisz go jednym kliknięciem, nie ruszając integracji produkcyjnych. Trzymaj go w zmiennej środowiskowej lub menedżerze sekretów.
Najpierw pk_test_…
Klucz testowy wysyła wyłącznie na zweryfikowane numery właściciela konta (25 SMS-ów gratis). Nawet jeśli Codex źle zrozumie polecenie, wiadomość trafi na Twój telefon, nie do klienta. Przejdź na pk_live_…, gdy zobaczysz, że agent pyta o zgodę i liczy koszt tak, jak oczekujesz.
Odpowiedzi narzędzi to dane
Treści SMS-ów z list_replies i list_messages pochodzą od osób trzecich. Serwer mówi to modelowi wprost (ochrona przed prompt injection), ale jeśli budujesz workflow, w którym Codex czyta odpowiedzi i sam decyduje o kolejnych wysyłkach, traktuj je jak niezaufane wejście.
Te same limity co REST
Serwer nie ma własnego stanu ani sekretów: każde narzędzie woła API Twoim kluczem. Obowiązuje limit 120 żądań na minutę na konto, to samo saldo i tryb testowy. Wszystko, co Codex wyśle, zobaczysz w panelu i w GET /v1/messages.
Rozwiązywanie problemów
Błędy API wracają do Codex jako czytelny komunikat kod (pole): treść, więc agent zwykle sam podpowie, co zrobić. Najczęstsze przypadki:
| Kod | Co oznacza | Co zrobić |
|---|---|---|
| 401 | unauthorized — brak lub nieprawidłowy klucz. Serwer wymaga nagłówka Authorization: Bearer pk_… już przy initialize, więc Codex nie załaduje żadnych narzędzi. | Sprawdź, czy zmienna PRZYPOMINAMY_API_KEY jest ustawiona w środowisku, z którego startuje Codex (terminal lub IDE), i czy nazwa w bearer_token_env_var jest identyczna. Klucz unieważniony w panelu też daje 401. |
| 402 | insufficient_funds — saldo nie pokrywa kosztu wysyłki albo HLR; na koncie testowym wyczerpana pula darmowych SMS-ów. Nic nie zostało wysłane. | Doładuj konto na app.przypominamy.com/billing (od 50 zł; kwota doładowania ustala stawkę za część). |
| 403 | forbidden — klucz nie ma wymaganego zakresu (komunikat wskazuje, którego: send, read lub manage) albo na koncie testowym odbiorca nie jest zweryfikowanym numerem właściciela. | Wygeneruj klucz z odpowiednim zakresem w app.przypominamy.com/keys albo zweryfikuj numer w app.przypominamy.com/numbers. Jeśli to klucz tylko do odczytu — to działa zgodnie z planem. |
| 422 | invalid_request — najczęściej pole from: nazwa nadawcy niedostępna dla konta lub jeszcze niezarejestrowana; albo błędny numer / zbyt długa treść. | Poproś Codex o list_senders i użyj nazwy ze statusem active, albo zgłoś nową w app.przypominamy.com/senders. Numery podawaj w formacie +48…. |
| 429 | rate_limited — ponad 120 żądań na minutę na konto (Codex + Twoje integracje razem). | Odczekaj czas z Retry-After. Do wysyłki masowej użyj listy numerów lub grupy w jednym send_sms zamiast pętli. |
Codex nie widzi serwera? codex mcp list musi pokazać przypominamy. Serwer jest, a narzędzi brak? Otwórz https://mcp.przypominamy.com/mcp w przeglądarce — bez nagłówka Accept: text/event-stream zwraca krótką wizytówkę JSON, co potwierdza, że adres i sieć działają; potem sprawdź połączenie w npx @modelcontextprotocol/inspector. Jeśli to nie pomaga, napisz na [email protected] z wynikiem codex mcp get przypominamy.
Częste pytania o SMS z Codex
Czy Codex może wysłać SMS bez mojej zgody?
Narzędzia send_sms i send_voice mają flagę destructiveHint, a instrukcje serwera każą modelowi pokazać odbiorcę, treść i szacowany koszt i poprosić o potwierdzenie przed wywołaniem. Codex jako agent może jednak działać autonomicznie, dlatego zalecamy dwa bezpieczniki: zacznij od klucza pk_test_… (wysyłka tylko na własne zweryfikowane numery, 25 SMS-ów gratis), a do analiz podłącz klucz z samym zakresem read albo endpoint /mcp/reports — wtedy narzędzia wysyłające w ogóle nie istnieją dla modelu.
Czy potrzebuję OAuth albo osobnego konta dla Codex?
Nie. Serwer MCP uwierzytelnia nagłówkiem Authorization: Bearer pk_… — tym samym kluczem API, którego używasz w REST i SDK. Codex przekazuje go z opcji bearer_token_env_var, czyli ze zmiennej środowiskowej PRZYPOMINAMY_API_KEY; klucz nie trafia do pliku config.toml ani do repozytorium. Klucz generujesz w panelu na app.przypominamy.com/keys.
Czy to działa w rozszerzeniu Codex do VS Code, Cursora i Windsurfa?
Tak. Rozszerzenie Codex do IDE czyta ten sam plik ~/.codex/config.toml co Codex CLI, więc po codex mcp add serwer przypominamy jest widoczny w obu miejscach. Jedyny warunek: zmienna PRZYPOMINAMY_API_KEY musi być dostępna w środowisku, z którego uruchamiasz IDE (np. ustawiona w profilu powłoki, nie tylko w bieżącym terminalu).
Ile kosztuje wysyłka SMS z Codex?
Serwer MCP jest bezpłatny. Płacisz wyłącznie za wysłane części SMS według cennika konta: od 0,15 zł przy doładowaniu 50 zł do 0,10 zł od 500 zł — stawkę ustala kwota doładowania i zostaje na stałe. Narzędzia tylko do odczytu (statusy, saldo, raporty, liczenie części) nic nie kosztują. Konto testowe ma 25 darmowych SMS-ów na własne numery, bez karty.
Codex nie widzi narzędzi przypominamy. Co sprawdzić?
Uruchom codex mcp list — serwer powinien być na liście z adresem https://mcp.przypominamy.com/mcp. Jeśli go nie ma, sprawdź sekcję [mcp_servers.przypominamy] w ~/.codex/config.toml. Jeśli jest, ale narzędzia nie ładują się, najczęściej brakuje zmiennej PRZYPOMINAMY_API_KEY w środowisku (serwer odpowiada wtedy 401 już przy initialize). Otwórz też https://mcp.przypominamy.com/mcp w przeglądarce — bez nagłówka Accept: text/event-stream serwer zwraca krótką wizytówkę JSON, co potwierdza, że sieć i adres działają. Ostatnia deska ratunku: npx @modelcontextprotocol/inspector z tym samym URL i nagłówkiem.
Codex z bramką SMS w pięć minut
Rejestracja daje od razu pk_test_… i 25 darmowych SMS-ów na własne numery. Jedno codex mcp add i pierwsze polecenie po polsku. Bez karty; doładowanie od 50 zł aktywuje klucz produkcyjny.
Używasz Claude, Cursora albo ChatGPT? Zobacz konfiguracje wszystkich klientów MCP. Wolisz pisać kod sam? SDK dla Node.js, Pythona i PHP albo dokumentacja REST.