Glacier — MCP Setup Guide

Glacier exposes an MCP (Model Context Protocol) server that lets Claude read and write your workspace natively. No copy-paste, no context switching — Claude can list your projects, read cards, create tasks, and draft docs as a genuine collaborator.


Quick start

Choose your client and connect in under two minutes.

Claude.ai (recommended)

Claude.ai supports MCP Connectors with automatic OAuth discovery. No config file or API key needed.

  1. Open claude.ai and go to Settings → Connectors (or Integrations, depending on your plan).
  2. Click Add connector and paste:
    https://getglacier.ai/api/mcp
    
  3. Glacier will ask you to sign in and authorise access.
  4. Click Authorize.

That's it. Claude can now read and write your Glacier workspace from any conversation.

Tip: You can also copy the connector URL from Project Settings → MCP & developer → Quick setup → Claude.ai inside the Glacier app.

Different email on Claude.ai and Glacier? No problem. When you click "Add connector," Glacier's sign-in screen will open — just sign in with the email tied to your Glacier workspace. Your Claude.ai account email and Glacier email don't need to match.

Claude Desktop

  1. Get your API key: Account Settings → MCP API Key → Generate key. Copy the key (shown once, starts with glc_sk_).
  2. Open your config file:
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  3. Add Glacier under mcpServers:
{
  "mcpServers": {
    "glacier": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/client-http"],
      "env": {
        "MCP_SERVER_URL": "https://getglacier.ai/api/mcp",
        "MCP_AUTH_TOKEN": "glc_sk_your-key-here"
      }
    }
  }
}
  1. Quit and reopen Claude Desktop. The Glacier tools will appear in the tool panel.

Claude Code

Claude Code supports two connection modes.

OAuth (recommended — no API key needed)

Add to your project's .mcp.json or global ~/.claude.json:

{
  "mcpServers": {
    "glacier": {
      "type": "http",
      "url": "https://getglacier.ai/api/mcp"
    }
  }
}

On the first connection Claude Code will open a browser window and walk you through a one-time OAuth sign-in. After that, tokens refresh automatically.

API key (static credential)

If you prefer a fixed token — for CI or shared environments — use an API key instead:

{
  "mcpServers": {
    "glacier": {
      "type": "http",
      "url": "https://getglacier.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer glc_sk_your-key-here"
      }
    }
  }
}

Get your key from Account Settings → MCP API Key → Generate key.

Tip: You can copy either config snippet pre-filled with the right URL from Project Settings → MCP & developer → Quick setup inside Glacier.

Cursor / VS Code

In your .cursor/mcp.json or VS Code MCP settings:

{
  "mcpServers": {
    "glacier": {
      "url": "https://getglacier.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer glc_sk_your-key-here"
      }
    }
  }
}

Authentication

Glacier supports two auth methods.

OAuth 2.1 (Claude.ai, Claude Code)

Both Claude.ai and Claude Code support OAuth. Glacier advertises its OAuth configuration via /.well-known/oauth-authorization-server (RFC 8414), so no manual setup is needed — clients discover it automatically.

  • Claude.ai: paste the MCP URL in Settings → Connectors. OAuth runs automatically.
  • Claude Code: add the URL with no headers block. On first connection a browser window opens for sign-in, then tokens refresh automatically.

Tokens expire after 24 hours and are refreshed automatically. You can check your connection status and disconnect from Project Settings → MCP & developer.

During OAuth setup, Glacier's consent screen will ask you to sign in. Use the email associated with your Glacier workspace — this doesn't need to match your AI tool's email.

API key (Claude Desktop, Cursor, VS Code, CI)

  1. In Glacier, open Account Settings → MCP API Key.
  2. Click Generate key. Copy it — the key starts with glc_sk_ and is shown only once.
  3. Paste it into your client's config as shown in the Quick start section above.

API keys are workspace-scoped and identify your Glacier user account regardless of which email your AI tool uses. Rotate your key from Account Settings if it's ever compromised.


Available tools

Once connected, Claude has access to the following tools.

Board

ToolWhat it does
list_columnsLists columns on a project board, with WIP limit and card count
list_cardsLists cards in a project or column; supports filtering by parent card
get_cardGets full card detail — description, assignee, labels, linked docs, GitHub links
get_card_childrenLists sub-items (child cards) of a parent card
create_cardCreates a card in a column with optional description, priority, and assignee
create_cardsCreates multiple cards in one call — useful for batch imports from a brief
update_cardUpdates card fields or moves the card to a different column

Docs

ToolWhat it does
list_docsLists docs for a project or workspace
get_docReads a doc's full content as markdown
create_docCreates a doc from markdown, optionally linked to a project
update_docUpdates the title or content of an existing doc
link_doc_to_cardAssociates an existing doc with a card

Organisation

ToolWhat it does
list_workspacesLists all workspaces you have access to
list_projectsLists all projects in a workspace
list_labelsLists labels defined for a project
create_labelCreates a new label with a name and colour
list_membersLists workspace members and their roles

Metrics

ToolWhat it does
get_flow_metricsReturns throughput and cycle time stats for a project

Comments

ToolWhat it does
list_card_commentsLists comments on a card
add_card_commentAdds a comment to a card

Annotations

Agents can propose text changes queued for human review, or leave inline comments anchored to specific text. Humans see each annotation as an inline highlight and can accept, reject, or reply from the doc editor.

ToolWhat it does
propose_suggestionPropose a text replacement on a doc range, queued for human review
create_commentAdd an inline comment anchored to a specific text range
list_annotationsList annotations on a doc, filterable by status (open, accepted, rejected, resolved, stale)
reply_to_annotationAdd a reply to an existing annotation thread
resolve_annotationClose an annotation without recording a decision — use for comment threads or to dismiss without explicit rejection
reject_annotationExplicitly reject a suggestion with an optional reason — recorded in the audit trail

propose_suggestion parameters

ParameterRequiredDescription
doc_idYesUUID of the target document
anchor_textYesExact text to replace — the server finds it in the document automatically
replacement_mdYesReplacement content in Markdown
rationaleNoExplanation shown to the reviewer alongside the suggestion
occurrence_indexNoWhich occurrence to use (0-based) when anchor_text appears more than once

create_comment parameters

ParameterRequiredDescription
doc_idYesUUID of the target document
anchor_textYesExact text to anchor the comment on
bodyYesComment text
occurrence_indexNoWhich occurrence to use (0-based) when anchor_text appears more than once

reply_to_annotation parameters

ParameterRequiredDescription
annotation_idYesUUID of the annotation to reply to
bodyYesReply text

Anchor text matching Both propose_suggestion and create_comment locate the anchor by searching for anchor_text in the document. Pass the shortest unambiguous excerpt — typically a sentence or clause. If the text appears multiple times, set occurrence_index (0 = first match).


Examples

Ask Claude to summarise your board

"What's on the Glacier board right now? Anything blocking?"

Claude calls list_columns to get the board structure, then list_cards for each column, and returns a concise status summary — what's in progress, what's waiting, and where WIP limits are hit.

Create cards from a brief

"Here's the feature brief: [paste text]. Break it into cards and add them to the Backlog column."

Claude calls list_columns to find the Backlog column ID, then create_cards with a batch payload — title, description, and priority for each item derived from the brief. One call, multiple cards.

[
  { "title": "Design onboarding flow", "priority": "high" },
  { "title": "Write copy for empty states", "priority": "medium" },
  { "title": "Set up analytics events", "priority": "medium" }
]

Generate a status report

"Write a weekly status update for the Glacier project. Include cycle time and any cards moved to Done this week."

Claude calls get_flow_metrics for throughput and cycle time, then list_cards filtered to the Done column to see what shipped. It synthesises both into a draft status report you can paste straight into Notion or send to stakeholders.

Review a doc and propose suggestions

"Read the Q2 strategy doc and suggest improvements to the goals section — keep each suggestion focused on one change."

Claude calls get_doc to read the document, then calls propose_suggestion for each change it wants to recommend — one call per suggestion, each anchored to the exact text it would replace:

{
  "doc_id": "a1b2c3d4-...",
  "anchor_text": "We will aim to grow revenue by exploring new markets",
  "replacement_md": "We will grow revenue by entering two new verticals — SMB and mid-market — with dedicated GTM motions for each.",
  "rationale": "The original is directionally vague. This version names the segments and the approach, making the goal measurable and ownable."
}

Each suggestion appears in the document as an inline diff — strikethrough on the original, replacement shown inline. You can review, accept, or reject each one from the editor. Open suggestions are also listed in the side panel where you can accept or reject in bulk.

To add context without proposing a change, use create_comment:

{
  "doc_id": "a1b2c3d4-...",
  "anchor_text": "Launch by end of Q3",
  "body": "This date assumes the infrastructure work in GLAC-87 ships on time. Worth flagging as a dependency."
}

Multi-tenant scoping

MCP access mirrors exactly what you see in the app. There's no elevated privilege from the API.

  • API keys are workspace-scoped: Claude sees all projects in your workspace, and only the projects in your workspace.
  • OAuth tokens (Claude.ai) are user-scoped — they grant access to all workspaces and projects your account can reach, just as if you were signed in to the app. Use list_workspaces to discover available workspace IDs, then pass workspace_id to board and card tools.
  • Write permissions follow your role: viewer accounts can call read tools but write tools will return a permission error. Only members with board:write permission can create or update cards.

Troubleshooting

Glacier tools don't appear in Claude Code.

  1. Check that your .mcp.json (or ~/.claude.json) has the correct URL: https://getglacier.ai/api/mcp.
  2. If you're using OAuth, make sure you completed the browser sign-in when Claude Code first connected. If you skipped it or the window timed out, remove and re-add the MCP entry, then restart Claude Code.
  3. In Claude Code, run /clear or fully restart the session — MCP connections are established at session start.
  4. If tools still don't appear, open Project Settings → MCP & developer in Glacier. The OAuth connection indicator shows whether your session is authenticated. If it shows "Not connected", reconnect from Claude Code.
  5. Last resort: click Disconnect in MCP settings (if connected), restart Claude Code, and sign in again when prompted.

Glacier tools don't appear in Claude.ai.

Remove the Glacier connector from Claude.ai settings and re-add it. Claude.ai will re-run the OAuth flow and pick up a fresh token.

Connection fails with 401.

Your token may have expired or your API key may have been rotated.

  • OAuth: remove and re-add the connector (Claude.ai) or reconnect from Claude Code.
  • API key: generate a new key in Account Settings and update your config file.

Claude doesn't see my new cards. Cards created via the web app and cards created via MCP share the same data — there's no sync delay. If a card isn't visible, it may be in a different column or project than expected. Ask Claude to list_cards for the project to confirm.

Different email on Claude.ai / Claude Code and Glacier? This is fine. API keys identify your Glacier account regardless of which email your AI tool is signed in with. For OAuth, the consent screen asks you to sign in to Glacier — use the email tied to your Glacier workspace. The emails don't need to match.

Claude can't find a project. OAuth tokens are user-scoped — Claude can see all your workspaces and projects. Make sure you're passing the correct workspace_id to workspace-level tools. Use list_workspaces to discover available IDs.

Claude Desktop shows no Glacier tools. Make sure the config file is valid JSON (no trailing commas), the key is correct, and you've fully quit and restarted Claude Desktop (not just closed the window).