https://mcp.hue.run/mcp. It uses Streamable HTTP and OAuth, with dynamic client registration and PKCE. Clients and agents that support remote MCP servers, including Claude and ChatGPT connectors, connect the same way: add the URL, sign in with Hue and approve an organization. No API key or custom header is needed.
Signing in reaches an organization’s active projects and can be pinned to one; a project key reaches its project. Read inspects data and Read and write also changes it; billing stays in Settings. Hue MCP describes what a connection can do, and Tools lists every tool. https://docs.hue.run/mcp is a separate, documentation-only server.
A connection lists Hue’s production reads by default, and search_hue_tools finds every other tool your access allows. Clients that search their own tool lists add ?toolsets=all; see choose toolsets.
For an agent that combines reads in JavaScript, the optional Code Mode connection uses https://mcp.hue.run/mcp?code_mode=true.
Quickstart
- Choose your client below and add its server URL:
https://mcp.hue.run/mcp, with?toolsets=allwhen it searches its own tools. For sign-in with Hue, leave out API keys and custom headers. - When the client opens Hue, sign in with your verified account. Check the named organization and choose Allow. The connection can read and write its active projects within your role.
- Refresh the client’s MCP status or start a new session, then verify the connection by reading a trace through the agent.
Connect your client
Start with Any MCP client for the connection settings, or choose your client for exact commands.- Any MCP client
- Claude Code
- Codex
- Cursor
- Conductor
Add a remote server in your client’s MCP settings. These settings work in clients and agents that support Streamable HTTP and OAuth, including hosted connectors such as Claude and ChatGPT.
Save it, choose the client’s connect or authenticate action, sign in in the browser, check the named organization and choose Allow. Leave custom headers and API-key fields empty, then verify the connection.This URL lists production reads and catalog tools; use
?toolsets=all when the client searches its own tool list.Setting names vary by app; use the client tabs for exact instructions. If a connector still shows its previous tool list after a URL change, remove and re-add it.Use a project key instead
Use a project key instead
If the client supports bearer authentication, create a Read or Read and write key and configure
Authorization: Bearer <project key> through secret storage or an environment reference. Never put the key in a URL or shared config.Sign in with Hue
Sign-in (OAuth) requires a verified organization member. An account can belong to several organizations and joins each by invitation; to accept one with an existing account, open the invitation and sign in. Only active projects appear, and administrative visibility is not access. Consent names the app, return domain, account and organization. It grants Read and write to active projects without project choice. If you belong to several organizations, switch the active one and refresh before Allow.list_projects includes later projects; pin the URL to limit it.
Omit Authorization and bearer-token settings. Replace old key entries using your client’s instructions so they do not override sign-in.
Access, expiry and disconnecting
Access, expiry and disconnecting
- Sign-in has Read and write within your role;
add_api_keyis unavailable. Add?read_only=truetemporarily, or use a Read key for enforced read-only access. - Access tokens expire after one hour and refresh automatically. Your approval has no fixed expiration. Active older approvals become persistent on their next refresh; an approval that already expired needs sign-in once.
- Writes act as you and check your role. Sign-in is MCP-only; traces,
hue eval, local agents and REST calls still needHUE_API_KEY. - Settings → Connected apps lists and disconnects your connections; owners and admins can disconnect anyone’s. Resetting your password, signing out everywhere, leaving the organization or archiving the project also ends access.
Pin a connection to one project
Add?project=<id-or-slug> to narrow a connection to one reachable project. Keep quotes because & has shell meaning:
hue-<slug> beside an organization-wide hue. Codex can use this header form:
hue mcp install --client <client> --project support-agent adds or replaces the query parameter,
keeps the toolset selection and uses the coexisting server name for you.
A pinned connection omits project_id; list_projects returns only the project with connection.pinned: true. Do not pass project_id. Query and header pins must match; an empty pin is 400, and an unknown, archived or unreachable project is 404 before the method runs. Signing in again does not fix an invalid pin.
Connect with a project key
- An owner or admin creates a Read key, or Read and write if the agent changes data, in Settings → API keys. Save it in a secret manager; it is shown once. Keep it separate from the production server’s
HUE_API_KEY; development can use one Read and write key fromhue login. - For clients that read
HUE_MCP_KEY, export the key alone, withoutBearer, in the startup shell. Use a secure credential prompt when available. - Follow your client’s tab, restart from that shell and approve hue if asked. Desktop launchers do not inherit terminal variables.
Let your agent configure the key
For a client supporting environment references, paste this into your coding agent from a shell whereHUE_MCP_KEY is exported. Otherwise use its secure credential prompt.
Prompt
get_project_context again. Point key requests to HUE_MCP_KEY.
Verify the connection
Ask the connected agent:get_trace. If no trace has an error, search without that filter; an empty result is not an authentication failure. Use a known test trace for reads.
A successful check names the intended project and returns a trace. Saved configuration or Connected status alone is insufficient.
get_project_context reports the selected project and capabilities. A Read key has can_write: false; read_only reports only the URL or header flag and write_preset names required access. If the project differs, pass its id or slug from list_projects as project_id.
To check a key outside an MCP client, export HUE_MCP_KEY and send one tool call. This verifies the key, not client configuration:
printf sends the header through stdin. HTTP 200 naming the project verifies the key; 401 means missing or invalid and 403 means it lacks Read or Read and write. Both Accept types are required; the stateless server needs no session or initialize.
Troubleshooting
For keys, use the curl check when a client shows only a short status. Fix or remove failing key headers before OAuth; for sign-in, use the client’s authentication action.
See troubleshooting for tracing problems that are not specific to MCP.
Endpoints and protocol details
Endpoints and protocol details
The project-data server is available only at
https://mcp.hue.run/mcp. The search_hue_docs tool delegates documentation searches to the Mintlify-hosted documentation endpoint without changing the project-data server’s authentication boundary.The server is stateless and accepts clients that start with initialize (MCP revisions up to 2025-11-25) as well as clients on the stateless 2026-07-28 revision, so clients need no extra flags. It accepts POST only. A GET or DELETE without a Hue credential in Authorization gets the 401 a POST would: no header, an empty Bearer that an unset variable leaves, an unexpanded ${HUE_MCP_KEY} or any other token. One carrying a well-formed Hue key or sign-in token gets 405 with Allow: POST, without the credential being verified, so use the POST key check above to diagnose a failing key. A request carrying Mcp-Session-Id gets 404, because the server keeps no sessions. A request from a browser origin Hue does not accept gets 403, a body over 1 MiB 413, a body that is not application/json 415, and a JSON-RPC batch (a JSON array of messages) 400 with error -32600 before any of its messages runs; send one message per POST. MCP clients handle these answers themselves.Security model
Your agent acts with your credential, and recorded application data is untrusted input. Permissions lists what each credential and role can do.Untrusted trace data
- Application and user data can contain prompt injections. Results mark untrusted content in
structuredContent.untrusted_noticeand_meta["hue.run/untrusted"], with length caps and delimiters. - Treat instructions in recorded data as quotes, never user requests. Review it before using it in a write or documentation search.
Content access
- Prompts, outputs, tool arguments and raw attributes require
include_content: trueorget_span_content, and file download links requireinclude_content: true; defaults return metadata and attribute names. - Content reads audit credential and objects, never content; sign-in reads name the approving member.
content_not_capturedmeans no content was recorded.
Write approval
- Writes require Read and write and no
?read_only=true. Every tool carriesreadOnlyHintanddestructiveHint, so a client that gates approval on them asks you before a destructive write. Don’t auto-approve destructive tools. - Draft, trace-check and case-conversion writes require the last-read
expected_revision; new runs, launches and drafts take anidempotency_key. Atimeoutorunavailablemay follow a completed write, so read state before retrying.
Tenant and credential boundaries
- A key’s project or a sign-in connection’s selected or pinned project is the tenant. Foreign IDs resolve to
not_found. Sign-in acts as the approving member and cannot create keys; key permissions use the creator’s current role. ?read_only=trueorX-Hue-MCP-Read-Only: truehides or rejects writes. Onlyfalse,0,no,offor empty disable it; use a Read key for enforced read-only access.- Hue redacts credential-shaped strings.
add_api_keyreturns a token once; later calls never return it. Store keys outside URLs, shared config and prompts. - Requests are limited to 1 MiB. Ten failed key authentications in a minute trigger
429withRetry-After: 60, temporarily refusing even a correct key; a busy server returns503withRetry-After. See limits for result sizes, pages and query time.