Gitea MCP OAuth 브리지 (DCR, Gitea 로그인)

Gitea에 동적 클라이언트 등록이 없어 MCP 클라이언트가 URL만으로 OAuth 연결을
못 하는 문제를 이 브리지가 인가 서버 역할을 대신해 해결한다. G3X의
plane-mcp-oauth-bridge(upstream_oauth 모드)에서 가져와 Gitea 전용으로 정리했다:
Plane PAT 연결 페이지·워크스페이스 헤더·bridge_mode 분기를 없앴다.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ysj7705andClaude Opus 5.5 committed 2026-10-22 18:20:02 +09:00
commit 916d149ab5
18 files changed
+1494

No files matched your search

+23
View File
@@ -0,0 +1,23 @@
from __future__ import annotations
import base64
import hashlib
from cryptography.fernet import Fernet, InvalidToken
def make_fernet(encryption_key: str) -> Fernet:
digest = hashlib.sha256(encryption_key.encode("utf-8")).digest()
key = base64.urlsafe_b64encode(digest)
return Fernet(key)
def encrypt_token(encryption_key: str, plaintext: str) -> str:
return make_fernet(encryption_key).encrypt(plaintext.encode("utf-8")).decode("ascii")
def decrypt_token(encryption_key: str, ciphertext: str) -> str | None:
try:
return make_fernet(encryption_key).decrypt(ciphertext.encode("ascii")).decode("utf-8")
except InvalidToken:
return None