Skip to main content
Glama
README.md
# taskboard-port

Asana workspaces, projects and tasks as MCP tools, talking to the Asana
REST API. taskboard-port is a clean-room rebuild of the core subset of
the Asana MCP surface, under a new name: fresh code written from the
public Asana API documentation, no copied branding. The original Asana
server is hosted/remote with OAuth; this rebuild is a REST client for
the same upstream API using a personal access token, and does not
reproduce the hosted OAuth surface.

## Tools (core subset, 11)

`get_current_user`, `list_workspaces`, `list_projects`, `get_project`,
`create_project`, `list_tasks`, `get_task`, `create_task`,
`update_task`, `delete_task`, `search_tasks`.

Not in this subset: sections, tags, stories/comments, subtasks, custom
fields, portfolios/goals, rules, attachments, teams/users admin,
typeahead, events/webhooks.

Notes on shaping: Asana wraps request bodies and responses in a
`data` envelope — create/update calls send `{data: {...}}` and parsed
responses are returned as-is. `list_tasks` picks its route
deterministically (project tasks endpoint, else assignee query, else a
capped list) and applies the `completed` filter client-side, since
Asana's list endpoints take no such parameter.

## Setup

```bash
export ASANA_ACCESS_TOKEN=...
```

Optionally override the API base with `ASANA_API_URL`
(default `https://app.asana.com/api/1.0`). Without the token, every
tool call fails with an error naming the missing variable.

## CLI

```bash
npx @reneturcios/taskboard-port get_task '{"task_gid":"12345"}'
npx @reneturcios/taskboard-port mcp        # stdio MCP server
```

Each tool name is a subcommand taking one JSON object argument.

## MCP client config

```json
{
  "mcpServers": {
    "taskboard-port": {
      "command": "npx",
      "args": ["-y", "@reneturcios/taskboard-port", "mcp"],
      "env": { "ASANA_ACCESS_TOKEN": "..." }
    }
  }
}
```

## Docker

```bash
docker run -i -e ASANA_ACCESS_TOKEN ghcr.io/cloudcorprecords/taskboard-port
```

## Development

```bash
npm install
npm run build
npm test
```

## License

MIT

Maintenance

ActivityMaintained
ResponsivenessNo issues