Docs / MCP

Connect an MCP client to Vibe Gallery

Vibe Gallery's MCP server is protected with OAuth 2.1 (PKCE + Dynamic Client Registration). Drop one of the snippets below into your client; the first request opens a browser to sign you in.

Server endpoint

Streamable HTTP transport. Most clients only need this URL.

https://vibe-gallery.space/api/mcp

The server publishes the discovery metadata required by the MCP authorization spec.

  • https://vibe-gallery.space/.well-known/oauth-protected-resourcePoints the client at Vibe Gallery's authorization server.
  • https://vibe-gallery.space/.well-known/oauth-authorization-serverRFC 8414 metadata for Vibe Gallery.

How OAuth sign-in works

On the first connection the client triggers the OAuth flow; subsequent requests carry the access token.

  1. The client calls POST /api/mcp without a token. The server replies 401 with WWW-Authenticate: Bearer resource_metadata="…".
  2. The client fetches the resource-metadata URL and discovers Vibe Gallery as the authorization server.
  3. The client registers itself via Dynamic Client Registration (DCR), opens a browser, and the user signs in to Vibe Gallery.
  4. Access + refresh tokens are cached locally; subsequent requests carry Authorization: Bearer <token>.

Per-client setup

Claude Code (CLI) — recommended

Claude Code natively supports remote HTTP MCP servers and OAuth.

claude mcp add --transport http vibe-gallery https://vibe-gallery.space/api/mcp

Inside Claude Code, run /mcp to authenticate. A browser opens to Vibe Gallery; tokens are stored and refreshed automatically.

Claude Desktop

Claude Desktop does not support remote HTTP servers from claude_desktop_config.json directly. Use one of the options below.

Custom Connectors UI (Pro / Team / Enterprise, recommended)

Settings → Connectors → Add custom connector → paste the endpoint URL and follow the Vibe Gallery sign-in. No file editing required.

https://vibe-gallery.space/api/mcp

mcp-remote shim (fallback)

If Custom Connectors is unavailable on your plan, route through mcp-remote which converts stdio to HTTP and handles OAuth on Claude Desktop's behalf.

macOS config file

~/Library/Application Support/Claude/claude_desktop_config.json

Windows config file

%APPDATA%\Claude\claude_desktop_config.json

Config snippet

{
  "mcpServers": {
    "vibe-gallery": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://vibe-gallery.space/api/mcp"
      ]
    }
  }
}

Restart Claude Desktop after saving. mcp-remote opens a browser for Vibe Gallery on the first request.

Cursor

Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project). Cursor uses streamable-http as the transport type and discovers OAuth automatically.

Config file

~/.cursor/mcp.json

Config snippet

{
  "mcpServers": {
    "vibe-gallery": {
      "type": "streamable-http",
      "url": "https://vibe-gallery.space/api/mcp"
    }
  }
}

VS Code (Copilot Chat)

Add to .vscode/mcp.json (workspace) or your user MCP config. VS Code supports OAuth DCR natively; on first use it opens the browser to Vibe Gallery.

Config file

.vscode/mcp.json

Config snippet

{
  "servers": {
    "vibe-gallery": {
      "type": "http",
      "url": "https://vibe-gallery.space/api/mcp"
    }
  }
}

Try it with MCP Inspector

A handy local UI to inspect tools and step through the OAuth flow.

npx @modelcontextprotocol/inspector

Set Transport Type to Streamable HTTP, paste the endpoint URL into Server URL, click Connect.

Troubleshooting

  • Stale token
    • Claude Code: claude mcp remove vibe-gallery then re-add, or /mcp → Clear authentication.
    • mcp-remote (Claude Desktop fallback): delete ~/.mcp-auth.
  • If DCR is rejected, confirm the Vibe Gallery OAuth Application has Dynamic client registration enabled.
  • Inspect discovery: curl /.well-known/oauth-protected-resource should return resource metadata pointing at Vibe Gallery.
  • Full protocol details: modelcontextprotocol.io