enoch-mcp
Allows ingestion of ideas from Notion into the Enoch research system.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@enoch-mcp list current runs in progress"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
enoch-mcp
enoch-mcp is a local Model Context Protocol stdio server for a configured Enoch FastAPI control-plane API. It lets MCP clients inspect and operate Enoch through typed tools without exposing a raw shell or reimplementing Enoch business logic.
What it does
Registers MCP tools for Enoch control-plane, Dashboard V1, and core endpoints.
Sends requests to a configured Enoch API URL.
Adds
Authorization: Bearer <token>to API requests using the configured token.Returns Enoch API responses to the MCP client.
Marks read-only tools with MCP read-only annotations.
Marks mutating tools as non-read-only and adds approval metadata.
Keeps safe defaults for dry-run operations.
Optionally probes configured CPU/GPU workers directly through worker APIs or allowlisted SSH diagnostics.
Related MCP server: JSON-RPC
What it does not do
It does not expose a raw shell tool.
It does not accept arbitrary SSH commands.
It does not read or write local artifact files directly.
It does not call language models.
It does not cache, retry, queue, or schedule work.
It does not bypass Enoch authentication or authorization.
Requirements
Python 3.11 or newer
A running Enoch API, normally at
http://localhost:8787An Enoch API bearer token
An MCP client that can run local stdio servers
Installation
Run from PyPI with uvx:
uvx enoch-mcp --api-url http://localhost:8787 --api-token '<token>'Or configure with environment variables:
export ENOCH_API_URL='http://localhost:8787'
export ENOCH_API_TOKEN='<token>'
uvx enoch-mcpFor local development from a checkout:
git clone https://github.com/alias8818/enoch-mcp.git
cd enoch-mcp
uv sync --dev
uv run enoch-mcp --api-url http://localhost:8787 --api-token '<token>'Configuration
Option | Environment variable | Default | Description |
|
|
| Base URL for the Enoch API. |
|
| none | Bearer token for the Enoch API. |
|
| none | Optional JSON map for direct worker diagnostics. |
|
| none | Optional path to a JSON map for direct worker diagnostics. |
The token is required. If it is missing, tool calls fail before making an HTTP request.
Optional worker probes
Worker probes are disabled unless ENOCH_WORKER_PROBES_JSON or ENOCH_WORKER_PROBES_FILE is configured. This keeps the default package a thin control-plane bridge. When configured, the MCP exposes named diagnostics for worker truth: API health, worker-gate dashboard status, active process markers, bounded log tails, disk space, and expected artifact presence.
Example:
{
"cpu": {
"api_url": "http://127.0.0.1:18788",
"api_token": "worker-api-token",
"service_name": "enoch-control-plane",
"project_root": "/srv/enoch/projects"
},
"gpu": {
"api_url": "http://127.0.0.1:18789",
"api_token": "worker-api-token",
"ssh_host": "worker-gpu.example.internal",
"ssh_user": "enoch",
"service_name": "enoch-control-plane",
"project_root": "/srv/enoch/projects",
"log_paths": ["/var/log/enoch-control-plane.log"]
}
}Supported fields per lane:
api_url: worker-gate base URL. Used first for/healthz,/dashboard/api,/dashboard/api/run/{run_id}, and/project-status/{project_id}.api_token: worker bearer token. Treated as secret.ssh_host,ssh_user,ssh_port: optional SSH fallback/debug target.service_name: systemd unit name for service checks and journal tails.project_root,state_dir: fixed worker roots used for disk and artifact checks.log_paths: fixed worker-gate log paths that may be tailed.
SSH probes only run fixed diagnostic commands. They do not accept arbitrary shell input from the MCP client. User-supplied IDs are limited to safe run/project identifier characters, log output is bounded, SSH uses batch mode and no stdin, and the recommended deployment is a read-only worker user or forced-command policy.
MCP client setup
Claude Desktop
{
"mcpServers": {
"enoch": {
"command": "uvx",
"args": ["enoch-mcp"],
"env": {
"ENOCH_API_URL": "http://localhost:8787",
"ENOCH_API_TOKEN": "replace-with-token"
}
}
}
}For local development, point the MCP client at the checkout:
{
"mcpServers": {
"enoch": {
"command": "uv",
"args": ["--directory", "/path/to/enoch-mcp", "run", "enoch-mcp"],
"env": {
"ENOCH_API_URL": "http://localhost:8787",
"ENOCH_API_TOKEN": "replace-with-token"
}
}
}
}Use the equivalent local stdio-server settings for Cursor, Copilot, Windsurf, or other MCP clients.
Development
uv sync --dev
uv run pytest -q
gitleaks detect --no-git --redactPublic-safety note
This package is public. Examples must use placeholders and local URLs only. Do not publish private hostnames, LAN/Tailscale IPs, operator paths, or live tokens.
Available Tools
41 toolsenoch_automation_readinessARead-onlyIdempotent
Canonical long-haul readiness check used to answer whether Enoch can run unattended.
Inputs: no named parameters.
enoch_core_healthARead-onlyIdempotent
Get Enoch core health and operating mode.
Inputs: no named parameters.
enoch_core_paper_candidatesARead-onlyIdempotent
Get the next paper draft or polish candidate from Enoch core.
Inputs: kind (required), mode.
enoch_core_queue_projectionCRead-onlyIdempotent
Get Enoch core queue projection.
Inputs: mode.
enoch_dispatchB
Dispatch the next queued item. Defaults to dry_run=True.
Inputs: requested_by (required), dry_run, force_preflight.
enoch_dispatch_oneC
Dispatch one explicit queued project. Defaults to dry_run=True.
Inputs: project_id (required), requested_by (required), dry_run, force_preflight.
enoch_draft_paperC
Draft the next eligible paper. Defaults to dry_run=True.
Inputs: requested_by (required), dry_run, force.
enoch_eventsCRead-onlyIdempotent
Query the bounded Dashboard V1 event log.
Inputs: event_id, entity_type, entity_id, event_type, +5 more.
enoch_intake_ideasA
Ingest ideas through the current control-plane intake API. Defaults to dry_run=True.
Inputs: ideas (required), idempotency_key, source, dry_run, +6 more.
enoch_intake_notionC
Ingest Notion ideas. Defaults to dry_run=True.
Inputs: ideas (required), idempotency_key, source, dry_run.
enoch_intake_statusDRead-onlyIdempotent
Current control-plane idea intake status.
Inputs: page_size, include_latest_payload.
enoch_lanesCRead-onlyIdempotent
Bounded worker lane state and lane-aware next candidate.
Inputs: no named parameters.
enoch_launch_followupC
Launch the next bounded follow-up candidate. Defaults to dry_run=True.
Inputs: project_id, requested_by, dry_run, max_followup_depth.
enoch_overviewBRead-onlyIdempotent
Bounded Dashboard V1 overview: operator counts, lanes, papers, top actions, events.
Inputs: active_limit, event_limit.
enoch_paper_artifactCRead-onlyIdempotent
Read a paper artifact's content through the Enoch API.
Inputs: paper_id (required), field (required).
enoch_paper_detailBRead-onlyIdempotent
Get paper detail with project, run, events, warnings, and missing artifacts.
Inputs: paper_id (required).
enoch_papers_listBRead-onlyIdempotent
List papers with optional search/status filtering.
Inputs: search, status, page, page_size, +1 more.
enoch_pauseBDestructive
Pause the Enoch queue.
Inputs: reason (required), paused_by, maintenance_mode.
enoch_preflightCIdempotent
Run worker health preflight.
Inputs: payload.
enoch_probe_workerCRead-onlyIdempotent
Optional direct worker probe: health, wake-gate status, processes, and disk.
Inputs: lane, run_id.
enoch_project_detailCRead-onlyIdempotent
Bounded project detail with related queue/run/paper rows and events.
Inputs: project_id (required), event_limit.
enoch_projectsCRead-onlyIdempotent
Bounded Dashboard V1 project list.
Inputs: status, search, cursor, page_size, +1 more.
enoch_queue_alert_checkC
Run queue alert/stale-active reconciliation. Defaults to dry_run=True.
Inputs: requested_by (required), dry_run, refresh_worker, force_notify, +4 more.
enoch_queue_healthBRead-onlyIdempotent
Queue health with worker freshness, alert findings, active runs, and recent events.
Inputs: refresh_worker.
enoch_queue_listBRead-onlyIdempotent
List queue items by status: active, queued, blocked, or paused.
Inputs: status (required), search, page_size.
enoch_reconcile_stale_laneC
Explain or reconcile one stale active lane. Defaults to dry_run=True.
Inputs: requested_by (required), dry_run, refresh_worker, lane_key, +3 more.
enoch_research_qualityARead-onlyIdempotent
Latest research quality readiness report.
Inputs: no named parameters.
enoch_research_run_cycleC
Run one bounded research autopilot cycle. Defaults to dry_run=True.
Inputs: requested_by (required), dry_run, refresh_worker.
enoch_resumeC
Resume the Enoch queue.
Inputs: resumed_by, maintenance_mode.
enoch_review_checklistC
Update a review checklist item.
Inputs: paper_id (required), item_id (required), status (required), note.
enoch_review_claimC
Claim a paper review.
Inputs: paper_id (required), claimed_by (required).
enoch_review_nextCRead-onlyIdempotent
Get the next unreviewed publication review candidate.
Inputs: paper_status.
enoch_reviews_listCRead-onlyIdempotent
List publication reviews with checklist progress and rank scores.
Inputs: review_status, paper_status, search, page, +2 more.
enoch_review_statusD
Update review status.
Inputs: paper_id (required), review_status (required), updated_by.
enoch_rewrite_draftC
Rewrite a paper draft through Enoch's API.
Inputs: paper_id (required), requested_by (required), force.
enoch_run_detailCRead-onlyIdempotent
Bounded run detail with related queue/paper rows and events.
Inputs: run_id (required), event_limit.
enoch_runsCRead-onlyIdempotent
Bounded Dashboard V1 run list.
Inputs: state, project_id, search, cursor, +2 more.
enoch_statusCRead-onlyIdempotent
Full system status: dispatch safety, flags, counts, active items, warnings, conflicts.
Inputs: refresh_worker.
enoch_v1_queueCRead-onlyIdempotent
Bounded Dashboard V1 queue list with cursor pagination.
Inputs: queue, status, search, cursor, +2 more.
enoch_worker_artifactsCRead-onlyIdempotent
Optional expected artifact presence check for a worker project/run.
Inputs: lane, project_id, run_id.
enoch_worker_logsBRead-onlyIdempotent
Optional bounded worker log tail from allowlisted log sources.
Inputs: lane, log_kind, run_id, lines.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 41 tools
Many tools have overlapping purposes (e.g., dispatch vs dispatch_one, multiple queue inspection tools, and paper-related actions). Descriptions differentiate them, but the large number of similar operations creates potential for misselection by an agent.
Most tools follow a consistent enoch_verb_noun pattern in snake_case. A few deviate (e.g., enoch_worker_artifacts, enoch_worker_logs) but overall the pattern is clear and predictable.
With 41 tools, the surface is quite large. While the domain spans multiple subsystems (core, queue, papers, reviews, workers), the number feels heavy and could benefit from consolidation or more granular grouping.
The tool set covers core operations like health, queue management, paper drafting, and review workflows. However, there are missing CRUD operations for projects and some actions lack explicit commit/undo counterparts.
Maintenance
Related MCP Connectors
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
MCP server exposing the Backtest360 engine API as tools for AI agents.
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
MCP server for interacting with the Supabase platform
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA MCP server that exposes OpenAPI schema information to LLMs like Claude. This server allows an LLM to explore and understand large OpenAPI schemas through a set of specialized tools, without needing to load the whole schema into the context308 npm50MIT
- AlicenseBqualityDmaintenanceA Model Context Protocol (MCP) server based on OpenRPC, providing JSON-RPC function invocation and method discovery services.21Apache 2.0

Enapter MCP Serverofficial
AlicenseNot gradedqualityDmaintenanceMCP server providing tools for AI-agents to interact with Enapter EMS.Apache 2.0- FlicenseNot gradedqualityDmaintenanceAn MCP server that dynamically reads OpenAPI specs and registers every endpoint as an LLM-callable tool with automatic change detection and hot reload.1-