docs: Asana tutorial (#1806)

This commit is contained in:
Angie Jones
2025-03-20 22:57:11 -05:00
committed by GitHub
parent dabb9b36a6
commit 65295f1d8b
5 changed files with 320 additions and 9 deletions

View File

@@ -36,7 +36,7 @@ With my tasks organized and estimated, Goose finds open time slots in my Google
Within the first few minutes of the start of my week, my schedule is already mapped out, optimized for focus. Within the first few minutes of the start of my week, my schedule is already mapped out, optimized for focus.
This has been so extremly helpful in increasing my productivity. Thanks, Goose! 🚀 This has been so extremely helpful in increasing my productivity. Thanks, Goose! 🚀

View File

@@ -25,7 +25,6 @@ Here are the built-in extensions:
2. **Computer Controller**: provides general computer control tools for webscraping, file caching, and automations. 2. **Computer Controller**: provides general computer control tools for webscraping, file caching, and automations.
3. **Memory**: teaches goose to remember your preferences as you use it 3. **Memory**: teaches goose to remember your preferences as you use it
4. **JetBrains**: provides an integration for working with JetBrains IDEs. 4. **JetBrains**: provides an integration for working with JetBrains IDEs.
5. **Google Drive**: provides an integration for working with Google Drive for file management and access.
#### Toggling Built-in Extensions #### Toggling Built-in Extensions
@@ -274,7 +273,12 @@ You can remove installed extensions.
## Starting Session with Extensions ## Starting Session with Extensions
You can start a tailored Goose session with specific extensions directly from the CLI. This will add and enable the extensions, so there's no need to do this if you already have the extensions enabled. You can start a tailored Goose session with specific extensions directly from the CLI.
:::info Notes
* The extension will not be installed. It will only be enabled for the current session.
* There's no need to do this if you already have the extensions enabled.
:::
### Built-in Extensions ### Built-in Extensions

View File

@@ -67,7 +67,17 @@ goose configure
goose session --with-extension <command> goose session --with-extension <command>
``` ```
Can also include environment variables (e.g., `'GITHUB_TOKEN={your_token} npx -y @modelcontextprotocol/server-github'`) **Examples:**
```bash
goose session --with-extension "npx -y @modelcontextprotocol/server-memory"
```
With environment variable:
```bash
goose session --with-extension "GITHUB_PERSONAL_ACCESS_TOKEN=<YOUR_TOKEN> npx -y @modelcontextprotocol/server-github"
```
- Start a session with the specified [built-in extension](/docs/getting-started/using-extensions#built-in-extensions) enabled (e.g. 'developer') - Start a session with the specified [built-in extension](/docs/getting-started/using-extensions#built-in-extensions) enabled (e.g. 'developer')
@@ -81,6 +91,12 @@ goose configure
goose session --with-builtin <id> goose session --with-builtin <id>
``` ```
**Example:**
```bash
goose session --with-builtin computercontroller
```
--- ---
### session list [options] ### session list [options]

View File

@@ -174,12 +174,14 @@ Note that you'll need [uv](https://docs.astral.sh/uv/#installation) installed on
{describe any environment setup, access controls, and what you want to accomplish.} {describe any environment setup, access controls, and what you want to accomplish.}
### Goose Prompt ### Goose Prompt
```
{exact prompt}. > _exact prompt_
```
### Goose Output ### Goose Output
``` :::note CLI
{exact output} {exact output}
```
:::

View File

@@ -0,0 +1,289 @@
---
title: Asana Extension
description: Add Asana MCP Server as a Goose Extension
---
import Tabs from '@theme/Tabs';
import TabItem from '@theme/TabItem';
import YouTubeShortEmbed from '@site/src/components/YouTubeShortEmbed';
<!--<YouTubeShortEmbed videoUrl="https://www.youtube.com/embed/VIDEO_ID" />-->
This tutorial covers how to add the [Asana MCP Server](https://github.com/roychri/mcp-server-asana) as a Goose extension to enable task automation, project tracking, and team collaboration.
:::tip TLDR
**Command**
```sh
npx -y @roychri/mcp-server-asana
```
**Environment Variable**
```
ASANA_ACCESS_TOKEN: <YOUR_TOKEN>
```
:::
## Configuration
:::info
Note that you'll need [Node.js](https://nodejs.org/) installed on your system to run this command, as it uses `npx`.
:::
<Tabs groupId="interface">
<TabItem value="cli" label="Goose CLI" default>
1. Run the `configure` command:
```sh
goose configure
```
2. Choose to add a `Command-line Extension`
```sh
┌ goose-configure
◇ What would you like to configure?
│ Add Extension
◆ What type of extension would you like to add?
│ ○ Built-in Extension
// highlight-start
│ ● Command-line Extension (Run a local command or script)
// highlight-end
│ ○ Remote Extension
```
3. Give your extension a name
```sh
┌ goose-configure
◇ What would you like to configure?
│ Add Extension
◇ What type of extension would you like to add?
│ Command-line Extension
// highlight-start
◆ What would you like to call this extension?
│ Asana
// highlight-end
```
4. Enter the command
```sh
┌ goose-configure
◇ What would you like to configure?
│ Add Extension
◇ What type of extension would you like to add?
│ Command-line Extension
◇ What would you like to call this extension?
│ Asana
// highlight-start
◆ What command should be run?
│ npx -y @roychri/mcp-server-asana
// highlight-end
```
5. Enter the number of seconds Goose should wait for actions to complete before timing out. Default is 300s
```sh
┌ goose-configure
◇ What would you like to configure?
│ Add Extension
◇ What type of extension would you like to add?
│ Command-line Extension
◇ What would you like to call this extension?
│ Asana
◇ What command should be run?
│ npx -y @roychri/mcp-server-asana
// highlight-start
◆ Please set the timeout for this tool (in secs):
│ 300
// highlight-end
```
6. Obtain a [Asana Access Token](https://app.asana.com/0/my-apps) and paste it in.
:::info
See [Asana's developer docs](https://developers.asana.com/docs/personal-access-token) if you need detailed instructions on creating an access token.
:::
```sh
┌ goose-configure
◇ What would you like to configure?
│ Add Extension
◇ What type of extension would you like to add?
│ Command-line Extension
◇ What would you like to call this extension?
│ Asana
◇ What command should be run?
│ npx -y @roychri/mcp-server-asana
◇ Please set the timeout for this tool (in secs):
│ 300
// highlight-start
◆ Would you like to add environment variables?
│ Yes
◇ Environment variable name:
│ ASANA_ACCESS_TOKEN
◇ Environment variable value:
│ ▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪
◇ Add another environment variable?
│ No
// highlight-end
└ Added Asana extension
```
</TabItem>
<TabItem value="ui" label="Goose Desktop">
1. [Launch the installer](goose://extension?cmd=npx&arg=-y&arg=%40roychri%2Fmcp-server-asana&id=asana&name=Asana&description=enable%20task%20automation%2C%20project%20tracking%2C%20and%20team%20collaboration&env=ASANA_ACCESS_TOKEN%3DAsana%20Access%20Token)
2. Press `Yes` to confirm the installation
3. Obtain a [Asana Access Token](https://app.asana.com/0/my-apps) and paste it in
:::info
See [Asana's developer docs](https://developers.asana.com/docs/personal-access-token) if you need detailed instructions on creating an access token.
:::
4. Click `Save Configuration`
5. Scroll to the top and click `Exit` from the upper left corner
</TabItem>
</Tabs>
## Example Usage
:::info LLM
OpenAI's GPT-4o was used for this task. There's an [open bug](https://github.com/block/goose/issues/1804) for Amazon Bedrock models.
:::
### Goose Prompt
> _Goose, I have one hour. Look through uncompleted tasks assigned to me in Asana and show me ones that you estimate will take an hour or less. Order them by deadline._
### Goose Output
Note that IDs have been changed to generic ones
:::note CLI
<details>
<summary>Tool Calls</summary>
─── asana_search_tasks | abcdefgh ──────────────────────────
assignee.any: me
completed: false
workspace: 1234567890123
─── asana_get_task | abcdefgh ──────────────────────────
opt_fields: due_on,estimated_hours
task_id: 1100000000000001
─── asana_get_task | abcdefgh ──────────────────────────
opt_fields: due_on,estimated_hours
task_id: 1100000000000002
─── asana_get_task | abcdefgh ──────────────────────────
opt_fields: due_on,estimated_hours
task_id: 1100000000000003
─── asana_get_task | abcdefgh ──────────────────────────
opt_fields: due_on,estimated_hours
task_id: 1100000000000004
─── asana_get_task | abcdefgh ──────────────────────────
opt_fields: due_on,estimated_hours
task_id: 1100000000000005
─── asana_get_task | abcdefgh ──────────────────────────
opt_fields: due_on,estimated_hours
task_id: 1100000000000006
─── asana_get_task | abcdefgh ──────────────────────────
opt_fields: due_on,estimated_hours
task_id: 1100000000000007
─── asana_get_task | abcdefgh ──────────────────────────
opt_fields: due_on,estimated_hours
task_id: 1100000000000008
─── asana_get_task | abcdefgh ──────────────────────────
opt_fields: due_on,estimated_hours
task_id: 1100000000000009
─── asana_get_task | abcdefgh ──────────────────────────
opt_fields: due_on,estimated_hours
task_id: 1100000000000010
</details>
Here are your uncompleted tasks in Asana estimated to take an hour or less, ordered by their deadline:
1. **Task:** Review team meeting notes
- **Due Date:** 2025-03-21
2. **Task:** Draft quick status update
- **Due Date:** 2025-03-21
3. **Task:** Proofread blog post
- **Due Date:** 2025-03-21
4. **Task:** Send reminder to partners
- **Due Date:** 2025-03-27
Please let me know if you'd like more information or help with any specific task!
:::