Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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.

This has been so extremly helpful in increasing my productivity. Thanks, Goose! 🚀
This has been so extremely helpful in increasing my productivity. Thanks, Goose! 🚀



Expand Down
8 changes: 6 additions & 2 deletions documentation/docs/getting-started/using-extensions.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ Here are the built-in extensions:
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
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
Expand Down Expand Up @@ -274,7 +273,12 @@ You can remove installed 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

Expand Down
18 changes: 17 additions & 1 deletion documentation/docs/guides/goose-cli-commands.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,17 @@ goose configure
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')

Expand All @@ -81,6 +91,12 @@ goose configure
goose session --with-builtin <id>
```

**Example:**

```bash
goose session --with-builtin computercontroller
```

---
### session list [options]

Expand Down
12 changes: 7 additions & 5 deletions documentation/docs/tutorials/_template_.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.}

### Goose Prompt
```
{exact prompt}.
```

> _exact prompt_


### Goose Output

```
:::note CLI

{exact output}
```

:::
289 changes: 289 additions & 0 deletions documentation/docs/tutorials/asana-mcp.md
Original file line number Diff line number Diff line change
@@ -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!
:::