feat: external MCP server support + HA MCP PoC #4

Merged
michal merged 2 commits from feat/external-mcp-servers into main 2026-02-22 12:39:19 +00:00
Owner

Summary

  • Add externalUrl, command, and containerPort fields to McpServer schema
  • Support external (non-containerized) MCP servers with virtual instances
  • Implement streamable-http proxy with Mcp-Session-Id session management and SSE response parsing
  • Pass custom Docker commands through to container creation
  • Add HA MCP example manifest (examples/ha-mcp.yaml)

PoC Verified

  • mcpctl apply examples/ha-mcp.yaml → registers server + profile
  • mcpctl instance start ha-mcp → creates virtual RUNNING instance
  • Proxy tools/list through mcpd → returns 24 HA MCP tools

Test plan

  • 597 existing tests pass (57 test files)
  • End-to-end proxy verified against live HA MCP instance

🤖 Generated with Claude Code

## Summary - Add `externalUrl`, `command`, and `containerPort` fields to McpServer schema - Support external (non-containerized) MCP servers with virtual instances - Implement streamable-http proxy with `Mcp-Session-Id` session management and SSE response parsing - Pass custom Docker commands through to container creation - Add HA MCP example manifest (`examples/ha-mcp.yaml`) ## PoC Verified - `mcpctl apply examples/ha-mcp.yaml` → registers server + profile - `mcpctl instance start ha-mcp` → creates virtual RUNNING instance - Proxy `tools/list` through mcpd → returns 24 HA MCP tools ## Test plan - [x] 597 existing tests pass (57 test files) - [x] End-to-end proxy verified against live HA MCP instance 🤖 Generated with [Claude Code](https://claude.com/claude-code)
michal added 1 commit 2026-02-22 12:21:39 +00:00
feat: add external MCP server support with streamable-http proxy
Some checks failed
CI / lint (pull_request) Has been cancelled
CI / typecheck (pull_request) Has been cancelled
CI / test (pull_request) Has been cancelled
CI / build (pull_request) Has been cancelled
CI / package (pull_request) Has been cancelled
0482944056
Support non-containerized MCP servers via externalUrl field and add
streamable-http session management for HA MCP proof of concept.

- Add externalUrl, command, containerPort fields to McpServer schema
- Skip Docker orchestration for external servers (virtual instances)
- Implement streamable-http proxy with Mcp-Session-Id session management
- Parse SSE-framed responses from streamable-http endpoints
- Add command passthrough to Docker container creation
- Create HA MCP example manifest (examples/ha-mcp.yaml)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
michal added 1 commit 2026-02-22 12:35:01 +00:00
test: add integration test for full MCP server flow
Some checks failed
CI / lint (pull_request) Has been cancelled
CI / typecheck (pull_request) Has been cancelled
CI / test (pull_request) Has been cancelled
CI / build (pull_request) Has been cancelled
CI / package (pull_request) Has been cancelled
c07da826a0
Tests the complete lifecycle through Fastify routes with in-memory
repositories and a fake streamable-http MCP server:
- External server: register → start virtual instance → proxy tools/list
- Managed server: register with dockerImage → start container → verify spec
- Full lifecycle: register → start → list → stop → remove → delete
- Proxy auth enforcement
- Server update flow
- Error handling (Docker failure → ERROR status)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
michal merged commit d6a80fc03d into main 2026-02-22 12:39:19 +00:00
michal deleted branch feat/external-mcp-servers 2026-02-22 12:39:19 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: michal/mcpctl#4