# mdflow — Context OS for AI Coding Agents (oci · ghcr.io/yubinbin32-ops/mdflow:0.3.7)

Context OS for AI coding agents: task-scoped AST context, verified mutation, and rollback.

- Trust score: 31/100 (low)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-09-20

## Components

- oci · `ghcr.io/yubinbin32-ops/mdflow:0.3.7`: 31/100 (this document), [markdown](https://verifymcp.io/servers/yubinbin32-ops-mdflow/ghcr-io-yubinbin32-ops-mdflow-0-3-7.md), [page](https://verifymcp.io/servers/yubinbin32-ops-mdflow/ghcr-io-yubinbin32-ops-mdflow-0-3-7)

## Channel facts

- Registry: `oci`
- Package: `ghcr.io/yubinbin32-ops/mdflow:0.3.7`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-09-20.

- **Supply Chain Security**: 0/100
  - Malware scan not yet available for this package.
  - Known CVEs could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.
  - Install-script risk not yet assessed.
  - Dependency health could not be checked: this artifact ships no SBOM, so there is no dependency list to read. Publishing one would let us assess it.
- **Provenance & Transparency**: 10/100
  - Repository check failed: the declared repository URL redirects; it must resolve directly.
  - Provenance check failed: no build-provenance attestation is published.
  - License check failed: no license is declared.
  - Actively maintained (last published 8 days ago).
  - Publishes a security disclosure policy (SECURITY.md).
- **Schema Quality & AI Usability**: 52/100
  - AI-judged instruction clarity (fair).
  - Context-footprint check failed: tool/resource definitions use about 3341 tokens (~107/item across 31 items; 31 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 30/100
  - Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 67/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 31 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 32 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

**Unverified: 1 category.** A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.

## Install

### How do I install the mdflow — Context OS for AI Coding Agents MCP server?

mdflow — Context OS for AI Coding Agents runs locally as a container image, launched with docker run --rm -i ghcr.io/yubinbin32-ops/mdflow:0.3.7. Ready-made configuration for Claude, Cursor, VS Code, Codex and 3 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add yubinbin32-ops-mdflow -- docker run --rm -i ghcr.io/yubinbin32-ops/mdflow:0.3.7
```

### Cursor

```json
{
  "mcpServers": {
    "yubinbin32-ops-mdflow": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/yubinbin32-ops/mdflow:0.3.7"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "yubinbin32-ops-mdflow": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/yubinbin32-ops/mdflow:0.3.7"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add yubinbin32-ops-mdflow -- docker run --rm -i ghcr.io/yubinbin32-ops/mdflow:0.3.7
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "yubinbin32-ops-mdflow": {
      "type": "local",
      "command": [
        "docker",
        "run",
        "--rm",
        "-i",
        "ghcr.io/yubinbin32-ops/mdflow:0.3.7"
      ],
      "enabled": true
    }
  }
}
```

### Hermes

```yaml
mcp_servers:
  yubinbin32-ops-mdflow:
    command: "docker"
    args: ["run", "--rm", "-i", "ghcr.io/yubinbin32-ops/mdflow:0.3.7"]
```

### Netclaw

```json
{
  "McpServers": {
    "yubinbin32-ops-mdflow": {
      "Transport": "stdio",
      "Command": "docker",
      "Arguments": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/yubinbin32-ops/mdflow:0.3.7"
      ]
    }
  }
}
```

### Other

```json
{
  "mcpServers": {
    "yubinbin32-ops-mdflow": {
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "ghcr.io/yubinbin32-ops/mdflow:0.3.7"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-09-19 (score 31, +4)

- [functional improvement] Stability: unverified → 0.27

### 2026-09-12 (score 27, −5)

- [security regression] Source repository: pass → fail

### 2026-09-11 (score 32)

First indexed and scored.

## MCP tools (31)

### `project_register` (~67 tokens)

Register an existing directory as an mdflow project. This creates only .mdflow/project.json and is idempotent when the descriptor already exists.

Input parameters:

- `id` (string)
- `includeStructured` (boolean)
- `name` (string)
- `projectRoot` (string, required)

### `project_map` (~68 tokens)

Read a compact project map with architecture coverage, ordered Plans, Chain paths, explicit integration gates, and source-sync status without loading entity bodies.

Input parameters:

- `includeStructured` (boolean)
- `locale` (string)
- `projectRoot` (string)
- `taskContextId` (string)

### `decision_list` (~74 tokens)

Read the compact project-scoped Decision index. Bodies, rationale, alternatives, and consequences are omitted; use decision_open or entity_open(type=decision) for one record.

Input parameters:

- `includeStructured` (boolean)
- `locale` (string)
- `projectRoot` (string)
- `taskContextId` (string)

### `decision_open` (~77 tokens)

Open one architecture Decision. Returns its rationale, alternatives, consequences, scope, supersession, and compact History.

Input parameters:

- `historyLimit` (integer)
- `id` (string, required)
- `includeStructured` (boolean)
- `locale` (string)
- `projectRoot` (string)
- `taskContextId` (string)

### `chain_code_stream` (~98 tokens)

Return locator-only source indexes along a Chain: path, symbol, signature, derived line range, source status, and contract. Never returns implementation bodies.

Input parameters:

- `chainId` (string, required)
- `includeStructured` (boolean)
- `maxLinesPerSymbol` (integer)
- `maxTotalChars` (integer)
- `mode` (string)
- `projectRoot` (string)
- `taskContextId` (string)

### `source_sync` (~79 tokens)

Scan current files for bound symbols without loading source into the response. Reports moved, changed, missing, or ambiguous bindings and affected Blocks/Chains.

Input parameters:

- `includeStructured` (boolean)
- `includeUnchanged` (boolean)
- `projectRoot` (string)
- `sinceRevision` (integer)
- `taskContextId` (string)

### `source_binding_suggest` (~87 tokens)

Suggest source bindings for a Block from AST symbols and project semantics. Suggestions are read-only; use source_binding_accept to persist an explicitly chosen candidate.

Input parameters:

- `blockId` (string, required)
- `includeStructured` (boolean)
- `limit` (integer)
- `maxFiles` (integer)
- `projectRoot` (string)
- `taskContextId` (string)

### `source_binding_accept` (~90 tokens)

Persist explicitly selected AST source binding candidates for a Block. Every candidate is re-resolved against current source before a SourceRef is created.

Input parameters:

- `actor` (string)
- `bindings` (array, required)
- `blockId` (string, required)
- `includeStructured` (boolean)
- `projectRoot` (string)
- `reason` (string)
- `taskContextId` (string)

### `block_seal` (~111 tokens)

Seal a verified Block implementation as complete. Requires valid current SourceBindings and a fresh passed direct Checkpoint; an executionId, when supplied, must be a successful receipt cited by that Checkpoint.

Input parameters:

- `actor` (string)
- `blockId` (string, required)
- `checkpointId` (string)
- `executionId` (string)
- `includeStructured` (boolean)
- `projectRoot` (string)
- `reason` (string)
- `taskContextId` (string)

### `run_command` (~109 tokens)

Run one project-local command and return only a redacted, compressed terminal summary. Raw stdout/stderr never enters the MCP response; use this gateway for tests, builds, and mutation verification.

Input parameters:

- `command` (string, required)
- `cwd` (string)
- `executionKind` (string)
- `includeStructured` (boolean)
- `maxChars` (integer)
- `projectRoot` (string)
- `taskContextId` (string)
- `timeoutMs` (integer)

### `checkpoint_refresh_candidates` (~70 tokens)

List stale checkpoints that a recorded execution receipt can refresh. Does not auto-pass checkpoints; it only maps changed bindings onto retest_required items.

Input parameters:

- `executionId` (string)
- `includeStructured` (boolean)
- `projectRoot` (string)
- `taskContextId` (string)

### `log_sanitize` (~94 tokens)

Sanitize build, test, or terminal command outputs. Strips ANSI noise, collapses routine compiler stdout, and isolates actionable failure stack traces to protect context window from token flooding.

Input parameters:

- `exitCode` (integer)
- `includeStructured` (boolean)
- `maxChars` (integer)
- `projectRoot` (string)
- `rawOutput` (string, required)
- `taskContextId` (string)

### `foundation_plan_create` (~151 tokens)

Generate one Foundation Plan from every non-deprecated unimplemented Block. Because this is an explicit implementation/verification Plan, the operation creates missing atomic Block checkpoints, direct Block PlanChanges, dependency-ordered parallel steps, Chain integration gates, and a final Plan acceptance gate in one transaction; plain architecture-only create_block does not.

Input parameters:

- `actor` (string)
- `gitHead` (string|null)
- `goal` (string)
- `id` (string)
- `includeStructured` (boolean)
- `projectRoot` (string)
- `reason` (string)
- `requiredEvidenceLevel` (string)
- `taskContextId` (string)
- `title` (string)

### `context_for_task` (~95 tokens)

Get a budgeted Markdown context pack for the current development task. Use at task start and expand only selected refs.

Input parameters:

- `budgetChars` (integer)
- `focusRefs` (array)
- `includeStructured` (boolean)
- `locale` (string)
- `maxChars` (integer)
- `projectRoot` (string)
- `task` (string, required)
- `taskContextId` (string)

### `plan_context` (~97 tokens)

Read one Plan as a compact hierarchical development document: overview, ordered ChainScopes, inline Block/Link/Chain changes, checkpoint gates, and exact source refs. This is the primary read before implementing a Plan.

Input parameters:

- `id` (string, required)
- `includeStructured` (boolean)
- `locale` (string)
- `maxChars` (integer)
- `projectRoot` (string)
- `taskContextId` (string)

### `timeline_view` (~68 tokens)

Read the unified project Timeline: execution phases, ordered plans (P0 > P1 > P2), and current active cursor (nowDoing, nextUp, lastFinished).

Input parameters:

- `includeStructured` (boolean)
- `projectRoot` (string)
- `taskContextId` (string)

### `timeline_sync` (~105 tokens)

Synchronize development cursor and active focus across conversations. Updates nowDoing, nextUp, and active step in the timeline.

Input parameters:

- `includeStructured` (boolean)
- `lastFinished` (string)
- `nextUp` (string)
- `nowDoing` (string)
- `planId` (string)
- `projectRoot` (string)
- `stepId` (string)
- `taskContextId` (string)
- `touchedFiles` (array)

### `step_advance` (~95 tokens)

Advance the active step of a Plan to complete, automatically updating progress and pointing nowDoing to the next step.

Input parameters:

- `includeStructured` (boolean)
- `nextStepId` (string)
- `planId` (string)
- `projectRoot` (string)
- `status` (string)
- `stepId` (string)
- `summary` (string)
- `taskContextId` (string)

### `changes_since` (~84 tokens)

Read only graph/checkpoint mutations after a known change sequence. Use this for live synchronization and compact read-back instead of reloading the project.

Input parameters:

- `includeStructured` (boolean)
- `limit` (integer)
- `projectRoot` (string)
- `sequence` (integer)
- `sourceSyncRevision` (integer)
- `taskContextId` (string)

### `change_set_revert` (~124 tokens)

Create a new reverse ChangeSet for a safe, fully reversible update-only ChangeSet. Original History is preserved; stale or unsupported changes are rejected instead of partially reverted.

Input parameters:

- `actor` (string)
- `chainScopeId` (string)
- `changeSetId` (string, required)
- `gitHead` (string|null)
- `includeStructured` (boolean)
- `planId` (string)
- `projectRoot` (string)
- `reason` (string)
- `task` (string)
- `taskContextId` (string)

### `entity_open` (~82 tokens)

Open one Block, Chain, Link, Plan, or Decision with only relevant details and recent History.

Input parameters:

- `historyLimit` (integer)
- `id` (string, required)
- `includeStructured` (boolean)
- `locale` (string)
- `projectRoot` (string)
- `taskContextId` (string)
- `type` (string, required)

### `checkpoint_list` (~132 tokens)

List checkpoints by status, target, Plan or ChainScope, including standalone checkpoints that are not referenced by any Plan. Use this for a compact verification inbox instead of opening every entity.

Input parameters:

- `chainScopeId` (string)
- `includeStructured` (boolean)
- `limit` (integer)
- `locale` (string)
- `planId` (string)
- `projectRoot` (string)
- `status` (string)
- `targetId` (string)
- `targetType` (string)
- `taskContextId` (string)
- `unassignedOnly` (boolean)

### `graph_search` (~80 tokens)

Search graph entities and source paths without loading the entire project.

Input parameters:

- `includeStructured` (boolean)
- `kinds` (array)
- `limit` (integer)
- `locale` (string)
- `projectRoot` (string)
- `query` (string, required)
- `states` (array)
- `taskContextId` (string)

### `graph_mutate` (~209 tokens)

Atomically create or patch Blocks, project-scoped Decisions, global Links, Chain paths, independent Plans, atomic Checkpoints, Background scopes, Decision scopes, and source refs. Decisions are not Canvas Blocks and never enter Block/Chain/Plan coverage. A plain create_block records architecture only; use create_checkpoint in the same ChangeSet when a requirement, Plan, Chain gate, or explicit verification request makes the check necessary. Link kinds are flows_to, calls, reads, writes, depends_on, implements, validates, constrains, and supersedes. Keep each call small and provide expectedRevision for updates.

Input parameters:

- `actor` (string)
- `chainScopeId` (string)
- `gitHead` (string|null)
- `includeStructured` (boolean)
- `operations` (array, required)
- `planId` (string)
- `projectRoot` (string)
- `reason` (string, required)
- `task` (string)
- `taskContextId` (string)

### `graph_patch` (~130 tokens)

Apply a compact mdflow/1 Markdown-like patch. The server expands it into the same atomic ChangeSet used by graph_mutate, preserves omitted fields, and can create an atomic Block checkpoint with checkpoint=auto.

Input parameters:

- `actor` (string)
- `chainScopeId` (string)
- `gitHead` (string|null)
- `includeStructured` (boolean)
- `patch` (string, required)
- `planId` (string)
- `projectRoot` (string)
- `reason` (string)
- `task` (string)
- `taskContextId` (string)

### `graph_flow` (~93 tokens)

Declare architectural flows and pipelines using natural arrow expressions like 'block:A -> block:B -> block:C' or 'A -[calls]-> B'. Automatically creates or updates links without complex JSON crafting.

Input parameters:

- `actor` (string)
- `flow` (string, required)
- `includeStructured` (boolean)
- `projectRoot` (string)
- `reason` (string)
- `taskContextId` (string)

### `architecture_link_suggest` (~61 tokens)

Suggest high-confidence architectural links for an architecture Block based on AST source imports and layered conventions.

Input parameters:

- `blockId` (string, required)
- `includeStructured` (boolean)
- `projectRoot` (string)
- `taskContextId` (string)

### `architecture_connect` (~101 tokens)

Connect two architecture Blocks with a validated Link in one simple call without crafting manual operations.

Input parameters:

- `actor` (string)
- `contract` (string)
- `includeStructured` (boolean)
- `kind` (string)
- `label` (string)
- `projectRoot` (string)
- `reason` (string)
- `sourceId` (string, required)
- `targetId` (string, required)
- `taskContextId` (string)

### `checkpoint_record` (~212 tokens)

Create or update a checkpoint with evidence. Passed checkpoints are the only basis for healthy completion states.

Input parameters:

- `actor` (string)
- `aggregationPolicy` (object)
- `chainScopeId` (string)
- `checkpointKind` (string)
- `coverage` (string)
- `criteria` (string)
- `eligibleAfterChildren` (boolean)
- `evidence` (array)
- `evidenceExecutionIds` (array)
- `evidenceLevel` (string)
- `expectedRevision` (integer)
- `gitHead` (string|null)
- `id` (string)
- `includeStructured` (boolean)
- `invalidatedAt` (string|null)
- `planId` (string)
- `projectRoot` (string)
- `requiredEvidenceLevel` (string)
- `status` (string, required)
- `targetId` (string, required)
- `targetType` (string, required)
- `taskContextId` (string)
- `title` (string, required)

### `graph_validate` (~54 tokens)

Validate global graph references, Chain paths, Plan targets, Background scopes, contracts, and checkpoint-backed completion.

Input parameters:

- `includeStructured` (boolean)
- `projectRoot` (string)
- `taskContextId` (string)

### `graph_status` (~62 tokens)

Inspect project architecture health, live drift detection, isolated blocks, ghost blocks with code, and pending verification gates.

Input parameters:

- `includeStructured` (boolean)
- `locale` (string)
- `projectRoot` (string)
- `taskContextId` (string)

## Diagnostics

Captured diagnostic sections: Provenance. The full working is on the page: https://verifymcp.io/servers/yubinbin32-ops-mdflow/ghcr-io-yubinbin32-ops-mdflow-0-3-7#diagnostics

## Score history

- 2026-09-20: 31
- 2026-09-19: 31
- 2026-09-18: 27
- 2026-09-17: 27
- 2026-09-16: 27
- 2026-09-15: 27
- 2026-09-14: 27
- 2026-09-13: 27
- 2026-09-12: 27
- 2026-09-11: 32

## Common questions

### What is the mdflow — Context OS for AI Coding Agents MCP server?

mdflow — Context OS for AI Coding Agents is an MCP server listed in the public MCP registry as io.github.yubinbin32-ops/mdflow. Context OS for AI coding agents: task-scoped AST context, verified mutation, and rollback. This page covers its container image (ghcr.io/yubinbin32-ops/mdflow:0.3.7).

### Is the mdflow — Context OS for AI Coding Agents MCP server safe to use?

mdflow — Context OS for AI Coding Agents scores 31 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the mdflow — Context OS for AI Coding Agents MCP server expose?

mdflow — Context OS for AI Coding Agents exposes 31 tools: project_register, project_map, decision_list, decision_open, chain_code_stream, and 26 more. Their descriptions and schemas cost roughly 3,059 tokens of context every time the server is loaded.

### Is the mdflow — Context OS for AI Coding Agents MCP server still maintained?

mdflow — Context OS for AI Coding Agents is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Changelog RSS feed: https://verifymcp.io/servers/yubinbin32-ops-mdflow/ghcr-io-yubinbin32-ops-mdflow-0-3-7.xml
- Changelog JSON feed: https://verifymcp.io/servers/yubinbin32-ops-mdflow/ghcr-io-yubinbin32-ops-mdflow-0-3-7.json
- HTML version of this page: https://verifymcp.io/servers/yubinbin32-ops-mdflow/ghcr-io-yubinbin32-ops-mdflow-0-3-7
