Skip to main content

Container Use

๐ŸŽฅPlug & Play
Watch the demo

This tutorial covers how to add the Container Use MCP Server as a Goose extension enabling Goose to work in an isolated environment.

TLDR

Configurationโ€‹

info

You'll need Docker installed on your system. If you want to use the remote MCP server, you'll also need Node.js installed.

  1. Launch the installer
  2. Click OK to confirm the installation
  3. Click the button in the top-left to open the sidebar
  4. Navigate to the chat

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.