Otter MCP — Engineering Intelligence Layer
Official Model Context Protocol stdio server. External AI agents (Cursor, Claude Desktop, Claude Code) get a repository brain: impact, architecture guard, verification, and approval-gated tasks.
Install (no monorepo clone)
pip install otter-mcp
# or: uv pip install otter-mcp
Or run without a permanent install:
uvx otter-mcp
Cursor / Claude (mcp.json)
{
"mcpServers": {
"otter": {
"command": "uvx",
"args": ["otter-mcp"],
"env": {
"OTTER_REPO_ROOT": "${workspaceFolder}"
}
}
}
}
If you prefer pip’s console script:
{
"mcpServers": {
"otter": {
"command": "otter-mcp",
"env": {
"OTTER_REPO_ROOT": "${workspaceFolder}"
}
}
}
}
Optional API persistence
{
"env": {
"OTTER_REPO_ROOT": "${workspaceFolder}",
"OTTER_API_URL": "http://127.0.0.1:8000",
"OTTER_SESSION": "your-web-otter-session-cookie",
"OTTER_REPOSITORY_ID": "imported-repo-id"
}
}
Auth note: CLI otter login (GitHub) is not an API session. Export the Web/Docker otter_session cookie as OTTER_SESSION.
Requirements
- Python 3.11+
- A local checkout via
OTTER_REPO_ROOTand/or an imported repo underREPOSITORY_DATA_DIR/{repository_id} - Optional: running Otter API for memory / code-tasks
Tools
| Tool | Purpose |
|---|---|
otter_understand |
Targeted context (retrieval + neighbors) |
otter_impact |
Blast radius from a focus path |
otter_change_radar |
Pre-write scope / risk / complexity |
otter_dependency_impact |
Reverse consumers of a file/module/dep |
otter_guard |
Proposal vs inferred constitution |
otter_why |
Evidence-backed “why does this exist?” |
otter_memory |
List/add memory via API |
otter_verify |
Allowlisted tests/lint + architecture |
otter_review_gate |
PASS / REVIEW / BLOCKED |
otter_task_create |
Plan + optional API code-task (no writes) |
otter_task_status |
Task status from API |
otter_task_validate |
Review gate vs objective |
otter_task_execute |
generate / approve / apply — apply only when approved |
Writes never apply silently: otter_task_execute with apply returns approval_required until status is approved.
Resources & prompts
- Resources:
otter://repo/overview,architecture,constitution,health,dependencies,otter://task/{id}… - Prompts:
otter-investigate,otter-plan,otter-review,otter-debug,otter-security-review,otter-architecture-review
Developer install (from this monorepo)
pip install -e apps/mcp
export OTTER_REPO_ROOT=/path/to/repo
otter-mcp
Security
- No general
execute_shelltool — only allowlisted npm scripts / pytest / ruff - Path traversal rejected on
repository_idand relative paths - Oversized tool JSON is truncated in responses
MCP Registry
Package metadata: server.json. Registry name: io.github.manasdutta04/otter.
See also: https://otter.manasdutta.com/docs/mcp
Metadata
Release files for otter-mcp 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| otter_mcp-0.2.0.tar.gz | 28.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| otter_mcp-0.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 66.6 kB
Release files / otter_mcp-0.2.0.tar.gz
| Download URL | otter_mcp-0.2.0.tar.gz |
|---|---|
| Size | 28.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e5f99562b6561ff7dc06305b4c13de2dd138e7070bde8dd8439e6ef43150c770
|
|
BLAKE2b-256 checksum How to use checksums |
850689783987e8884ac11744bb4edc35eea0cb61a63ca7d5fdbc2b529bb25c00
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.4
|
Release files / otter_mcp-0.2.0-py3-none-any.whl
| Download URL | otter_mcp-0.2.0-py3-none-any.whl |
|---|---|
| Size | 37.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
db8e2de25399259eb9687feb84a28ba58065895858f4c5029c9964377a183a97
|
|
BLAKE2b-256 checksum How to use checksums |
c4eae5213c10fbad1ab49603fd44613436eb028f99abe6bf9e041a444089b93e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.13.4
|