{
  "markdown": "# Asana — Gemini CLI Extension\n\nA Gemini CLI Extension that connects Asana to your Gmail, GChat, and other Workspace sources.\nIncludes a **PM Skill** that acts as an AI project manager — reading your communications and\nkeeping Asana up to date automatically.\n\n---\n\n## Extension Structure\n\n```\nasana-mcp-server/\n├── gemini-extension.json          ← Extension manifest\n├── GEMINI.md                      ← Always-on model context\n├── src/index.ts                   ← Asana MCP server\n│\n├── skills/pm/\n│   ├── SKILL.md                   ← PM Agent Skill\n│   └── references/\n│       ├── signal-taxonomy.md     ← CE signal classification guide\n│       └── task-template.md       ← Asana task naming conventions\n│\n└── commands/\n    ├── pm-sync.toml               ← /pm:sync slash command\n    └── pm-brief.toml              ← /pm:brief slash command\n```\n\n---\n\n## Asana Tools\n\n| Tool | Description |\n|---|---|\n| `get_workspaces` | List all your Asana workspaces |\n| `get_projects` | List all projects in a given workspace |\n| `get_tasks` | List tasks in a specific project |\n| `get_task_details` | Retrieve full details of a specific task |\n| `create_task` | Create a new task in your workspace/project |\n| `get_goals` | List goals within a workspace or team |\n| `get_goal_details` | Retrieve full details of a specific goal |\n\n---\n\n## PM Skill\n\nThe PM Skill orchestrates Gmail, GChat, and Asana tools to act as your project manager.\n\n### Slash Commands\n\n| Command | Description |\n|---|---|\n| `/pm:sync [days]` | Scan last N days of Gmail & GChat, create Asana tasks for action items |\n| `/pm:brief` | Read-only morning digest — Asana tasks + inbox highlights |\n\n### How It Works\n\n1. Reads Gmail and GChat via the Google Workspace MCP (must be installed separately)\n2. Classifies signals using a CE-specific taxonomy (pre-sales: POCs, blockers, competitive; post-sales: adoption, renewal risk, expansion)\n3. Deduplicates against existing Asana tasks\n4. Creates tasks with consistent naming: `[TAG] Description — Customer`\n5. Outputs a structured summary of everything it did\n\n---\n\n## Setup\n\n### Prerequisites\n- Node.js 18+\n- An Asana Personal Access Token (Asana → My Settings → Apps → Personal Access Tokens)\n- Gemini CLI installed\n- Google Workspace MCP extension installed and authenticated (for the PM Skill)\n\n### Install as Gemini CLI Extension\n\n```bash\n# Build the server\nnpm install\nnpm run build\n\n# Link locally for development\ngemini extensions link .\n\n# OR install from GitHub\ngemini extensions install https://github.com/<your-username>/asana-mcp-server\n```\n\nOn first use, Gemini CLI will prompt for your `ASANA_ACCESS_TOKEN`.\n\n### Verify\n```bash\n/skills list     # should show: pm\n/commands list   # should show: pm:sync, pm:brief\n```\n\n---\n\n## Testing with MCP Inspector\n\n```bash\nASANA_ACCESS_TOKEN=<your-token> npx @modelcontextprotocol/inspector node dist/index.js\n```\n\n## Features\n\n- **get_workspaces**: List all your Asana workspaces.\n- **get_projects**: List all projects in a given workspace.\n- **get_tasks**: List tasks in a specific project.\n- **get_task_details**: Retrieve comprehensive details of a specific task.\n- **create_task**: Create a new task in your workspace/project.\n- **get_goals**: List goals within a specific workspace or team.\n- **get_goal_details**: Retrieve comprehensive details of a specific goal.\n\n## Setup\n\n1. **Clone and Install:**\n   ```bash\n   git clone <repository-url>\n   cd asana-mcp-server\n   npm install\n   npm run build\n   ```\n\n2. **Get an Asana Personal Access Token:**\n   - Go to Asana -> My Settings -> Apps -> Manage Developer Apps -> Personal Access Tokens\n   - Create a new token and save it.\n\n## Configuration (Claude Desktop)\n\nTo use this with Claude Desktop, you must configure your `claude_desktop_config.json` file.\n\n**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`  \n**Windows:** `%APPDATA%\\Claude\\claude_desktop_config.json`\n\nAdd the following to the `mcpServers` object, replacing `<ABSOLUTE_PATH_TO_ASANA_MCP_SERVER>` with the actual path to this repository, and `<YOUR_ASANA_PAT>` with your token:\n\n```json\n{\n  \"mcpServers\": {\n    \"asana\": {\n      \"command\": \"node\",\n      \"args\": [\"<ABSOLUTE_PATH_TO_ASANA_MCP_SERVER>/dist/index.js\"],\n      \"env\": {\n        \"ASANA_ACCESS_TOKEN\": \"<YOUR_ASANA_PAT>\"\n      }\n    }\n  }\n}\n```\n\nRestart Claude Desktop to load the new server.\n\n## Testing with MCP Inspector\n\nYou can test the server locally using the official MCP inspector:\n\n```bash\nnpx @modelcontextprotocol/inspector node dist/index.js\n```\n\n*(Ensure you pass your `ASANA_ACCESS_TOKEN` environment variable when running the inspector).*",
  "bytes": 4623,
  "sha": "3dbe0e91bf30b2ad9863060de63c93e77e76b40863736adb07a3cb107340b888",
  "repo_slug": "mohan-the-octocat/asana-mcp-server",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_mohan_the_octocat_asana_mcp_server_5b70d63b/readme"
}