OAUTH

Asana MCP server, with a policy gate.

Connect Asana to Claude, Claude Code, and Cursor through one OAuth-protected MCP URL with per-agent, revocable write access.

Your agents connect tohttps://app.gentkey.com/mcpclaude.ai (web & mobile) · Claude Code · Cursor · any MCP client
ACCESS MODEL

What’s free, what needs a grant.

Reads: Asana's tools ship write-gated until a curated read set lands; vendor labels aren't taken on faith.

Writes: Grant mcp-asana.write and the connector opens; one switch per connection, revocable any time.

Gentkey proxies the official Asana MCP server (https://mcp.asana.com/mcp) — you get the vendor’s own tools, with custody, gating, and audit added in front.

GrantWhat it governs
mcp-asana.writeEvery tool the official Asana server exposes — tasks, projects, goals, and reads too, until a curated read set lands
SETUP

Connect once, use everywhere.

Sign in at gentkey.com, add Asana (oauth), then point each client at your endpoint. Every client completes a standard OAuth flow and lands in your Gentkey — your connections, nobody else’s.

claude.ai (web & mobile)

  1. Settings → Connectors
  2. Add custom connector
  3. Paste https://app.gentkey.com/mcp and finish the OAuth prompt

Claude Code

claude mcp add --transport http \
  gentkey https://app.gentkey.com/mcp

Cursor

// .cursor/mcp.json
{
  "mcpServers": {
    "gentkey": { "url": "https://app.gentkey.com/mcp" }
  }
}
IN PRACTICE

Things agents do with Asana here.

  • What's due this week across my projects?
  • Create a task in Marketing: 'Draft launch email', due Friday.
  • Which tasks in the Redesign project are overdue?
  • Move everything assigned to me in Sprint 12 to Sprint 13.
SECURITY

Custody, gating, and audit — built in.

aes-256-gcm

The model never sees a credential

Your Asana token is encrypted at rest and injected server-side at call time. Your stored credential never enters a context window.

grants

Writes need a grant

Anything that changes state needs a capability you granted explicitly — revoke it and the next call is denied.

audit_log

A trail you can act on

Every decision is attributed to the agent that made it — allowed, denied, or denied by constraint.

FAQ

Fair questions.

What shows up in the audit log for Asana?

Every call an agent makes through the connector: the agent's identity, the tool, sanitized arguments, and whether the policy gate allowed or denied it. When a task moves and nobody remembers moving it, the log says which agent did.

What happens when an agent calls a Asana write tool it hasn't been granted?

The call is denied at the gateway — nothing reaches Asana — and the denial is recorded in the audit log along with the grant that would have authorized it, so you can decide deliberately instead of finding out later.

Where are my credentials stored?

Encrypted at rest (AES-256-GCM) on Gentkey's server and injected server-side at call time. No credential you store with Gentkey ever enters a model's context window or an agent's config file.

Can I use this from claude.ai's free plan?

Yes — and it's the strongest case for a gateway: free claude.ai accounts currently get a single custom connector, so pointing that one slot at Gentkey puts every connector you've linked behind it.

How do I revoke an agent's access?

Revoke the grant (the next write is denied) or revoke the agent's tokens entirely in one click. Other agents and their grants are untouched — no shared key to rotate.

Is Gentkey affiliated with Asana?

No. Gentkey is an independent MCP gateway. Trademarks belong to their owners; where an official Asana MCP server exists, Gentkey proxies it and adds custody, gating, and audit on top.

Cut Asana a smaller key.

Sign in, connect Asana, and grant your first scoped capability in under a minute.