# SSH-MCP Server Model Context Protocol (MCP) server providing SSH-based infrastructure access for Claude Code and Agent Zero. ## Overview The SSH-MCP server enables Claude Code and Agent Zero to securely access and manage the OBNH/OBR infrastructure through a standardized MCP interface. ## Features - **7 Infrastructure Management Tools**: - `ssh_list_hosts` - List all available infrastructure hosts - `ssh_exec` - Execute commands on remote hosts - `ssh_get_file` / `ssh_put_file` - File operations - `ssh_docker_ps` - List Docker containers - `lxc_list` / `lxc_exec` - LXC container management - **MCP 2025 Specification Compliant** - **HTTP/SSE Transport** for Claude Code integration - **SSH Key-Based Authentication** (Ed25519) - **Systemd Service** for automatic startup ## Deployment - **Server**: LXC Container 110 at 10.50.0.110 - **HTTP API**: http://10.50.0.110:8081 - **Status**: Fully operational ## Infrastructure Access The SSH-MCP server provides access to: - **photon.obnh.io** (46.247.109.251) - Primary test target, Debian, Traefik, Gitea, Mastodon - **proton.obr.sh** (72.61.83.117) - Development server, Ubuntu, Traefik, Gitea - **fry.obr.sh** - Migration target for photon services - **Proxmox** (10.50.0.72) - Host with all LXC/VMs in 10.50.0.0/24 ## Documentation - [Complete Deployment Guide](docs/ssh-mcp-server-complete.md) - [Git Collaboration Setup](docs/git-collaboration.md) ## Quick Start ### Test the HTTP API ```bash # Health check curl http://10.50.0.110:8081/ # List available tools curl -X POST http://10.50.0.110:8081/tools # List infrastructure hosts curl -X POST http://10.50.0.110:8081/tools/call \ -H "Content-Type: application/json" \ -d '{"name": "ssh_list_hosts", "arguments": {}}' # Execute command on proton curl -X POST http://10.50.0.110:8081/tools/call \ -H "Content-Type: application/json" \ -d '{"name": "ssh_exec", "arguments": {"host": "proton", "command": "hostname"}}' ``` ### Claude Code Integration ```python import anthropic client = anthropic.Anthropic() response = client.messages.create( model="claude-sonnet-4-5-20250929", max_tokens=1024, mcp_servers=[{ "type": "url", "name": "ssh-infrastructure", "url": "http://10.50.0.110:8081" }], messages=[{"role": "user", "content": "List all infrastructure hosts"}] ) ``` ## Project Structure ``` ssh-mcp-server/ ├── README.md ├── docs/ │ ├── ssh-mcp-server-complete.md # Complete deployment guide │ └── git-collaboration.md # Git workflow documentation ├── implementation/ │ ├── ssh-mcp-server.py # Core MCP server (stdio transport) │ └── ssh-mcp-http-wrapper.py # HTTP/SSE transport wrapper └── config/ └── (systemd service files) ``` ## Collaboration This project is collaboratively developed by: - **Claude Code**: Implementation and deployment - **Agent Zero**: Testing and integration ## Testing Strategy - **Primary Test Target**: photon.obnh.io - Validate SSH-MCP operations against production services - Test Docker container management - Verify file operations - **Development Server**: proton.obr.sh - Host this repository - Test git operations via SSH-MCP - Development and integration testing ## Status ✅ **OPERATIONAL** All components deployed and tested: - LXC 110 created and running - SSH keys configured on all infrastructure - HTTP/SSE wrapper serving on port 8081 - All 7 tools tested and working - Systemd service enabled - Documentation complete ## License Internal OBNH/OBR infrastructure project --- **Deployment Date**: 2025-11-13 **Repository**: https://git.proton.obr.sh/olaf/ssh-mcp-server