Skip to content

feat(mcp): Docker MCP infrastructure — milvus, searxng, healthchecks, and claude-context migration#350

Open
pftg wants to merge 6 commits into
masterfrom
emdash/tough-aliens-invent-y4kla
Open

feat(mcp): Docker MCP infrastructure — milvus, searxng, healthchecks, and claude-context migration#350
pftg wants to merge 6 commits into
masterfrom
emdash/tough-aliens-invent-y4kla

Conversation

@pftg

@pftg pftg commented Jul 8, 2026

Copy link
Copy Markdown
Member

Summary

MCP infrastructure hardened and migrated for local Colima development. All services verified end-to-end: Docker startup, health checks, JSON API, vector search indexing, and persistence across restarts.

Changes

compose.mcp.yml

  • Milvus v2.4.0 → v2.6.19 (latest stable), etcd v3.5.5 → v3.5.25, minio 2023 → 2024-05-28
  • Standalone mode: added command: ["milvus", "run", "standalone"] (required by v2.4+, v2.6+)
  • Healthchecks: etcd (etcdctl endpoint health) + minio (bash /dev/tcp) with start_period: 10s
  • Milvus depends_on: switched to condition: service_healthy (eliminates startup race conditions)
  • SearXNG: bind-mounts .dev/searxng/settings.yml:ro enabling html + json search formats

Makefile

  • docker composedocker-compose (Colima uses standalone Docker CLI without compose plugin)
  • Milvus health check: curl /healthnc -z (Milvus v2.4+ has no /health HTTP endpoint on :19530)

Seed config

  • .dev/searxng/settings.yml — enables JSON API out of the box on fresh clones

Claude-Context migration

  • @anthropic/claude-context@zilliz/claude-context-mcp@latest (8 config files)
  • Embeddings: Ollama nomic-embed-text (dim 768)
  • Vector storage: local Milvus at localhost:19530
  • docs/mcp-user-setup.md updated

Verification

  • make mcp-up starts all 4 Docker services (etcd, minio, milvus, searxng)
  • Healthchecks: etcd/minio report healthy before milvus starts
  • make mcp-status: ollama ✓, searxng ✓, milvus ✓
  • SearXNG JSON API: GET :8080/search?q=test&format=json → 28 results
  • Claude-context MCP server starts without errors
  • Codebase indexed: 1,051 files → 6,375 chunks in Milvus
  • Semantic search: relevant results for "blog post pipeline" and "CSS BEM" queries
  • Persistence: indexed data survives MCP server restarts (stored in Milvus volume)
  • Seed config survives docker-compose down -v (bind-mounted from repo)

Paul Keen added 6 commits July 7, 2026 22:57
…I tooling

Add apm.yml manifest (jetthoughts/site@0.1.0) as producer package with:
- 5 instructions (project-rules, voice-guide, icp-target, tdd-enforcement, css-consolidation)
- 3 prompts (blog-pipeline, cover-image, research)
- 18 agents across core/content/ruby/validation
- 5 skills (blog-post-pipeline, css-bem-migration, visual-regression-testing, cover-image-generation, content-voice-enforcement)
- 10 MCP servers (claude-context, context7, brave-search, lean-ctx, chrome-devtools, package-search, github-mcp-server, searxng, ollama, milvus)
- 8 APM targets: claude, copilot, codex, cursor, gemini, opencode, windsurf, kiro

Add compose.mcp.yml + Makefile for per-repo Docker MCP services.
Update Brewfile for ollama, add Makefile for mcp-up/mcp-down/mcp-status.
Refactor thin wrappers (GEMINI.md, QWEN.md, AGENTS.md, .junie/AGENTS.md)
to point to .apm/instructions/ as canonical source.
Commit apm.lock.yaml for reproducible installs.
Add APM getting-started section to README.
- Add command: ["milvus", "run", "standalone"] to compose.mcp.yml
  (milvus v2.4.0 requires explicit standalone entrypoint)
- Switch docker compose → docker-compose in Makefile targets
  (colima with standalone docker-cli lacks compose plugin)
- Fix milvus health check: use nc port check instead of curl /health
  (milvus v2.4.0 has no /health HTTP endpoint on :19530)
- milvusdb/milvus: v2.4.0 → v2.6.19 (latest stable as of Jul 2026)
- quay.io/coreos/etcd: v3.5.5 → v3.5.25 (v2.6 compatible metadata schema)
- minio/minio: 2023-03-20 → 2024-05-28 (v2.6 compatible storage)

All versions match official milvus v2.6 standalone compose template.
Verified: containers start, healthz OK, searxng API returns results.
…ency

- Add etcd healthcheck (etcdctl endpoint health) with start_period
- Add minio healthcheck (bash /dev/tcp port 9000 check) with start_period
  (minio image has no curl/wget/mc/pgrep, uses bash built-in TCP)
- Update milvus depends_on to condition: service_healthy
  Ensures etcd+minio are ready before milvus starts, eliminating
  startup race conditions that caused milvus crash loops.
- Create .dev/searxng/settings.yml enabling html+json search formats
- Bind-mount read-only into searxng container in compose.mcp.yml
- Fixes: JSON API was previously ephemeral (written to Docker volume),
  lost on docker-compose down -v or volume prune
- JSON at :8080/search?q=X&format=json now works out of the box
  on fresh clone after make mcp-up
…ocal Milvus+Ollama

- Migrate from @anthropic/claude-context (GOB file storage) to
  @zilliz/claude-context-mcp@latest (Milvus vector backend)
- Configure Ollama embeddings (nomic-embed-text, dim 768)
- Point to local Milvus (localhost:19530, root:Milvus)
- Update all 8 MCP config files + docs/mcp-user-setup.md

Prerequisites verified:
- Package @zilliz/claude-context-mcp exists (v0.1.15)
- Ollama has nomic-embed-text model
- Milvus (:9091/healthz) and Ollama (:11434/api/tags) reachable
- Server starts without errors
@coderabbitai

coderabbitai Bot commented Jul 8, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 194 files, which is 44 over the limit of 150.

To get a review, narrow the scope:
• coderabbit review --type committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro

Run ID: 4e264a93-e588-4500-af05-acd8a962fa66

📥 Commits

Reviewing files that changed from the base of the PR and between 3763531 and 1948418.

📒 Files selected for processing (194)
  • .agents/skills/blog-post-pipeline/SKILL.md
  • .agents/skills/content-voice-enforcement/SKILL.md
  • .agents/skills/cover-image-generation/SKILL.md
  • .agents/skills/css-bem-migration/SKILL.md
  • .agents/skills/visual-regression-testing/SKILL.md
  • .apm/agents/build-monitor.agent.md
  • .apm/agents/content/content-creator.agent.md
  • .apm/agents/content/content-marketer.agent.md
  • .apm/agents/content/seo-specialist.agent.md
  • .apm/agents/content/tutorial-engineer.agent.md
  • .apm/agents/core/analyst.agent.md
  • .apm/agents/core/coder.agent.md
  • .apm/agents/core/planner.agent.md
  • .apm/agents/core/researcher.agent.md
  • .apm/agents/core/reviewer.agent.md
  • .apm/agents/core/screenshot-guardian.agent.md
  • .apm/agents/core/tester.agent.md
  • .apm/agents/hugo-expert.agent.md
  • .apm/agents/ruby/ruby-coder.agent.md
  • .apm/agents/ruby/ruby-reviewer.agent.md
  • .apm/agents/validation/qa-browser-tester.agent.md
  • .apm/agents/validation/ui-problem-diagnosis.agent.md
  • .apm/agents/validation/ux-browser-validator.agent.md
  • .apm/instructions/css-consolidation.instructions.md
  • .apm/instructions/icp-target.instructions.md
  • .apm/instructions/project-rules.instructions.md
  • .apm/instructions/tdd-enforcement.instructions.md
  • .apm/instructions/voice-guide.instructions.md
  • .apm/prompts/blog-pipeline.prompt.md
  • .apm/prompts/cover-image.prompt.md
  • .apm/prompts/research.prompt.md
  • .apm/skills/blog-post-pipeline/SKILL.md
  • .apm/skills/content-voice-enforcement/SKILL.md
  • .apm/skills/cover-image-generation/SKILL.md
  • .apm/skills/css-bem-migration/SKILL.md
  • .apm/skills/visual-regression-testing/SKILL.md
  • .claude/agents/analyst.md
  • .claude/agents/coder.md
  • .claude/agents/content-marketer.md
  • .claude/agents/planner.md
  • .claude/agents/qa-browser-tester.md
  • .claude/agents/researcher.md
  • .claude/agents/reviewer.md
  • .claude/agents/ruby-coder.md
  • .claude/agents/ruby-reviewer.md
  • .claude/agents/screenshot-guardian.md
  • .claude/agents/tester.md
  • .claude/agents/tutorial-engineer.md
  • .claude/agents/ui-problem-diagnosis.md
  • .claude/agents/ux-browser-validator.md
  • .claude/commands/blog-pipeline.md
  • .claude/commands/cover-image.md
  • .claude/commands/research.md
  • .claude/rules/css-consolidation.md
  • .claude/rules/icp-target.md
  • .claude/rules/project-rules.md
  • .claude/rules/tdd-enforcement.md
  • .claude/rules/voice-guide.md
  • .claude/skills/blog-post-pipeline/SKILL.md
  • .claude/skills/content-voice-enforcement/SKILL.md
  • .claude/skills/cover-image-generation/SKILL.md
  • .claude/skills/css-bem-migration/SKILL.md
  • .claude/skills/visual-regression-testing/SKILL.md
  • .codex/agents/analyst.toml
  • .codex/agents/build-monitor.toml
  • .codex/agents/coder.toml
  • .codex/agents/content-creator.toml
  • .codex/agents/content-marketer.toml
  • .codex/agents/hugo-expert.toml
  • .codex/agents/planner.toml
  • .codex/agents/qa-browser-tester.toml
  • .codex/agents/researcher.toml
  • .codex/agents/reviewer.toml
  • .codex/agents/ruby-coder.toml
  • .codex/agents/ruby-reviewer.toml
  • .codex/agents/screenshot-guardian.toml
  • .codex/agents/seo-specialist.toml
  • .codex/agents/tester.toml
  • .codex/agents/tutorial-engineer.toml
  • .codex/agents/ui-problem-diagnosis.toml
  • .codex/agents/ux-browser-validator.toml
  • .codex/config.toml
  • .cursor/agents/analyst.md
  • .cursor/agents/build-monitor.md
  • .cursor/agents/coder.md
  • .cursor/agents/content-creator.md
  • .cursor/agents/content-marketer.md
  • .cursor/agents/hugo-expert.md
  • .cursor/agents/planner.md
  • .cursor/agents/qa-browser-tester.md
  • .cursor/agents/researcher.md
  • .cursor/agents/reviewer.md
  • .cursor/agents/ruby-coder.md
  • .cursor/agents/ruby-reviewer.md
  • .cursor/agents/screenshot-guardian.md
  • .cursor/agents/seo-specialist.md
  • .cursor/agents/tester.md
  • .cursor/agents/tutorial-engineer.md
  • .cursor/agents/ui-problem-diagnosis.md
  • .cursor/agents/ux-browser-validator.md
  • .cursor/commands/blog-pipeline.md
  • .cursor/commands/cover-image.md
  • .cursor/commands/research.md
  • .cursor/mcp.json
  • .cursor/rules/css-consolidation.mdc
  • .cursor/rules/icp-target.mdc
  • .cursor/rules/project-rules.mdc
  • .cursor/rules/tdd-enforcement.mdc
  • .cursor/rules/voice-guide.mdc
  • .dev/searxng/settings.yml
  • .gemini/commands/blog-pipeline.toml
  • .gemini/commands/cover-image.toml
  • .gemini/commands/research.toml
  • .gemini/settings.json
  • .github/agents/analyst.agent.md
  • .github/agents/build-monitor.agent.md
  • .github/agents/coder.agent.md
  • .github/agents/content-creator.agent.md
  • .github/agents/content-marketer.agent.md
  • .github/agents/hugo-expert.agent.md
  • .github/agents/planner.agent.md
  • .github/agents/qa-browser-tester.agent.md
  • .github/agents/researcher.agent.md
  • .github/agents/reviewer.agent.md
  • .github/agents/ruby-coder.agent.md
  • .github/agents/ruby-reviewer.agent.md
  • .github/agents/screenshot-guardian.agent.md
  • .github/agents/seo-specialist.agent.md
  • .github/agents/tester.agent.md
  • .github/agents/tutorial-engineer.agent.md
  • .github/agents/ui-problem-diagnosis.agent.md
  • .github/agents/ux-browser-validator.agent.md
  • .github/instructions/css-consolidation.instructions.md
  • .github/instructions/icp-target.instructions.md
  • .github/instructions/project-rules.instructions.md
  • .github/instructions/tdd-enforcement.instructions.md
  • .github/instructions/voice-guide.instructions.md
  • .github/prompts/blog-pipeline.prompt.md
  • .github/prompts/cover-image.prompt.md
  • .github/prompts/research.prompt.md
  • .gitignore
  • .junie/AGENTS.md
  • .kiro/settings/mcp.json
  • .kiro/skills/blog-post-pipeline/SKILL.md
  • .kiro/skills/content-voice-enforcement/SKILL.md
  • .kiro/skills/cover-image-generation/SKILL.md
  • .kiro/skills/css-bem-migration/SKILL.md
  • .kiro/skills/visual-regression-testing/SKILL.md
  • .kiro/steering/css-consolidation.md
  • .kiro/steering/icp-target.md
  • .kiro/steering/project-rules.md
  • .kiro/steering/tdd-enforcement.md
  • .kiro/steering/voice-guide.md
  • .mcp.json
  • .opencode/agents/analyst.md
  • .opencode/agents/build-monitor.md
  • .opencode/agents/coder.md
  • .opencode/agents/content-creator.md
  • .opencode/agents/content-marketer.md
  • .opencode/agents/hugo-expert.md
  • .opencode/agents/planner.md
  • .opencode/agents/qa-browser-tester.md
  • .opencode/agents/researcher.md
  • .opencode/agents/reviewer.md
  • .opencode/agents/ruby-coder.md
  • .opencode/agents/ruby-reviewer.md
  • .opencode/agents/screenshot-guardian.md
  • .opencode/agents/seo-specialist.md
  • .opencode/agents/tester.md
  • .opencode/agents/tutorial-engineer.md
  • .opencode/agents/ui-problem-diagnosis.md
  • .opencode/agents/ux-browser-validator.md
  • .opencode/commands/blog-pipeline.md
  • .opencode/commands/cover-image.md
  • .opencode/commands/research.md
  • .windsurf/rules/css-consolidation.md
  • .windsurf/rules/icp-target.md
  • .windsurf/rules/project-rules.md
  • .windsurf/rules/tdd-enforcement.md
  • .windsurf/rules/voice-guide.md
  • .windsurf/workflows/blog-pipeline.md
  • .windsurf/workflows/cover-image.md
  • .windsurf/workflows/research.md
  • AGENTS.md
  • Brewfile
  • GEMINI.md
  • Makefile
  • QWEN.md
  • README.md
  • apm.lock.yaml
  • apm.yml
  • compose.mcp.yml
  • docs/mcp-user-setup.md
  • opencode.json

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch emdash/tough-aliens-invent-y4kla

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant