Skip to main content
The Hue MCP server is a hosted remote server at 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

  1. Choose your client below and add its server URL: https://mcp.hue.run/mcp, with ?toolsets=all when it searches its own tools. For sign-in with Hue, leave out API keys and custom headers.
  2. 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.
  3. Refresh the client’s MCP status or start a new session, then verify the connection by reading a trace through the agent.
Use a project key for clients without sign-in, browserless runs or read-only access.

Connect your client

Start with Any MCP client for the connection settings, or choose your client for exact commands.
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.
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.
  • Sign-in has Read and write within your role; add_api_key is unavailable. Add ?read_only=true temporarily, 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 need HUE_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:
Name it 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

  1. 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 from hue login.
  2. For clients that read HUE_MCP_KEY, export the key alone, without Bearer , in the startup shell. Use a secure credential prompt when available.
  3. Follow your client’s tab, restart from that shell and approve hue if asked. Desktop launchers do not inherit terminal variables.
Never put the key in application code or shared configuration. Keep it out of prompts except the private trial World prompt copied into a trusted coding agent. See Project keys for access and rotation.

Let your agent configure the key

For a client supporting environment references, paste this into your coding agent from a shell where HUE_MCP_KEY is exported. Otherwise use its secure credential prompt.
Prompt
Most clients load servers at startup; Claude Code and Cursor also require approval. Restart from the same shell, approve hue, and call get_project_context again. Point key requests to HUE_MCP_KEY.

Verify the connection

Ask the connected agent:
Then call 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.
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_notice and _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: true or get_span_content, and file download links require include_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_captured means no content was recorded.

Write approval

  • Writes require Read and write and no ?read_only=true. Every tool carries readOnlyHint and destructiveHint, 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 an idempotency_key. A timeout or unavailable may 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=true or X-Hue-MCP-Read-Only: true hides or rejects writes. Only false, 0, no, off or empty disable it; use a Read key for enforced read-only access.
  • Hue redacts credential-shaped strings. add_api_key returns 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 429 with Retry-After: 60, temporarily refusing even a correct key; a busy server returns 503 with Retry-After. See limits for result sizes, pages and query time.