CI / lint (pull_request) Successful in 51s
CI / test (pull_request) Successful in 58s
docker / lint (pull_request) Successful in 49s
CI / publish (pull_request) Has been skipped
docker / test (pull_request) Successful in 59s
docker / docker (pull_request) Successful in 1m10s
familiar is issuer-agnostic (resource server only), so Gitea can back oauth mode with config alone: RS256 JWTs, JWKS at /login/oauth/keys, and OIDC discovery. Add a deployment.md section covering the env config, the aud=client-ID audience pitfall, and the no-DCR caveat; add a Gitea block to .env.example; and note in claude-web.md that Gitea can't back the claude.ai web connector (which requires DCR).
Connect a client
Exact steps to point each MCP client at a familiar server deployed over HTTPS
(see deployment first). Most clients use a bearer token
(FAMILIAR_HTTP_TOKEN); only the claude.ai web connector needs OAuth.
| Client | Auth | Guide |
|---|---|---|
| Claude Code | Bearer | claude-code.md |
| VS Code (Copilot) | Bearer | vscode.md |
| Mistral Le Chat | Bearer | mistral.md |
| Claude Desktop | Bearer (via mcp-remote) |
claude-desktop.md |
| Claude Cowork | Bearer (via mcp-remote) |
claude-cowork.md |
| Claude web (claude.ai) | OAuth 2.1 (external IdP) | claude-web.md |
Bearer works everywhere except the claude.ai web connector, which requires OAuth 2.1 with Dynamic Client Registration. If you're a Claude user who doesn't want to run an IdP, use the Desktop app with a bearer token instead.