Appearance
MCP Server Setup
Most MCP clients can be connected in about a minute. Use Cloud for the fastest path, or point a self-hosted client at your own MANAGANI instance.
Prerequisites
- A running MANAGANI instance
- For stdio only: a personal access token (generate in Settings > Access Tokens)
Claude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
json
{
"mcpServers": {
"managani": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.managani.com/mcp"],
"env": {
"ACCESS-TOKEN": "your-access-token"
}
}
}
}HTTP Transport
For remote MCP access via Streamable HTTP, MANAGANI now supports standard OAuth 2.1 discovery for MCP clients. OAuth-capable clients should connect to the MCP endpoint directly and follow the WWW-Authenticate challenge + Protected Resource Metadata flow automatically.
When a client needs approval, MANAGANI shows a simple OAuth consent screen in the same MANAGANI theme as the rest of authentication. The screen shows the requesting app, the active MANAGANI account, the exact requested access, and a collapsed technical details section with the client ID, redirect URI, and MCP resource.
The Cloud MCP endpoint is available at:
https://mcp.managani.com/mcpThe authorization server issuer is:
https://app.managani.com/oauthNo manual token setup is required for OAuth-capable HTTP clients.
ChatGPT / OpenAI connector setup
If ChatGPT or another OpenAI connector discovers OAuth automatically, you usually only need to enter the MCP server URL:
https://mcp.managani.com/mcp
The extra OAuth values are only needed when the client asks for them explicitly.
What the registration methods mean
- Pre-registration — create the OAuth client in MANAGANI first, then paste its client ID and optional secret into the external tool
- Dynamic Client Registration — the client registers itself against MANAGANI using the registration endpoint
- Client ID Metadata Documents — only for clients that identify themselves with a client metadata document URL as the
client_id; MANAGANI accepts public PKCE clients andprivate_key_jwtclients that publishjwksorjwks_uri
Dynamic registration accepts HTTPS redirect URIs, localhost HTTP redirect URIs, and reverse-domain private-use schemes for native clients, such as com.example.app:/oauth/callback.
These are capabilities, not clickable actions in MANAGANI.
Recommended ChatGPT flow
For manual ChatGPT setup, start with User-Defined OAuth Client:
- Copy the Callback URL shown by ChatGPT
- In MANAGANI, open Settings → Access Tokens → OAuth
- Create a Pre-Registered OAuth Client
- Paste ChatGPT's callback URL into Redirect URIs
- Choose:
nonefor a public PKCE clientclient_secret_postonly if you want ChatGPT to use a client secret
- Copy the created Client ID back into ChatGPT
- Copy the Client Secret too only if you created a confidential client
When ChatGPT redirects you to MANAGANI, review the consent screen and click Allow access only if the app name, account, and requested access look correct.
ChatGPT field mapping
Use these values if ChatGPT asks for manual OAuth fields:
| ChatGPT field | Value |
|---|---|
| MCP Server URL | https://mcp.managani.com/mcp |
| Auth URL | https://app.managani.com/oauth/authorize |
| Token URL | https://app.managani.com/oauth/token |
| Registration URL | https://app.managani.com/oauth/register |
| Authorization server base | https://app.managani.com/oauth |
| Resource | https://mcp.managani.com/mcp or https://app.managani.com |
| OIDC | Leave disabled unless the client explicitly requires it |
Notes for ChatGPT specifically
- The Callback URL comes from ChatGPT, not from MANAGANI
- The OAuth Client ID comes from the MANAGANI client you created
- The OAuth Client Secret is only used when you create a confidential client
- If ChatGPT offers Dynamic Client Registration and asks for a Registration URL, use the MANAGANI
/oauth/registerendpoint above
Chat product updates
The managani-changelog team plugin provides the roadmap and unpublished changelog workflows. The chat asks once after a completed customer-visible product change and writes only after the user chooses. Each developer installs the plugin in their own Codex account and provides a dedicated MANAGANI_ACCESS_TOKEN; never commit the token.
fish
codex plugin marketplace add /path/to/managani
codex plugin add managani-changelog@managani-teamRestart Codex or start a new task after installation. Use /mcp to confirm that site lookup, feedback/roadmap, and changelog draft tools are enabled. The token must be exported in the environment that launches Codex.
For Claude Code, register a public OAuth client with http://localhost:3118/callback as its redirect URI. Use the returned client_id for the user-scoped connection; pin the callback port so the registered URI stays exact:
fish
curl -X POST https://app.managani.com/oauth/register -H 'Content-Type: application/json' -d '{"client_name":"Claude Code local","redirect_uris":["http://localhost:3118/callback"],"grant_types":["authorization_code","refresh_token"],"response_types":["code"],"token_endpoint_auth_method":"none"}'
claude mcp add --transport http --scope user --client-id YOUR_CLIENT_ID --callback-port 3118 managani https://mcp.managani.com/mcp
claude mcp login managaniSingle-product repositories use the site in .codex/managani-changelog.json. Shared repositories require an explicit product choice from the user's intent; never infer it from file paths.
Environment Variables
| Variable | Description | Default |
|---|---|---|
ACCESS-TOKEN | Personal access token for stdio transport | — |
API_BASE_URL | Base URL of the MANAGANI instance | http://localhost:3000 |
MCP_BASE_URL | Public base URL of the MCP server | http://localhost:3002 |
SITE-ID | Override default site for stdio | Auto-detected |
PORT | HTTP transport port | 3002 |
Shell syntax note
ACCESS-TOKEN and SITE-ID contain hyphens because they are read directly by the MCP server. In shell commands, pass them with env, for example:
bash
env 'ACCESS-TOKEN'=your-access-token 'SITE-ID'=your-site-id API_BASE_URL=https://your-instance.com node apps/mcp/server.jsHTTP Transport Headers
When using the HTTP or SSE transport, pass your credentials as headers instead of environment variables:
Authorization: Bearer <oauth-access-token>— recommended for MCP OAuthAuthorization: Bearer <access-token>— personal access token compatibility modeAuthorization: Token <access-token>— personal access token compatibility modeaccess-token: <access-token>— alternative (mirrors Razuna MCP)X-Site-Id: <site-id>— optional, overrides the default site
Default Site
On startup, the MCP server calls GET /sites and picks the site with is_default: true. Site-scoped tools such as save_url, create_feedback, and list_changelog fall back to this site when site_id is omitted.
Set SITE-ID (passed via env for stdio) or the X-Site-Id header (HTTP/SSE) to override this behavior.
Cursor (IDE)
After the MCP server appears under Cursor Settings → MCP, configure global User Rules and optional site rules so Agent chats search and store site context consistently. See Cursor (IDE).