Skip to main content

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_ROOT and/or an imported repo under REPOSITORY_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_shell tool — only allowlisted npm scripts / pytest / ruff
  • Path traversal rejected on repository_id and 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

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

otter_mcp-0.2.0.tar.gz (28.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

otter_mcp-0.2.0-py3-none-any.whl (37.8 kB view details)

Uploaded Python 3

File details

Details for the file otter_mcp-0.2.0.tar.gz.

File metadata

  • Download URL: otter_mcp-0.2.0.tar.gz
  • Upload date:
  • Size: 28.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.4

File hashes

Hashes for otter_mcp-0.2.0.tar.gz
Algorithm Hash digest
SHA256 e5f99562b6561ff7dc06305b4c13de2dd138e7070bde8dd8439e6ef43150c770
MD5 8d3090de9ccaab8a10b3d615ff843727
BLAKE2b-256 850689783987e8884ac11744bb4edc35eea0cb61a63ca7d5fdbc2b529bb25c00

See more details on using hashes here.

File details

Details for the file otter_mcp-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: otter_mcp-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 37.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.4

File hashes

Hashes for otter_mcp-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 db8e2de25399259eb9687feb84a28ba58065895858f4c5029c9964377a183a97
MD5 07f83cbaf7702d898b7bef2cfdfbfc94
BLAKE2b-256 c4eae5213c10fbad1ab49603fd44613436eb028f99abe6bf9e041a444089b93e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page