Skip to content

fix(mcp_server): instrukcja ChatGPT (Wtyczki, tryb Work) i certyfikat SSL jako warunek konieczny - #817

Open
mpasternak wants to merge 5 commits into
devfrom
fix-mcp-instrukcja-chatgpt
Open

mpasternak wants to merge 5 commits into
devfrom
fix-mcp-instrukcja-chatgpt

Conversation

@mpasternak

Copy link
Copy Markdown
Member

Co

ChatGPT na stronie /mcp/

  • Nowe kroki: Ustawienia → Wtyczki → „Dodaj” (prawy górny róg) → Serwer MCP → Streamable HTTP → nazwa i adres; w wariancie z logowaniem dodatkowo „Uwierzytelnij” (Ustawienia → Wtyczki → Serwery MCP).
  • Uwagi: sugerujemy pracę z konektorem w trybie Work; tryb deweloperski nie jest potrzebny.
  • Allowlista DCR (oauth_mcp/views_dcr.py) dostaje dokładny callback konektorów ChatGPT https://chatgpt.com/connector_platform_oauth_redirect (nie całą domenę). Dzięki temu strona pokazuje ChatGPT adres /mcp/auth, a ewentualne podłączenie w trybie Chat na chatgpt.com nie skończy się invalid_redirect_uri. Aplikacja desktopowa (Work) loguje się przez loopback 127.0.0.1, który był już dozwolony.

Certyfikat SSL jako warunek sine qua non

  • /mcp/: czerwona ramka w obu wariantach + link do SSL Labs dla bieżącego hosta.
  • Prompt dla asystenta: błąd „unable to verify the first certificate” = niekompletny certyfikat; nie wyłączać weryfikacji, zgłosić administratorowi.
  • Admin → Uczelnia → sekcja „Serwer MCP dla asystentów AI”: ta sama uwaga jako description fieldsetu (bez zmiany help_text, więc bez migracji).

Dlaczego

Na publikacje-test.up.lublin.pl serwer wysyła sam certyfikat *.up.lublin.pl bez pośredniego Certum DV TLS G2 R39 CA (openssl s_clientVerify return code: 21). Przeglądarka dociąga go przez AIA, klienci MCP nie — połączenia padały, choć strona w przeglądarce działała.

Testy

  • uv run pytest src/mcp_server src/oauth_mcp → 219 passed, 1 skipped
  • nowe: rejestracja DCR z callbackiem ChatGPT (201) i inna ścieżka na chatgpt.com (400); kroki/uwagi ChatGPT; ramka certyfikatu w obu wariantach; zdanie o certyfikacie w obu promptach
  • ruff, djlint, pre-commit, manage.py check — czysto

🤖 Generated with Claude Code

https://claude.ai/code/session_01BnT8fzrphbVoiU3wQDvnXf

mpasternak and others added 5 commits September 13, 2026 19:45
… SSL jako warunek konieczny

- ChatGPT: Ustawienia → Wtyczki → Dodaj → Serwer MCP, Streamable HTTP,
  „Uwierzytelnij”; bez trybu deweloperskiego, z sugestią pracy w trybie Work.
- Allowlista DCR: dokładny callback konektorów ChatGPT
  (https://chatgpt.com/connector_platform_oauth_redirect), więc strona
  pokazuje ChatGPT adres /mcp/auth.
- /mcp/, prompt dla asystenta i sekcja MCP w adminie uczelni: prawidłowy
  certyfikat SSL z kompletnym łańcuchem jako warunek sine qua non
  (przeglądarka ukrywa brak certyfikatu pośredniego, klienci MCP nie).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BnT8fzrphbVoiU3wQDvnXf
…okość

- Ramka certyfikatu: drugi link do sprawdzenia łańcucha (SSL Shopper
  SSL Checker) obok SSL Labs.
- Panel „dostęp publiczny, bez logowania” tracił max-width 48rem i był
  wyraźnie węższy od sekcji pod nim; limit zostaje tylko na akapitach tekstu.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BnT8fzrphbVoiU3wQDvnXf
… kliknięciem

- Klient dostaje pole `wstep` — zdanie nad przyciskiem „Dodaj serwer”
  (Claude, Cursor, VS Code, LM Studio) mówiące, co się po kliknięciu stanie
  i co zrobić, gdy przycisk nie zadziała.
- Ścieżki plików konfiguracyjnych (Cursor, Windsurf, Codex) pokazują wariant
  windowsowy z %USERPROFILE% — samo „~/.cursor/mcp.json” jest tam bezużyteczne.
- Wklejki kopiują się kliknięciem w całe pole; zielony przycisk pod ramką
  zastąpiła dyskretna ikona w prawym górnym rogu (widoczna na hover/focus,
  zawsze widoczna na dotyku). Kliknięcie kończące zaznaczanie nie nadpisuje
  schowka.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BnT8fzrphbVoiU3wQDvnXf
…u czytelnika

- Przycisk kopiowania to teraz sama ikona w rogu ramki (kwadrat 1.75rem, bez
  napisu, bez tła i obramowania), widoczna na hover/focus, a na dotyku
  zawsze. Po skopiowaniu zmienia się w zielony znak potwierdzenia; komunikat
  tekstowy został dla czytników ekranu (show-for-sr).
- Ścieżki plików konfiguracyjnych jadą w HTML-u w obu wariantach
  (POSIX + Windows), a strona.js pokazuje ten pasujący do systemu czytelnika.
  Serwer nie może tego różnicować po User-Agencie, bo HTML strony jest
  wspólny dla wszystkich; bez JS zostaje wariant POSIX-owy.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BnT8fzrphbVoiU3wQDvnXf
Przycisk kopiowania zniknął: zielony pod ramką krzyczał, a ikonka w rogu
ginęła. Klikalne jest całe szare pole (role="button" + tabindex, więc działa
też Enter i spacja), przy najechaniu pokazuje się podpowiedź „Kliknij, aby
skopiować”, a po skopiowaniu pole potwierdza to zieloną ramką i komunikatem.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BnT8fzrphbVoiU3wQDvnXf
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant