Featherlane AI
Guides

Hosted MCP Access

Connect employee AI clients to assigned remote MCP tools through OAuth and live Featherlane AI policy enforcement.

Hosted MCP Access gives a workspace one managed MCP endpoint. Employees connect an OAuth-capable AI client to that endpoint instead of connecting directly to every remote MCP server. Featherlane AI uses the signed-in member to personalize tool discovery, then evaluates every tool call against current assignments and runtime policy before contacting the upstream server.

Hosted MCP access gateway

MCP access governs only calls routed through this hosted MCP endpoint. It does not install universal interception for native or third-party tools in Claude Code, Codex, or OpenCode. Use the coding-agent tool gate for that boundary.

Before you begin

You need:

  • A Featherlane AI workspace with MCP Access enabled.
  • Owner or Admin access to configure servers and assignments.
  • A publicly reachable HTTPS Streamable HTTP MCP server. Featherlane AI does not launch stdio commands or connect to legacy HTTP+SSE servers.
  • An OAuth-capable Streamable HTTP client. Use one of the verified clients below, or another client that supports OAuth discovery, dynamic client registration, and PKCE.

Featherlane AI Cloud uses this managed endpoint:

https://api.featherlane.ai/mcp

Self-hosted installations use $TL_PUBLIC_URL/mcp and must configure TL_PUBLIC_URL, TL_DASHBOARD_URL, TL_JWT_SECRET, and TL_GATEWAY_CREDENTIAL_KEY on the Rust server.

Connect a remote MCP server

  1. Open your workspace in the Featherlane AI dashboard and select the intended environment.
  2. Open MCP Access → Servers.
  3. Select Connect server.
  4. Enter a display name, stable slug, and the server's full HTTPS MCP endpoint.
  5. Add its bearer token when the upstream requires one. The credential is encrypted and is never displayed again.
  6. Select Connect and sync.

A successful sync pins the upstream tool names, descriptions, annotations, schemas, and schema hashes. Review the server row and confirm that Last sync says Succeeded before assigning tools.

Assign tools to members

Open MCP Access → Tool access, then:

  1. Select the member who will complete OAuth.
  2. Review each discovered tool and classify its side effect, such as Read or API mutation.
  3. Grant only the tools that member should discover and call.

Assignments control discovery, but they are not the only authorization boundary. Runtime policy still evaluates every assigned tools/call.

Connect an AI client

Choose your client. Each option connects to the same managed endpoint and opens the Featherlane AI authorization page in your browser.

Add the managed endpoint once:

codex mcp add featherlane-ai \
  --url https://api.featherlane.ai/mcp \
  --oauth-resource https://api.featherlane.ai/mcp

Complete OAuth:

codex mcp login featherlane-ai --scopes mcp:tools

Confirm that the server is connected:

codex mcp list

Sign in, select the prepared workspace, and approve access when the authorization page opens. Then start a fresh client session so it discovers the current assigned catalog. An explicit first prompt is useful when demonstrating a particular tool:

Use the `featherlane-ai` MCP server. Call `company__read_engineering_docs`
with {"topic":"intern onboarding"}. Do not inspect local files or run shell commands.

The public tool name includes the server's stable slug so tools from multiple upstream servers do not collide.

How access changes affect active clients

MCP discovery and MCP execution are separate:

Client starts
  → tools/list
  → Featherlane AI returns the member's active assigned tools
  → the client registers those tool schemas for the model session

Model selects a known tool
  → tools/call
  → Featherlane AI rechecks membership and assignment
  → Featherlane AI evaluates current runtime policy
  → the upstream server is called only after permit

The current hosted gateway does not send notifications/tools/list_changed when an administrator changes assignments. Clients such as Codex can therefore retain their session's earlier discovery result.

Administrative changeExisting client sessionServer behavior on the next call
Grant a previously hidden toolThe tool remains hidden until the client refreshes.A direct call is allowed only after live checks.
Revoke a visible toolThe stale tool may remain visible in the client.Featherlane AI denies the call immediately.
Change runtime policyThe visible catalog does not change.The current policy is evaluated immediately.
Remove workspace membershipThe stale catalog may remain visible in the client.Every MCP request is rejected.

After granting a new tool, exit and restart the AI client to refresh discovery. The OAuth login remains stored; you do not need to authorize again. Clearing the terminal display or starting a new prompt in the same session does not refresh the catalog.

A stale client catalog is not an authorization grant. Featherlane AI resolves the current tool assignment when tools/call arrives and rechecks authority immediately before upstream execution. A revoked tool cannot execute even when an older client still displays it.

Runtime enforcement

For every assigned call, Featherlane AI:

  1. Rechecks the OAuth member's workspace access and the workspace feature flag.
  2. Resolves the current assignment and pinned tool schema.
  3. Validates the proposed arguments.
  4. Verifies the live upstream schema still matches the pinned catalog.
  5. Submits a server-authored tool event to the current environment's policy runtime.
  6. Calls the upstream only after a permit, or after a required approval is granted and rechecked.
  7. Re-reads assignment and connection authority immediately before execution.

deny, defer, and unsupported transformations return an MCP tool error without calling the upstream server. Approved calls are also re-evaluated before execution.

Troubleshooting

  • MCP Access is missing — ask a workspace operator to enable the hosted MCP feature for the workspace.
  • Server synchronization fails — verify that the complete endpoint is public HTTPS, implements Streamable HTTP, and accepts initialize and tools/list.
  • OAuth succeeds but a tool is missing — confirm the tool is active, assigned to the exact OAuth member, and configured in the environment shown on the Connect tab; then restart the client.
  • A revoked tool is still displayed — this can be stale client discovery. Calling it will still fail the live assignment check.
  • A policy does not block a call — verify the tool's side-effect classification and that the policy is enabled in the environment named on the Connect tab.
  • Another MCP server fails during Codex startup — failures from unrelated integrations do not invalidate a successful Featherlane AI OAuth login. Disable or repair those integrations separately.

On this page