Overview
Goose integrates with CEMS via a single MCP extension in~/.config/goose/config.yaml. No hooks or skills - just the MCP tools.
What Gets Installed
When you runcems setup --goose, the installer adds an MCP extension block to your Goose config:
Shared Configuration
MCP Configuration
The installer merges this block into~/.config/goose/config.yaml:
CEMS_API_KEY is read from the environment variable, not embedded in the config file.
Prerequisites
-
Install CEMS CLI:
-
Set API key environment variable:
Add to your shell profile (
~/.bashrc,~/.zshrc, etc.) to persist. -
Run Goose:
Goose will automatically load the CEMS extension and connect to the MCP server.
MCP Tools Available
CEMS exposes these tools to Goose:memory_search
Purpose: Search memories with semantic retrieval, graph traversal, and time decay Usage:query(required) - Natural language search queryscope(default: “both”) -"personal","shared", or"both"max_results(default: 10) - Maximum results (1-20)max_tokens(default: 4000) - Token budget for resultsenable_graph(default: true) - Include related memories via graph traversalenable_query_synthesis(default: true) - Expand query with LLM for better retrievalproject(optional) - Project ID (org/repo) for scoped boostingraw(default: false) - Debug mode: bypass relevance filtering
memory_add
Purpose: Store a memory (personal or shared scope) Usage:content(required) - Memory contentscope(default: “personal”) -"personal"or"shared"category(default: “general”) -preferences,conventions,architecture,decisions,workflow,errors,learnings, orgeneraltags(optional) - Array of tagssource_ref(optional) - Source reference (e.g.,"project:org/repo")priority(default: 5) - Priority (0-10)
memory_get
Purpose: Fetch full memory by ID (for truncated search results) Usage:memory_forget
Purpose: Archive or permanently delete a memory Usage:memory_id(required) - Memory IDhard_delete(default: false) - Permanent deletion vs soft delete
memory_update
Purpose: Update an existing memory’s content Usage:memory_maintenance
Purpose: Run consolidation, summarization, or reindex jobs Usage:consolidation- Merge semantic duplicatessummarization- Compress old memoriesreindex- Rebuild embeddings
Setup Verification
1. Check config file
2. Check credentials
3. Check API key environment variable
4. Test MCP server
5. Test in Goose
Start Goose and ask:memory_search tool and display results.
How It Works
User asks to recall something
- User: “What do we know about deployment?”
- Goose detects the recall intent
- Goose invokes
memory_searchMCP tool with query=“deployment” - CEMS server searches memories
- Results returned to Goose
- Goose displays results to user
User asks to remember something
- User: “Remember that we deploy via Coolify”
- Goose detects the remember intent
- Goose invokes
memory_addMCP tool with content=“We deploy via Coolify” - CEMS server stores the memory
- Confirmation returned to Goose
- Goose displays confirmation to user
Project-Scoped Search
Goose should auto-detect the project from git remote when callingmemory_search:
Troubleshooting
CEMS extension not loaded
- Check config:
cat ~/.config/goose/config.yaml | grep cems - Verify
cems-mcpis in PATH:which cems-mcp - Install if missing:
pip install cemsoruv tool install cems - Restart Goose
API key not found
- Check environment variable:
echo $CEMS_API_KEY - Set if missing:
export CEMS_API_KEY="cems_usr_..." - Add to shell profile to persist
- Restart Goose
MCP connection failed
- Test
cems-mcpmanually:cems-mcp - Check credentials:
cat ~/.cems/credentials - Test connection:
cems health - Check server logs if self-hosting
No search results
- Test CLI:
cems search "test query" - Check server connection:
cems health - Verify credentials:
cat ~/.cems/credentials - Check server logs if self-hosting
Advanced Configuration
Custom timeout
Edit~/.config/goose/config.yaml:
Self-hosted server
Edit~/.config/goose/config.yaml:
Team memory
If your server supports team memory, add team header:Differences from Other IDEs
Goose has the simplest integration:| Feature | Claude Code | Cursor | Codex | Goose |
|---|---|---|---|---|
| Hooks | 6 | 3 | 0 | 0 |
| Skills | 6 | 5 | 2 | 0 |
| Commands | 2 | 0 | 3 | 0 |
| MCP tools | Yes | Yes | Yes | Yes |
| Auto context | Yes | Hook-based | No | No |
| Observer | Yes | Yes | No | No |
Example Workflows
Search before coding
User: “I need to add authentication to the API. What have we done before?” Goose:- Detects recall intent
- Calls
memory_search(query="authentication API patterns", project="org/repo") - Displays results:
- Uses memories to guide implementation
Store discovery
User: “Remember that we deploy to production every Friday at 3pm” Goose:- Detects remember intent
- Detects project from git remote
- Calls
memory_add(content="Deploy to production every Friday at 3pm", category="workflow", source_ref="project:org/repo") - Displays confirmation:
Update stale memory
User: “We changed deployment to Mondays. Update the memory.” Goose:- Searches for deployment memory:
memory_search(query="deployment schedule") - Finds memory ID:
abc12345 - Updates:
memory_update(memory_id="abc12345", content="Deploy to production every Monday at 3pm") - Confirms update
Next Steps
- Claude Code Integration - Full hook-based integration
- Cursor Integration - MCP + hooks + skills
- Codex Integration - Command-based interface