333 lines
8.8 KiB
Markdown
Executable File
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.
|