Extension Types
Goose supports several types of extensions:Tools
Functions the agent can call (e.g., API integrations, file operations)
Resources
Data sources the agent can read (e.g., databases, documentation)
Prompts
Pre-defined prompt templates for common tasks
OAuth Apps
Extensions with authentication flows for third-party services
Quick Start: Python MCP Server
The fastest way to create an extension is using FastMCP, a Python framework for MCP servers.Installation
Basic Server
Createmy_tools.py:
Register with Goose
Add to~/.config/goose/config.yaml:
Test the Extension
Tool Design Best Practices
1. Clear Descriptions
Provide detailed descriptions so the agent understands when to use your tool:2. Type Safety
Use type hints for automatic schema generation:3. Error Handling
Provide clear error messages:4. Idempotency
Make tools safe to retry:Resources
Resources provide read access to data:Prompts
Prompts are reusable templates:my-tools.ts and register:
Rust MCP Server
For performance-critical extensions in Rust:Testing Your Extension
Manual Testing
Test your MCP server standalone:MCP Inspector
Use the MCP Inspector for interactive testing:- View available tools
- Test tool calls
- Inspect request/response formats
Integration Testing
Test with goose:Distribution
PyPI Package
Publish your Python extension:npm Package
For TypeScript extensions:Next Steps
Extension Development
In-depth extension development guide
MCP Protocol
Learn the Model Context Protocol specification
Tool Creation
Best practices for designing tools
Built-in Extensions
Study built-in extension implementations