smithery.ai

deploying-vmcp-locally

Deploys a VirtualMCPServer configuration locally for manual testing and verification

First seen Mar 28, 2026

Installation

$ npx skills add https://smithery.ai

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from smithery.ai · top by installs.

npx skills add https://smithery.ai

Browse all from smithery.ai

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,424 B
  • docs SUMMARY.md 114 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1 installs

SKILL.md

Deploying vMCP Locally

This skill helps you deploy and test VirtualMCPServer configurations in a local Kind cluster for manual verification.

Prerequisites

Before using this skill, ensure you have:

  • Kind installed
  • kubectl installed
  • Task installed
  • Helm installed
  • A cloned copy of the toolhive repository

Instructions

1. Set up the local cluster

If no Kind cluster exists, create one with the ToolHive operator:

# From the toolhive repository root
task kind-with-toolhive-operator

This creates a Kind cluster named toolhive with:

  • Nginx ingress controller
  • ToolHive CRDs installed
  • ToolHive operator deployed

2. For development/testing with local changes

If you need to test local code changes:

# Set up cluster with e2e port mappings
task kind-setup-e2e

# Install CRDs
task operator-install-crds

# Build and deploy local operator image
task operator-deploy-local

3. Apply the VirtualMCPServer configuration

Apply the YAML configuration you want to test:

kubectl apply -f <path-to-vmcp-yaml> --kubeconfig kconfig.yaml

4. Verify deployment

Check the VirtualMCPServer status:

# List all VirtualMCPServers
kubectl get virtualmcpserver --kubeconfig kconfig.yaml

# Get detailed status
kubectl get virtualmcpserver <name> -o yaml --kubeconfig kconfig.yaml

# Check operator logs for issues
kubectl logs -n toolhive-system -l app.kubernetes.io/name=thv-operator --kubeconfig kconfig.yaml

5. Test the vMCP endpoint

For NodePort service type (useful for local testing):

# Get the NodePort
kubectl get svc vmcp-<name> -o jsonpath='{.spec.ports[0].nodePort}' --kubeconfig kconfig.yaml

# Test the endpoint (port will be on localhost when using kind-setup-e2e)
curl http://localhost:<nodeport>/mcp

For ClusterIP (default), use port-forward:

kubectl port-forward svc/vmcp-<name> 4483:4483 --kubeconfig kconfig.yaml
curl http://localhost:4483/mcp

6. Test MCP protocol

Use an MCP client to verify tool discovery and execution:

# Initialize MCP session
curl -X POST http://localhost:<port>/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc": "2.0", "method": "initialize", "params": {"protocolVersion": "2024-11-05", "capabilities": {}, "clientInfo": {"name": "test", "version": "1.0"}}, "id": 1}'

# List tools
curl -X POST http://localhost:<port>/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc": "2.0", "method": "tools/list", "id": 2}'

7. Clean up

When done testing:

# Remove specific resources
kubectl delete -f <path-to-vmcp-yaml> --kubeconfig kconfig.yaml

# Or destroy the entire cluster
task kind-destroy

Example YAML files

Reference example configurations are in examples/operator/virtual-mcps/:

File Description
vmcpsimplediscovered.yaml Basic discovered mode configuration
vmcpconflictresolution.yaml Tool conflict handling strategies
vmcpinlineincoming_auth.yaml Inline authentication configuration
vmcpproductionfull.yaml Full production configuration
compositetoolsimple.yaml Simple composite tool workflow
compositetoolcomplex.yaml Complex multi-step workflows
compositetoolwith_elicitations.yaml Workflows with user prompts

Troubleshooting

VirtualMCPServer stuck in Pending phase

Check that:

  1. The MCPGroup exists and is Ready
  2. All backend MCPServers in the group are Running
  3. The operator has permissions to create the vMCP deployment
kubectl describe virtualmcpserver <name> --kubeconfig kconfig.yaml
kubectl get mcpgroup --kubeconfig kconfig.yaml
kubectl get mcpserver --kubeconfig kconfig.yaml

Backend servers not discovered

Verify backend servers have the correct groupRef:

kubectl get mcpserver -o custom-columns=NAME:.metadata.name,GROUP:.spec.groupRef --kubeconfig kconfig.yaml

Authentication issues

For testing, use anonymous auth:

incomingAuth:
  type: anonymous
  authzConfig:
    type: inline
    inline:
      policies:
        - 'permit(principal, action, resource);'