MCP-Drift-State-Tracker/BLOG.md

333 lines
8.8 KiB
Markdown
Executable File

# Integrating MCP Drift State Tracker with Your AI Coding Stack
Integration guides for wiring the tracker into production tooling. All configs
derive from `controller_config.json` and `mcp_config.json` — these reflect the
actual service topology the tracker targets.
---
## 1. Odysseus
Local AI coding orchestration proxy on port 7000 (`controller_config.json`).
Odysseus sits between the LLM backend (Ollama) and the coding frontend,
managing tool calls, context windows, and session state.
Drift tracking is critical here. Odysseus manages long coding sessions where
the LLM iterates on files across dozens of turns. By turn 30, the model drops
imports, leaves `TODO` stubs, and produces structurally incomplete code. The
tracker operates as a post-edit audit gate.
### Config
```json
{
"mcpServers": {
"mcp-drift-state-tracker": {
"command": "node",
"args": ["${MCP_TRACKER_PATH}/dist/index.js"],
"env": {
"MCP_CONTROLLER_PORT": "7000",
"MCP_CONTROLLER_MODEL": "ollama/llama3"
}
}
}
}
```
### Workflow
Invoke `scan_workspace` on the target directory after each significant edit
cycle. When the drift score exceeds the configured threshold, Odysseus
re-prompts the LLM to correct the flagged files. This creates a closed-loop
quality gate: the model writes code, the tracker audits it, Odysseus feeds the
audit results back into the next generation pass.
### Recommended System Prompt Addition
> After editing more than 5 files in a session, run `get_drift_report` and fix
> every file with a drift score above 0.3 before concluding.
---
## 2. Hermes
Orchestration proxy on port 8000. Hermes handles focused, single-task coding
with strict tool governance.
### Config
```json
{
"mcpServers": {
"mcp-drift-state-tracker": {
"command": "node",
"args": ["${MCP_TRACKER_PATH}/dist/index.js"],
"env": {
"MCP_CONTROLLER_PORT": "8000",
"MCP_CONTROLLER_MODEL": "ollama/llama3"
}
}
}
}
```
### Workflow
Register `scan_file` as a post-write hook in Hermes's tool registry. Every time
Hermes instructs the LLM to write or modify a file, it immediately follows with
`scan_file` on that path. When stubs or missing imports are detected, Hermes
re-issues the write instruction with the audit feedback appended to the context.
This is lighter-weight than `scan_workspace` and aligns with Hermes's
task-oriented design. Reserve `scan_workspace` for session-end review.
---
## 3. Open WebUI
Browser-based LLM interface on port 8080. Provides Ollama with workspace
management, model selection, and MCP server support via its Functions/Tools
system.
### Config
Navigate to **Admin Settings > Tools > MCP Servers** and add:
| Field | Value |
|---|---|
| Name | `mcp-drift-state-tracker` |
| Command | `node` |
| Args | `${MCP_TRACKER_PATH}/dist/index.js` |
Or add to Open WebUI's `functions.yaml`:
```yaml
mcp_servers:
mcp-drift-state-tracker:
command: node
args:
- "${MCP_TRACKER_PATH}/dist/index.js"
```
### Workflow
Open WebUI exposes the tracker directly in the chat interface. After the LLM
completes a multi-file change, the user types "check my code for drift" — this
triggers `scan_workspace` via the MCP tool and returns a structured report in
the chat.
### Recommended System Prompt Addition
> After completing any multi-file code change, automatically run
> `scan_workspace` on the project directory and present the drift report.
---
## 4. Claude Desktop / Claude Code
Anthropic's desktop and CLI clients. MCP servers are first-class citizens.
### Config
Add to `claude_desktop_config.json`:
```json
{
"mcpServers": {
"mcp-drift-state-tracker": {
"command": "node",
"args": ["${MCP_TRACKER_PATH}/dist/index.js"]
}
}
}
```
### Workflow
Claude maintains strong context in single-session coding. Drift appears in
long refactoring sessions regardless. Run `scan_file` after each file write and
`scan_workspace` at session end. Claude interprets drift reports and
corrects flagged stubs on the first retry pass.
---
## 5. Cursor / Windsurf / VS Code (Continue.dev)
IDE-native AI coding assistants. Cursor and Windsurf provide built-in MCP
support. Continue.dev adds MCP integration to vanilla VS Code.
### Config (Cursor / Windsurf)
Add to the IDE's MCP settings (`.cursor/mcp.json` or the MCP settings panel):
```json
{
"mcpServers": {
"mcp-drift-state-tracker": {
"command": "node",
"args": ["${MCP_TRACKER_PATH}/dist/index.js"]
}
}
}
```
### Config (Continue.dev)
```json
{
"mcp": {
"servers": {
"mcp-drift-state-tracker": {
"command": "node",
"args": ["${MCP_TRACKER_PATH}/dist/index.js"]
}
}
}
}
```
### Workflow
IDE integrations provide the tightest feedback loop. When the AI assistant
writes a file, configure a post-save hook to run `scan_file` on the current
buffer. Drift results appear inline or in a side panel. Incomplete code is
catched before it enters version control.
---
## 6. Dify Engine
Workflow automation platform for LLM applications on port 5001. Dify builds
multi-step AI pipelines with conditional branching, tool calls, and
human-in-the-loop stages.
### Integration Method
Dify does not consume MCP servers natively. Wrap the tracker as an external
tool via Dify's **API Tool** node.
1. Host the tracker as a persistent process:
```bash
node ${MCP_TRACKER_PATH}/dist/index.js
```
2. In Dify, create an **HTTP Request** tool node targeting the tracker's MCP
transport endpoint. Stdio-based servers require an adapter such as
`mcp-proxy` to expose them over HTTP.
3. Alternatively, define a Dify **Function Tool** that shells out to the tracker:
```python
import subprocess
import json
def scan_workspace(path: str) -> dict:
result = subprocess.run(
["node", "${MCP_TRACKER_PATH}/dist/index.js"],
input=json.dumps({"tool": "scan_workspace", "arguments": {"path": path}}),
capture_output=True,
text=True
)
return json.loads(result.stdout)
```
### Workflow
Place the drift check as a conditional gate between the **Code Generation** step
and the **Output / Commit** step. When `scan_workspace` returns a drift score
above the configured threshold, route back to the generation step with the
audit feedback injected into the prompt. This creates an automated quality loop
without human intervention.
---
## 7. Aider
Terminal-based AI pair programmer with MCP support.
### Config
CLI flag:
```bash
aider --mcp-server "mcp-drift-state-tracker:node:${MCP_TRACKER_PATH}/dist/index.js"
```
Or in `.aider.conf.yml`:
```yaml
mcp-servers:
mcp-drift-state-tracker:
command: node
args: ["${MCP_TRACKER_PATH}/dist/index.js"]
```
### Workflow
Aider operates in long terminal sessions with large repos and is prone to
context erosion. The tracker catches semantic incompleteness that static
linters miss — a function that compiles but contains a `pass` body, for
example. Run `scan_file` on every file Aider touches. Run `scan_workspace`
every 10 commits to catch drift in files the model edited earlier in the
session.
---
## 8. Cline (VS Code Extension)
Autonomous AI coding agent for VS Code. Creates files, runs commands, and
manages entire development tasks.
### Config
```json
{
"mcpServers": {
"mcp-drift-state-tracker": {
"command": "node",
"args": ["${MCP_TRACKER_PATH}/dist/index.js"]
}
}
}
```
### Workflow
Cline's autonomy makes drift tracking essential. A single task like "implement
user authentication across the backend" creates 8-10 files in one run.
Configure Cline to run `scan_workspace` as its final step before marking a task
complete. Files with high drift scores are flagged for a correction pass.
---
## Scan Strategy
| Trigger | Tool | Rationale |
|---|---|---|
| After every file edit | `scan_file` | Immediate feedback, lowest latency |
| After multi-file refactor | `scan_workspace` | Catches cross-file drift |
| Session end | `get_drift_report` | Summary for human review |
| New session start | `get_drift_report` | Establishes baseline from prior state |
| Pre-commit | `scan_workspace` | Quality gate on every commit |
## Extending Language Profiles
Add project-specific stub patterns to the relevant language profile's `stubs`
array in `language_profiles.json`:
```json
".ts": {
"stubs": ["pass", "TODO", "FIXME", "throw new Error(\"not implemented\")", "// @ts-ignore"]
}
```
## Relationship to Static Analysis
The tracker does not replace ESLint, Ruff, Clippy, or any static analysis tool.
It targets a distinct failure class: semantic incompleteness that compiles but
represents degraded LLM output. Run static analysis for correctness. Run drift
tracking for completeness. Both are necessary.
---
All integration configs reference the service ports and model names from
`controller_config.json`. Set `MCP_TRACKER_PATH` to the absolute path of this
repository and all configs resolve correctly.