diff --git a/documentation/docs/mcp/container-use-mcp.md b/documentation/docs/mcp/container-use-mcp.md new file mode 100644 index 000000000000..157de4a96176 --- /dev/null +++ b/documentation/docs/mcp/container-use-mcp.md @@ -0,0 +1,201 @@ +--- +title: Container Use +description: Use Container-Use MCP as a Goose Extension +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; +import GooseDesktopInstaller from '@site/src/components/GooseDesktopInstaller'; +import CLIExtensionInstructions from '@site/src/components/CLIExtensionInstructions'; +import YouTubeShortEmbed from '@site/src/components/YouTubeShortEmbed'; + + + +This tutorial covers how to add the [Container Use MCP Server](https://container-use.com) as a Goose extension enabling Goose to work in an isolated environment. + +:::tip TLDR + + + [Launch the installer](goose://extension?cmd=container-use&arg=stdio&id=container-use&name=container%20use&description=use%20containers%20with%20dagger%20and%20git%20for%20isolated%20environments) + + + **Command** + ```sh + container-use stdio + ``` + + +::: + +## Configuration + +:::info +You'll need [Docker](https://www.docker.com/) installed on your system. If you want to use the remote MCP server, you'll also need [Node.js](https://nodejs.org/) installed. +::: + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## Example Usage + +Here's a simple example of updating a file-based to-do app to use a SQLite database plus full testing - all within an isolated container environment. + +#### Prompt + +``` +Run a container agent to add a feature to save my to-do list data in sqlite, build and run tests, but use a separate Git branch so my main code stays safe. +``` + +#### Goose Output + +``` +I'll help you create a container environment to add SQLite functionality to your to-do list application on a separate Git branch. Let me start by creating the environment and examining your current code structure. +─── environment_create | containeruse ────────────────────────── +environment_source: ./examples/todo-list +explanation: ... +title: ... + +Now let me set up the environment with the necessary tools and then proceed with the SQLite feature development: +─── environment_config | containeruse ────────────────────────── +config: + base_image: python:3.11-slim + setup_commands: + - + [REDACTED: 63 chars] + - + pip install pytest pytest-cov + +environment_id: thankful-whale +environment_source: ./examples/todo-list +explanation: ... + +Let me install pytest after the environment is running: + +--- + +Great! I've created a container environment for safely adding SQLite functionality to your to-do list app. Let me first explore the current code structure and then create a new Git branch. + +--- + +Now I'll create the SQLite-based storage implementation. First, let me create a new version of the TaskManager with SQLite support: + +--- + +## ✅ SQLite Feature Successfully Added! + +I've successfully created a container environment and added SQLite functionality to your to-do list application! Here's what was accomplished: + +### 🎯 **Features Implemented** + +1. **SQLite Database Storage** + - Replaced plain text file storage with SQLite database + - Created proper database schema with auto-incrementing IDs + +2. **Enhanced Task Management** + - All original functionality preserved (add, list, mark done/undone, delete, clear) + - Added new **statistics feature** showing completion rates + - Improved task display with database IDs + +3. **Two Implementation Versions** + - `taskman_sqlite.py` - Full-featured with Rich UI + - `taskman_sqlite_simple.py` - Simplified without external dependencies + +### 🧪 **Testing Completed** + +- ✅ Created comprehensive test suite (`test_taskman_sqlite.py`) +- ✅ Built simple test runner (`test_simple.py`) +- ✅ All tests pass successfully +- ✅ Manual testing confirms functionality works perfectly + +### 📊 **Live Demo Results** + + # Added tasks successfully + ✓ Added task: Buy groceries + ✓ Added task: Walk the dog + + # Listed tasks with SQLite IDs + 📋 Task List (SQLite) + # ID Status Task + 1 1 ✓ Done Buy groceries + 2 2 ○ Todo Walk the dog + + # Statistics working + Task Statistics: + Total tasks: 2 + Completed: 1 + Pending: 1 + Completion rate: 50.0% + + # Database verified + sqlite3 tasks.db "SELECT * FROM tasks;" + 1|Buy groceries|1 + 2|Walk the dog|0 + + +### 🔒 **Safe Development** + +- ✅ Used separate container environment +- ✅ All changes isolated from your main code +- ✅ Original implementation preserved +- ✅ Backward compatibility maintained + +### 📁 **Files Created** + +- `taskman_sqlite_simple.py` - Main SQLite implementation +- `test_simple.py` - Test suite +- `SQLITE_FEATURE_README.md` - Comprehensive documentation +- `tasks.db` - SQLite database file + +The SQLite implementation is fully functional and ready for use! The original file-based version remains untouched, so you can safely evaluate the new SQLite features without any risk to your existing code. + +``` diff --git a/documentation/static/servers.json b/documentation/static/servers.json index d611914a0b71..02b74fcab4b1 100644 --- a/documentation/static/servers.json +++ b/documentation/static/servers.json @@ -582,5 +582,16 @@ "is_builtin": false, "endorsed": false, "environmentVariables": [] + }, + { + "id": "container-use", + "name": "Container Use", + "description": "Integrate container workflows with Goose using the Container-Use MCP", + "command": "npx -y mcp-remote https://container-use.com/mcp", + "link": "https://container-use.com", + "installation_notes": "Requires Node.js and Docker.", + "is_builtin": false, + "endorsed": true, + "environmentVariables": [] } ]