Using Asana's Command MCP Server
Overview
Asana's Command MCP server lets compatible AI clients work with Command Teamspaces, tickets, and releases. You can search, create, and update tickets, add comments, manage blocking dependencies, and read release status.
Learn more about Command by Asana.
Requirements
- Each user needs a Command license and access to the Teamspace they want to use.
- An MCP client that supports OAuth authentication and Streamable HTTP.
- An Asana MCP app allowed in your workspace through app management.
Connecting to Asana's Command MCP Server
Server URL: https://mcp.asana.com/v2/command/mcp
Each user signs in with their own Asana account and authorizes access. To see available tools and their parameters, use your client's tools/list request.
Create an Asana MCP app
- Open the developer console, select Create new app, and choose MCP app as the app type.
- In OAuth, add the redirect URL required by your client. It must match exactly.
- In Manage distribution, allow the workspace where the app will be used.
Use the app's Client ID and Client secret when configuring your client. See Integrating with Asana's MCP Server for app registration details. Use the Command server URL above when connecting.
Using with OpenAI
ChatGPT plugin
Create one Asana MCP app for a shared custom plugin. Users of that plugin do not need to create their own Asana apps.
- Create a custom MCP plugin in ChatGPT with the Command server URL.
- Select OAuth authentication and enter the Asana app's Client ID and Client secret.
- Register the plugin's OAuth callback URL in the Asana app and make the plugin available to your workspace.
- Each user installs the plugin and connects their own Asana account.
Codex configuration
For a direct Codex connection, create your own Asana MCP app and register http://localhost:3334/oauth/callback as its redirect URL. This setup requires Node.js and npm and uses the community-maintained mcp-remote bridge, which is not officially supported by Asana.
Save your credentials in ~/.asana/command_oauth_client.json and restrict access with chmod 600 ~/.asana/command_oauth_client.json. Do not commit this file.
{
"client_id": "YOUR_CLIENT_ID",
"client_secret": "YOUR_CLIENT_SECRET"
}Add this to ~/.codex/config.toml, replacing the credentials path with its absolute path (~ is not expanded):
[mcp_servers.command]
command = "npx"
args = [
"-y",
"mcp-remote@latest",
"https://mcp.asana.com/v2/command/mcp",
"3334",
"--static-oauth-client-info",
"@/absolute/path/to/command_oauth_client.json",
"--resource",
"https://mcp.asana.com/v2/command/mcp"
]Restart Codex and complete the Asana sign-in when the server starts. See the Codex setup guide for more details.
Using with Claude
Custom connector
Create one Asana MCP app for a shared custom connector. Users of that connector do not need to create their own Asana apps.
- Add a custom connector in your Claude organization with the Command server URL.
- Select OAuth authentication, choose Use your own OAuth client, and enter the Asana app's Client ID and Client secret.
- Register Claude's OAuth callback URL in the Asana app.
- Each user connects the connector to their own Asana account.
Claude Code configuration
For a direct Claude Code connection, create your own Asana MCP app and register http://localhost:8080/callback as its redirect URL.
Save this server configuration in a local command-mcp.json file, replacing YOUR_CLIENT_ID:
{
"type": "http",
"url": "https://mcp.asana.com/v2/command/mcp",
"oauth": {
"clientId": "YOUR_CLIENT_ID",
"callbackPort": 8080
}
}From that file's directory, import it into your user configuration (~/.claude.json) and enter the Client secret at the masked prompt:
claude mcp add-json --scope user command "$(cat command-mcp.json)" --client-secretClaude Code stores the secret separately from the config. Run /mcp in Claude Code to complete the Asana sign-in. See Claude Code's OAuth setup instructions for more details.
Managing access
A shared app does not share user access: each connection uses the authorizing user's Asana permissions. Workspace admins can allow or block the registered app through Asana app management.
Updated about 8 hours ago