OctoWatch DLP MCP Server

MCP Server for OctoWatch DLP (Cloud or On-Premise)

Documentation

OctoWatch DLP MCP Server

PyPI package: octowatch-mcp · product: octowatchdlp.com (not related to other products named “OctoWatch”).

PyPI Python CI MCP License: MIT

Install in Cursor Install in VS Code Install in VS Code Insiders

Read-only Model Context Protocol (MCP) server for OctoWatch DLP Cloud employee monitoring and data-loss prevention — ask Cursor, Claude, or VS Code about risks, idle time, productivity, and monitoring in plain language.

Python MCP SDK v2 (MCPServer). Built for SecOps and managers — open-source companion to the OctoWatch console.

Contents: Status · Where to find us · Prerequisites · Example questions · Security · Limitations · Quick start · Your account · Tools · Configuration · Documentation · Contributing

Status

Alpha (v0.5.1). APIs and tool shapes may change; pin a PyPI version in production configs.

Tool failures return MCP is_error (ToolError). All tools advertise read_only_hint.

Where to find us

The MCP runs locally (no ExtrLabs-hosted MCP). Catalogs point at PyPI / GitHub; you supply Cloud login via env.

ChannelLink
PyPIoctowatch-mcp
Official MCP Registryio.github.extralabs/octowatch-mcp
GitHubextralabs/octowatch-mcp-server
Cursor MarketplacePlugin manifest .cursor-pluginpublish form (manual review)
DirectoriesGlama · mcpservers.org · mcpfind.org · mcpmarket.com · PulseMCP · awesome-mcp-servers#13003 (mcp.so skipped — paid)
cursor.directoryOpen Plugins: root .mcp.json + .cursor-plugin/plugin.json — re-submit after these are on main

Directory / Marketplace maintainer notes: docs/distribution.md.

Prerequisites

  • Python 3.10+
  • An MCP-capable host (Cursor, Claude Desktop, VS Code, …)
  • Network access to your Cloud API host (default https://cloud.octowatchdlp.com)

Example questions

  • “Which Risks in the last day?”
  • “Who was idle the longest yesterday?”
  • “Productivity summary for Accounting”
  • “Show Monitoring keystrokes for Emily”
  • “Find keyword invoice across monitoring last week”
  • “List users and groups”

Short scenarios

GoalAsk something like…
DLP / policy hits“Summarize risks for today by user and rule”
Idle time (not formal alerts)“Who was idle more than 2 hours yesterday?”
Top apps/sites“Top applications for group Accounting last 7 days”
Keyword hunt“Search monitoring for confidential last 30 days”
Directory“List users and groups, then show info for AliasID 4”

Security & privacy

Defaults use the public demo account.
Do not put production passwords in MCP config or git. Use env vars and a least-privilege console operator.
No writes, no screenshot/video binary downloads.

Monitoring responses can contain sensitive employee data (activity, keystrokes snippets, mail metadata). Treat tool output as confidential. Full policy: SECURITY.md.

Limitations

  • Read-only — not a full console replacement (Web Console)
  • No screenshot/video binary downloads (stream metadata only)
  • Not a mirror of product docs or the REST catalog — those stay at docs and /api/
  • Alpha — expect breaking changes between minors until 1.0

Quick start (PyPI)

Use the Install badges at the top of this README (Cursor / VS Code; demo credentials). First ensure the CLI is available:

pip install octowatch-mcp

Or configure manually — example for Cursor / Claude-style mcpServers (demo credentials):

{
  "mcpServers": {
    "octowatch": {
      "command": "octowatch-mcp",
      "env": {
        "OCTOWATCH_API_BASE": "https://cloud.octowatchdlp.com",
        "OCTOWATCH_EMAIL": "demo@octowatchdlp.com",
        "OCTOWATCH_PASSWORD": "demo"
      }
    }
  }
}

Ready-made files: examples/cursor-mcp-pypi.json, examples/claude-desktop-pypi.json. Per-host steps: docs/hosts.md.

Restart the host, then try: “Using OctoWatch, who am I logged in as?” or “List risks for the last week.”

Demo credentials work without a .env. Be gentle with the shared demo tenant (avoid aggressive agent loops).

From source

git clone https://github.com/extralabs/octowatch-mcp-server.git
cd octowatch-mcp-server
python -m venv .venv
# Windows: .venv\Scripts\activate
# macOS/Linux: source .venv/bin/activate
pip install -e .
cp .env.example .env   # optional
python -m octowatch_mcp

Use examples/cursor-mcp.json / examples/claude-desktop.json and set cwd to your clone (Windows: D:\\path\\to\\octowatch-mcp-server).

ChatGPT and other hosts

There is no single public ChatGPT JSON config we ship yet — ChatGPT / similar products often use remote MCP connectors rather than a local command stdio process.

  • For local desktop agents, prefer Cursor, Claude Desktop, or VS Code with the examples above.
  • If your host supports custom MCP over HTTP, you can run octowatch-mcp --transport streamable-http (localhost only by default) and register that endpoint per the host’s docs — see docs/hosts.md.

Your account (email / password)

OctoWatch Cloud still needs a console login. The MCP does not store passwords for you — the host passes them as process env.

ModeWhat to set
Demo (try-out)Defaults / Install badges: demo@octowatchdlp.com / demo
Your tenantYour least-privilege operator email + password in MCP env (or Cursor plugin Configure)
VariableMeaning
OCTOWATCH_EMAILConsole operator email
OCTOWATCH_PASSWORDConsole password (isSecret in Registry metadata)
OCTOWATCH_API_BASECloud API host if not the default public cloud

Recommended: put them in the MCP host JSON env block — examples/cursor-mcp-pypi-with-env.json / examples/claude-desktop-pypi-with-env.json. Cursor plugin variables: .cursor-plugin/plugin.json.

Alternatively, for a source install, copy .env.example.env next to the process working directory.

Never commit real passwords. Verify the same data in the Web Console. Walkthrough: docs/hosts.md.

Core tools

ToolCloud areaNotes
octowatch_whoamiAuth sessionAccount / host (no password)
list_users_groupsDirectory treeType 0 root, 1 group, 2 user
list_risksRisks + AnalyticsDefault mode=summary
list_anomaliesAlertsFormal deviations (not idle)
get_idle_summaryProductivityRank by InactiveTime
get_activity_summaryActivityTop apps/sites
get_timesheetTimeSheetWorked vs expected hours
get_productivity_summaryProductivity + analyticsPer-user rollup
list_reportsReportsScheduled + processing tasks

Console coverage tools

ToolCloud areaNotes
get_analyticsAnalyticsview=overall|disciplina|activity|productivity
get_dashboardDashboardWidgets; blobs stripped
get_chronoChronoTimeline
get_day_structureDay structurelist or detail
list_monitoringMonitoringOne kind; compact by default
search_monitoringTools → Searchfilter_key across kinds
get_activity_detailActivity windowDrill-down
list_onlineLivePresence only
list_stream_metaStreamMetadata only
list_directoryEdit Get*users/groups/computers/…
get_user_infoUser cardAliasID / computer
get_account_readonlyAccount Get*No Set*/PIN
list_api_coverage(static)Gap summary

Full arguments, routing, and scenarios: docs/TOOLS.md.
MCP prompts/resources: docs/MCP.md.

Configuration

EnvDefaultMeaning
OCTOWATCH_API_BASEhttps://cloud.octowatchdlp.comAPI host (serverBase)
OCTOWATCH_EMAILdemo@octowatchdlp.comConsole operator
OCTOWATCH_PASSWORDdemoDemo only by default
OCTOWATCH_DEFAULT_DAYS1Lookback when tools omit dates/period
OCTOWATCH_TOOLSETSallall | core | console (console includes core)
octowatch-mcp                                      # stdio (default)
octowatch-mcp --transport streamable-http          # http://127.0.0.1:8000/mcp

Periods & filters

Prefer period=today|yesterday|last_7_days|last_30_days, or date_from / date_to.

  • Date-only values cover the full calendar day (date_to23:59:59).
  • Optional user_id (AliasID) and group_id on most read tools.
  • POST body TreeviewUsers: all → NodeType=-666666; group → NodeType=14; user → NodeType=1.

Documentation

DocContents
docs/README.mdDoc index
docs/hosts.mdInstall per host + your login
docs/TOOLS.mdTool reference + when-which
docs/MCP.mdProtocol, resources, prompts
docs/API.mdMCP coverage audit (not a full REST mirror)
docs/troubleshooting.mdCommon failures
docs/registry.mdOfficial MCP Registry (server.json)
docs/distribution.mdDirectories, Marketplace, deferred hosted channels

Product & console

Roadmap

Planned (not scheduled): tighter payload budgets, client-side rate limits, argument completions, server icon, optional MCP Apps UI, tool-routing evals. Registry metadata: docs/registry.md. Protocol surface: docs/MCP.md.

Contributing

See CONTRIBUTING.md. Changelog: CHANGELOG.md. Issues: GitHub Issues.

License

MIT — see LICENSE.