🛰️ TailOpsMCP — A secure MCP control surface for Tailscale-connected homelabs
Secure remote monitoring and AI-assisted operations for your homelab over Tailscale — powered by MCP
Model Context Protocol (MCP) server for managing Proxmox LXC containers, Docker stacks, and system administration - all through natural language with AI assistants.
TailOpsMCP is an MCP (Model Context Protocol) server that lets you manage your home lab infrastructure using AI assistants like Claude, ChatGPT, or any MCP-compatible client. Instead of remembering complex commands, just ask:
- "Deploy my monitoring stack from GitHub"
- "Analyze the auth logs for security issues"
- "What's using all the CPU on dev1?"
- "Update all packages on the server"
Perfect for home lab enthusiasts, self-hosters, and DevOps engineers running Proxmox, Docker, and Tailscale.
- ✅ Smart Inventory Management - Auto-detect and track applications running on LXC (Jellyfin, Pi-hole, Ollama, PostgreSQL, etc.)
- ✅ Multi-System Support - Identify systems by hostname + container ID for managing multiple LXCs with one AI
- ✅ MCP Prompts - Pre-configured workflows for common tasks (security audit, health check, troubleshooting, inventory setup)
- ✅ Docker Compose Stack Management - Deploy GitOps-style stacks from repos (like Portainer/Komodo)
- ✅ Proxmox LXC Detection - Automatic virtualization environment detection
- ✅ AI-Powered Log Analysis - Root cause detection with actionable recommendations
- ✅ System Monitoring - CPU, memory, disk, network with historical metrics
- ✅ Docker Container Management - Start/stop/restart/logs for all containers
- ✅ Systemd Service Management - Control system services
- ✅ Package Management - Update systems, install packages
- ✅ Security Auditing - AI-powered security log analysis
- ✅ File Operations - Read, search, and analyze system files
- ✅ Network Diagnostics - Interface status, connectivity tests
- ✅ Tailscale Required - Encrypted transport mandatory (no built-in TLS)
- ✅ OAuth 2.1 with TSIDP - Tailscale Identity Provider authentication
- ✅ Non-Root Service - Runs as dedicated
systemmanageruser - ✅ Systemd Hardening - Full sandboxing with ProtectSystem, ProtectHome
- ✅ Audit Logging - Complete tracking of all operations
- ✅ Scope-Based Access - Fine-grained permission control
⚠️ Approval Gates - Requires external webhook (not built-in)
🔮 Roadmap (See HOMELAB_FEATURES.md)
- 🔄 LXC Network Auditing - Review and audit container network configs
- 🔄 Backup & Snapshots - Automated backups with verification
- 🔄 Certificate Management - Let's Encrypt automation
- 🔄 Reverse Proxy Management - Traefik/Nginx/Caddy configuration
- 🔄 Proxmox API Integration - Full VM/container management
- 🔄 Security Scanning - Container vulnerability detection
┌─────────────────────────────────────────────────┐
│ AI Assistant (Claude/ChatGPT/etc) │
│ - Natural language commands │
│ - Context-aware suggestions │
└──────────────────┬──────────────────────────────┘
│ MCP Protocol
┌──────────────────▼──────────────────────────────┐
│ TailOpsMCP MCP Server │
│ ┌──────────────────────────────────────────┐ │
│ │ OAuth/OIDC (Tailscale Identity) │ │
│ └──────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────┐ │
│ │ AI-Powered Analysis │ │
│ │ - Log analysis with root cause detection│ │
│ │ - Security auditing │ │
│ │ - Performance recommendations │ │
│ └──────────────────────────────────────────┘ │
└──────────────────┬──────────────────────────────┘
│
┌──────────────┼──────────────┬──────────────┐
│ │ │ │
┌───▼────┐ ┌─────▼─────┐ ┌────▼─────┐ ┌────▼─────┐
│Proxmox │ │ Docker │ │ Systemd │ │Tailscale │
│ LXC │ │ Compose │ │ Services │ │ Network │
└────────┘ └───────────┘ └──────────┘ └──────────┘
Use the automated Proxmox installer script (inspired by tteck's scripts):
bash -c "$(wget -qLO - https://raw.githubusercontent.com/mdlmarkham/TailOpsMCP/master/ct/build.func)"This will:
- Create a Debian 12 LXC container (2GB RAM, 2 CPU cores, 4GB disk)
- Install Python 3.12, Docker, and all dependencies
- Walk you through Tailscale OAuth setup
- Configure and start the systemd service
- Provide complete installation summary
Deploy TailOpsMCP to multiple LXC containers from your Proxmox host in a single operation:
# On your Proxmox host
curl -fsSL https://raw.githubusercontent.com/mdlmarkham/TailOpsMCP/main/scripts/install/install-proxmox-multi.sh -o install-proxmox-multi.sh
chmod +x install-proxmox-multi.sh
# Quick deploy to existing containers
./install-proxmox-multi.sh --containers 101,102,103 --auth token
# Or use a configuration file for complex setups
wget https://raw.githubusercontent.com/mdlmarkham/TailOpsMCP/main/scripts/install/templates/proxmox-multi.conf
nano proxmox-multi.conf # Edit configuration
./install-proxmox-multi.sh --config proxmox-multi.confFeatures:
- ✅ Deploy to multiple containers (existing or create new ones)
- ✅ Sequential or parallel deployment strategies
- ✅ Auto-configure container features (nesting, TUN device)
- ✅ Per-container configuration overrides
- ✅ Comprehensive validation and health checks
See PROXMOX_MULTI_CONTAINER_INSTALL.md for complete documentation.
- OS: Linux (Ubuntu 22.04+, Debian 11+, Proxmox LXC)
- Python: 3.11 or higher
- Docker: For container management features (optional)
- Tailscale: For secure OAuth authentication (optional but recommended)
# 1. Download and run the installer
curl -fsSL https://raw.githubusercontent.com/mdlmarkham/TailOpsMCP/master/install.sh | sudo bash
# Or clone and run manually
git clone https://github.com/mdlmarkham/TailOpsMCP.git
cd TailOpsMCP
sudo bash install.shThe interactive installer will:
- ✅ Check system requirements (Python, Docker, Tailscale)
- 🔧 Choose authentication method (OAuth or Token)
- 🔐 Configure Tailscale OAuth (with step-by-step guide)
- 📦 Install TailOpsMCP and dependencies
- ⚙️ Create systemd service
- 🚀 Start and verify the server
# Check service status
sudo systemctl status systemmanager-mcp
# View logs
sudo journalctl -u systemmanager-mcp -f
# Test the server
curl http://localhost:8080/.well-known/oauth-protected-resource/mcp# Download and run the installer
curl -fsSL https://raw.githubusercontent.com/mdlmarkham/TailOpsMCP/master/install.sh | sudo bashThe installer will:
- ✅ Check system requirements
- ✅ Install Python dependencies
- ✅ Set up systemd service
- ✅ Configure Tailscale OAuth (if available)
- ✅ Create secure environment file
- ✅ Start the server
# 1. Clone repository
git clone https://github.com/mdlmarkham/TailOpsMCP.git
cd TailOpsMCP
# 2. Install dependencies
pip install -r requirements.txt
# 3. Configure authentication (choose one)
# Option A: Tailscale OAuth (Recommended)
cp deploy/.env.template .env
nano .env # Add your TSIDP credentials
chmod 600 .env
# Option B: Token-based auth (Simpler)
export SYSTEMMANAGER_AUTH_MODE=token
export SYSTEMMANAGER_SHARED_SECRET="your-secret-here"
# 4. Start the server
python -m src.mcp_serverTailOpsMCP supports Tailscale Identity Provider (TSIDP) for OAuth 2.1 authentication.
-
Enable TSIDP in your Tailscale admin console:
Settings → OAuth → Identity Provider → Enable -
Register OAuth client:
- Navigate to OAuth applications
- Create new application
- Set redirect URI:
https://vscode.dev/redirect - Note the Client ID and Secret
-
Configure TailOpsMCP:
# Edit /opt/systemmanager/.env SYSTEMMANAGER_AUTH_MODE=oidc TSIDP_URL=https://tsidp.tail12345.ts.net TSIDP_CLIENT_ID=your-client-id TSIDP_CLIENT_SECRET=your-client-secret SYSTEMMANAGER_BASE_URL=http://your-server.tail12345.ts.net:8080 -
Restart service:
sudo systemctl restart systemmanager-mcp
Add to your tailscale-acl.json:
{
"acls": [
{
"action": "accept",
"src": ["group:admins"],
"dst": ["tag:infrastructure:8080"]
}
],
"tagOwners": {
"tag:infrastructure": ["group:admins"]
}
}TailOpsMCP automatically detects when running inside a Proxmox LXC container:
{
"virtualization": {
"type": "lxc",
"method": "systemd-detect-virt"
}
}# /etc/pve/lxc/103.conf
arch: amd64
cores: 2
memory: 2048
net0: name=eth0,bridge=vmbr0,firewall=1,ip=dhcp
rootfs: local-lvm:vm-103-disk-0,size=8G
# Enable Docker in LXC
features: nesting=1,keyctl=1
lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: c 10:200 rwm # /dev/net/tun for Tailscale# Audit LXC network configuration
audit_lxc_network(container_id=103)
# Output:
# - Network interfaces and bridges
# - Firewall rules
# - Port forwards
# - Security recommendationsTailOpsMCP can track what applications are running directly on your LXC container (not just Docker), providing context-aware assistance.
Use the interactive setup_inventory prompt to configure your system:
You: "Let's set up the inventory for this system"
AI will guide you through:
1. System identification (hostname, container ID, type)
2. Auto-scan for installed applications
3. Manual additions if needed
4. Review and save
TailOpsMCP can auto-detect these applications:
- Media Servers: Jellyfin, Plex
- Network Services: Pi-hole, AdGuard Home, WireGuard
- Databases: PostgreSQL, MySQL, MariaDB, MongoDB, Redis
- Web Servers: Nginx, Apache
- Home Automation: Home Assistant
- Monitoring: Prometheus, Grafana
- AI/LLM: Ollama
- Other: Nextcloud, Portainer, and more
# Scan for installed applications
scan_installed_applications(save_to_inventory=True)
# View complete inventory
get_inventory()
# Returns: system identity, applications, Docker stacks
# Manually add an application
add_application_to_inventory(
name="ollama",
app_type="ai-llm",
version="0.1.14",
port=11434,
service_name="ollama",
config_path="/etc/ollama",
notes="Running Llama 3.2 model"
)
# Update system identity (for multi-system setups)
set_system_identity(
hostname="dev1",
container_id="103",
container_type="lxc",
mcp_server_name="dev1-103" # Unique name for this MCP instance
)When managing multiple LXC containers with a single AI:
- Each system gets a unique identifier:
hostname-containerID(e.g.,dev1-103) - The inventory tracks what's running on each system
- AI provides context-aware suggestions based on what you have installed
- Inventory stored in
/var/lib/systemmanager/inventory.jsonper system
✓ Context-Aware Help: AI knows what apps you're running
✓ Better Troubleshooting: Targeted recommendations based on your stack
✓ Documentation: Auto-generated infrastructure documentation
✓ Security Audits: Application-specific security checks
✓ Performance Analysis: Understanding resource usage by app
Deploy and manage stacks like Portainer/Komodo:
# Deploy stack from GitHub
deploy_stack(
stack_name="monitoring",
repo_url="https://github.com/user/prometheus-stack",
branch="main",
env_vars={"DOMAIN": "metrics.home.lab"}
)
# Update stack (git pull + docker compose up)
update_stack("monitoring")
# List all stacks
list_stacks()# AI-powered log analysis
analyze_container_logs(
name_or_id="nginx",
context="Why is it restarting?"
)
# Start/stop/restart
manage_container(action="restart", name_or_id="nginx")
# Get container list with status
get_container_list()Add to your claude_desktop_config.json:
{
"mcpServers": {
"tailopsmcp": {
"type": "http",
"url": "http://your-server.tail12345.ts.net:8080/mcp"
}
}
}Then ask Claude:
- "Show me system status"
- "What are the top processes by CPU usage?"
- "Analyze the syslog for security issues"
- "Check if my web server container is running"
- "Test connectivity to database.home.lab:5432"
- "Pull the latest nginx image"
The MCP protocol is supported natively - just install and reload VS Code.
Example prompts:
- "@tailopsmcp what containers are running?"
- "@tailopsmcp analyze Docker logs for my app container"
- "@tailopsmcp check system resource usage"
import requests
# Token-based auth
headers = {"Authorization": f"Bearer {token}"}
# OAuth-based auth
# (OAuth flow handled by MCP client)
response = requests.post(
"http://your-server:8080/mcp",
json={
"method": "tools/call",
"params": {
"name": "get_system_status",
"arguments": {"format": "json"}
}
},
headers=headers
)
print(response.json())TailOpsMCP is configured via /opt/systemmanager/.env:
# Authentication Mode (oidc or token)
SYSTEMMANAGER_AUTH_MODE=oidc
SYSTEMMANAGER_REQUIRE_AUTH=true
# Tailscale OAuth (TSIDP)
TSIDP_URL=https://tsidp.tail12345.ts.net
TSIDP_CLIENT_ID=your_client_id
TSIDP_CLIENT_SECRET=your_client_secret
SYSTEMMANAGER_BASE_URL=http://server.tail12345.ts.net:8080
# Or Token-based
# SYSTEMMANAGER_SHARED_SECRET=your_secret_here
# Logging
LOG_LEVEL=INFO # DEBUG, INFO, WARNING, ERROR# Check status
sudo systemctl status systemmanager-mcp
# View logs
sudo journalctl -u systemmanager-mcp -f
# Restart
sudo systemctl restart systemmanager-mcp
# Enable/disable auto-start
sudo systemctl enable systemmanager-mcp
sudo systemctl disable systemmanager-mcp# Run the update script (Proxmox LXC only)
pct exec 103 -- bash -c "$(wget -qLO - https://raw.githubusercontent.com/mdlmarkham/TailOpsMCP/master/ct/build.func)" -s --update
# Or manually
cd /opt/systemmanager
sudo systemctl stop systemmanager-mcp
git pull
source venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
sudo systemctl start systemmanager-mcpTailOpsMCP supports fine-grained scope-based authorization:
# Define scopes for different users/teams
SCOPES = {
"system:read": "Read system status",
"system:write": "Modify system settings",
"docker:read": "View containers",
"docker:write": "Manage containers",
"network:read": "View network info",
"network:write": "Modify network settings"
}Configure in TSIDP OAuth application or token claims.
TailOpsMCP uses MCP sampling for intelligent log analysis:
# Analyze container logs
analyze_container_logs(
name_or_id="nginx",
lines=500,
context="Why is the container crashing?",
use_ai=True
)
# Analyze system logs (syslog, journal)
analyze_container_logs(
name_or_id="/var/log/syslog",
context="Find security issues"
)Returns:
- Summary: Overview of log contents
- Errors: Identified errors with severity
- Root Cause: AI-determined likely causes
- Recommendations: Actionable fixes
# Deploy stack from GitHub repo
deploy_stack(
stack_name="monitoring",
repo_url="https://github.com/user/prometheus-stack",
branch="main",
compose_file="docker-compose.yml",
env_vars={
"GRAFANA_DOMAIN": "grafana.home.lab",
"PROMETHEUS_RETENTION": "30d"
}
)
# Update stack (git pull + redeploy)
update_stack("monitoring")
# Remove stack
remove_stack("monitoring", remove_volumes=False)# Manage systemd services
manage_service(
action="restart", # start, stop, restart, enable, disable
service_name="nginx"
)
# Get service status
get_service_status("nginx")# Check logs for errors
sudo journalctl -u systemmanager-mcp -n 100 --no-pager
# Common issues:
# 1. Python not found - check venv path in service file
# 2. Missing dependencies - reinstall: pip install -r requirements.txt
# 3. Port already in use - check: sudo lsof -i :8080# Verify TSIDP configuration
curl https://tsidp.tail12345.ts.net/.well-known/openid-configuration
# Test token introspection
curl -X POST https://tsidp.tail12345.ts.net/api/v2/oauth/introspect \
-u "client_id:client_secret" \
-d "token=your_access_token"
# Check server logs
sudo journalctl -u systemmanager-mcp -f | grep -i oauth# Verify Docker socket permissions
ls -la /var/run/docker.sock
# If permission denied, add systemmanager user to docker group
# (Current version runs as root, but for non-root:)
sudo usermod -aG docker systemmanager
# Test Docker access
docker ps# Check Tailscale status
tailscale status
# Verify DNS resolution
dig server.tail12345.ts.net
# Test local access first
curl http://localhost:8080/.well-known/oauth-protected-resource/mcp
# Then test via Tailscale hostname
curl http://server.tail12345.ts.net:8080/.well-known/oauth-protected-resource/mcpTailOpsMCP is lightweight but Docker containers add up:
# Check memory usage
free -h
# Limit systemmanager memory (edit service file)
sudo nano /etc/systemd/system/systemmanager-mcp.service
# Add under [Service]:
MemoryMax=512M
MemoryHigh=384M
sudo systemctl daemon-reload
sudo systemctl restart systemmanager-mcp- System monitoring (CPU, memory, disk, network)
- Docker container management
- AI-powered log analysis (Docker + system logs)
- Network diagnostics (ping, traceroute, port testing)
- SSL certificate checking
- Tailscale OAuth (TSIDP) authentication
- Token-based authentication
- HTTP streaming transport (MCP)
- Proxmox LXC detection
- Docker Compose stack management (deploy/update/remove)
- Systemd service management
- LXC network auditing
- Package management (apt/yum update/install)
- File operations (read/write/search)
- Enhanced security scopes
- Proxmox API integration (VM/CT management)
- Backup and snapshot management
- Resource usage alerts and notifications
- Multi-node cluster support
- Web UI dashboard (optional)
- Ansible playbook execution
- Infrastructure-as-Code validation
- Cost tracking and optimization
- Security scanning and compliance
- Integration with Home Assistant
- Mobile app for emergency access
See HOMELAB_FEATURES.md for detailed roadmap.
We welcome contributions from the home lab community!
- Report Bugs: Open an issue with details about the problem
- Feature Requests: Suggest new tools or improvements
- Code Contributions: Submit pull requests
- Documentation: Help improve docs and examples
- Share Your Setup: Tell us how you're using TailOpsMCP
# Clone the repository
git clone https://github.com/mdlmarkham/TailOpsMCP.git
cd TailOpsMCP
# Create virtual environment
python3 -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
# Run tests
pytest
# Run server in development mode
python -m src.mcp_server- Follow PEP 8 guidelines
- Add type hints to all functions
- Write docstrings for new tools
- Include tests for new features
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes
- Run tests (
pytest) - Commit with clear message (
git commit -m 'Add amazing feature') - Push to branch (
git push origin feature/amazing-feature) - Open a Pull Request
MIT License - see LICENSE file for details.
- Proxmox VE - Best open-source hypervisor for home labs
- Tailscale - Zero-config VPN that just works
- FastMCP - Python framework for MCP servers
- Model Context Protocol - Standard for AI assistant integrations
- Community Scripts - Inspiration for the installer
- Home Lab Community - For all the inspiration and support
- Documentation: https://github.com/mdlmarkham/TailOpsMCP
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Built with ❤️ for the Home Lab Community
If you find this useful, please ⭐ star the repo!
import asyncio
from mcp import Client
async def main():
async with Client.connect("http://localhost:8080") as client:
# Get system status
status = await client.call_tool("get_system_status", {})
print("System Status:", status)
# List Docker containers
containers = await client.call_tool("get_container_list", {})
print("Containers:", containers)
asyncio.run(main())Note: Tool access controlled by scopes. See Security Documentation for authorization requirements.
get_system_status— CPU, memory, disk, uptime, load averageget_top_processes— Top processes by CPU/memory (supportsformat="toon")get_network_status— Network interfaces with addresses and statsget_network_io_counters— Network I/O statistics summaryhealth_check— Server health status (no auth required)
get_container_list— List containers (scope:container:read, supportsformat="toon")manage_container— Start/stop/restart/logs (scope:container:write, HIGH RISK)analyze_container_logs🆕 — AI-powered log analysis with root cause detection (scope:container:read)list_docker_images— List images (scope:container:read)update_docker_container— Update with latest image (scope:container:admin, CRITICAL, requires approval)pull_docker_image— Pull from registry (scope:docker:admin, CRITICAL, requires approval)
file_operations— List/read/tail/search files (HIGH RISK - path restrictions apply)
ping_host— Ping with latency (scope:network:diag, supportsformat="toon")test_port_connectivity— TCP connectivity (scope:network:diag)dns_lookup— DNS resolution (scope:network:diag)check_ssl_certificate— SSL cert validation (scope:network:diag)http_request_test— HTTP testing (scope:network:diag, HIGH RISK, requires approval)get_active_connections— Network connections (scope:network:read, supportsformat="toon")get_docker_networks— Docker networks (scope:container:read)traceroute— Route tracing (scope:network:diag)
check_system_updates— Check for updates (scope:system:read)update_system_packages— Update all packages (CRITICAL, requires approval)install_package— Install packages (CRITICAL, requires approval)
Risk Levels:
- 🟢 Low: Read-only operations, safe for monitoring
- 🟡 Moderate: Network diagnostics, limited impact
- 🟠 High: Write operations, requires scoped access
- 🔴 Critical: Destructive operations, requires approval + scoped access
Before deploying to production:
- ✅ Deploy behind Tailscale (NEVER expose to public internet)
- ✅ Configure Tailscale ACLs to limit access to tagged devices
- ✅ Enable authentication (
SYSTEMMANAGER_REQUIRE_AUTH=true) - ✅ Generate scoped tokens with appropriate TTLs
- ✅ Enable audit logging to track operations
- ✅ Review Security Documentation
# Systemd service
sudo cp deploy/systemd/systemmanager-mcp.service /etc/systemd/system/
sudo systemctl enable systemmanager-mcp
sudo systemctl start systemmanager-mcpTailscale Services provides enterprise-grade service discovery and high availability:
# Quick setup (interactive)
sudo /opt/systemmanager/scripts/setup_tailscale_service.sh
# Manual setup
tailscale serve \
--service=svc:systemmanager-mcp \
--tls-terminated-tcp=8080 \
tcp://localhost:8080
# Then approve in admin console:
# https://login.tailscale.com/admin/servicesBenefits:
- 🌐 Stable Names: Access via
http://systemmanager-mcp.yourtailnet.ts.net:8080 - 🔄 High Availability: Multiple hosts with automatic failover
- 🔍 Auto-Discovery: DNS SRV records for service discovery
- 🔐 Service ACLs: Granular access control per service
- 🚀 Zero Reconfiguration: Move hosts without updating clients
Documentation: See TAILSCALE_SERVICES.md for complete guide
Deploy as a lightweight container with minimal resource requirements.
src/
├── models/ # Data models
├── services/ # Business logic
├── cli/ # Command-line interface
└── lib/ # Utilities and helpers
tests/ # Test suite
deploy/ # Deployment configurations
docs/ # Documentation
# Run tests
pytest tests/
# Run with coverage
pytest --cov=src tests/
# Run specific test categories
pytest tests/unit/
pytest tests/integration/
pytest tests/contract/- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
Please ensure all changes adhere to the project constitution and include appropriate tests.
MIT License - see LICENSE file for details.
- Getting Started: This README
- 🔒 Security Model: docs/SECURITY.md — READ THIS FIRST for tailnet deployments
- Installation: install.sh — Automated Linux deployment
- API Reference: docs/tool_registry.md — Complete MCP tool catalog
- Integration Guide: docs/integration.md — Multi-host deployment
- Security Documentation: docs/SECURITY.md — Defense-in-depth model, threat scenarios
- Configuration Examples: docs/security-configs/ — Minimal, production, maximum security configs
- Token Generation: docs/security-configs/example-tokens.md — Token examples by use case
- Tailscale ACLs: docs/security-configs/tailscale-acl.production.jsonc — Production ACL template
- 🆕 Intelligent Log Analysis: docs/INTELLIGENT_LOG_ANALYSIS.md — AI-powered log analysis with sampling
- TOON Format: TOON_INTEGRATION.md — 15-40% token savings guide
- Tailscale Services: TAILSCALE_SERVICES.md — Zero-config service discovery
- Testing Guide: TESTING_REMOTE_GUIDE.md — Remote testing procedures
- Repository: github.com/mdlmarkham/TailOpsMCP
- Issues: GitHub Issues
- Discussions: GitHub Discussions