Awesome-omni-skill MCP Deployment and Testing
This skill should be used when the user asks to "deploy MCP server", "test MCP", "use ngrok", "MCP Inspector", "connect to ChatGPT", "create connector", "troubleshoot MCP", "debug server", or needs guidance on deploying and testing MCP servers for the OpenAI Apps SDK.
git clone https://github.com/diegosouzapw/awesome-omni-skill
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/ai-agents/mcp-deployment-and-testing" ~/.claude/skills/diegosouzapw-awesome-omni-skill-mcp-deployment-and-testing && rm -rf "$T"
skills/ai-agents/mcp-deployment-and-testing/SKILL.md- global npm install
- pip install
- makes HTTP requests (curl)
- references .env files
- references API keys
MCP Deployment and Testing for OpenAI Apps SDK
Overview
Deploying and testing MCP servers requires proper HTTPS setup, local development tools, and ChatGPT connector configuration. This skill covers the complete deployment workflow from local testing to production.
Local Development Setup
Running the Server
Python:
# Install dependencies pip install mcp # Run server python server.py # Server running on http://localhost:8000/mcp
TypeScript:
# Install dependencies npm install @modelcontextprotocol/sdk express # Run server npx tsx server.ts # Server running on http://localhost:8000/mcp
Exposing with ngrok
ChatGPT requires HTTPS. Use ngrok for local development:
# Install ngrok brew install ngrok # macOS # or download from ngrok.com # Expose local server ngrok http 8000 # Output: # Forwarding https://abc123.ngrok.io -> http://localhost:8000
Save the HTTPS URL for ChatGPT connector setup.
MCP Inspector
Test MCP servers without ChatGPT integration:
Installation
npx @modelcontextprotocol/inspector@latest
Usage
# Test local server npx @modelcontextprotocol/inspector http://localhost:8000/mcp # Test ngrok URL npx @modelcontextprotocol/inspector https://abc123.ngrok.io/mcp
Inspector Features
- List Tools - View all available tools and schemas
- Call Tools - Execute tools with test parameters
- View Resources - List and fetch MCP resources
- Test Widgets - Preview widget HTML rendering
- Debug Responses - Inspect structuredContent and _meta
ChatGPT Connector Setup
Enable Developer Mode
- Open ChatGPT settings
- Navigate to "Developer settings"
- Enable "Developer mode"
Create Connector
- Go to ChatGPT → Settings → Connectors
- Click "Add connector"
- Enter your MCP server URL (HTTPS required)
- Name your connector
- Save
Add to Conversation
- Start a new conversation
- Click the connector icon
- Select your connector
- Test with natural language prompts
Testing Workflow
1. Local Server Test
# Start server python server.py # Test with curl curl http://localhost:8000/mcp \ -X POST \ -H "Content-Type: application/json" \ -d '{"method": "tools/list"}'
2. MCP Inspector Test
# Run inspector npx @modelcontextprotocol/inspector http://localhost:8000/mcp # In inspector: # - Verify tools list correctly # - Test each tool with sample inputs # - Check widget rendering
3. ngrok Integration Test
# Expose server ngrok http 8000 # Test HTTPS endpoint curl https://abc123.ngrok.io/mcp \ -X POST \ -H "Content-Type: application/json" \ -d '{"method": "tools/list"}'
4. ChatGPT Integration Test
- Add connector with ngrok URL
- Test natural language tool invocation
- Verify widget rendering
- Check response accuracy
Debugging
Enable Debug Logging
Python:
import logging logging.basicConfig(level=logging.DEBUG) mcp = FastMCP("server", debug=True)
TypeScript:
const server = new Server( { name: "server", version: "1.0.0" }, { capabilities: { tools: {} }, debug: true } );
Common Issues
| Issue | Solution |
|---|---|
| Connection refused | Check server is running on correct port |
| SSL error | Use ngrok for HTTPS |
| Tool not found | Verify tool registration and naming |
| Widget not rendering | Check URI |
| Auth failure | Verify tokens and security config |
Request Logging
Python:
@mcp.middleware async def log_requests(request, call_next): print(f"Request: {request.method} - {request.params}") response = await call_next(request) print(f"Response: {response}") return response
Production Deployment
Hosting Options
| Platform | Notes |
|---|---|
| Railway | Easy Python/Node deployment |
| Render | Free tier available |
| Fly.io | Edge deployment |
| AWS Lambda | Serverless option |
| Google Cloud Run | Container-based |
Railway Deployment
# Install Railway CLI npm install -g @railway/cli # Login and init railway login railway init # Deploy railway up
Docker Deployment
Dockerfile (Python):
FROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install -r requirements.txt COPY . . EXPOSE 8000 CMD ["python", "server.py"]
Build and run:
docker build -t mcp-server . docker run -p 8000:8000 mcp-server
Environment Variables
Production configuration:
# .env.production PORT=8000 HOST=0.0.0.0 DATABASE_URL=postgresql://... API_KEY=your_production_key LOG_LEVEL=INFO
Health Checks
Add a health check endpoint:
Python:
@mcp.tool() def health_check() -> dict: """Server health check.""" return { "structuredContent": { "status": "healthy", "version": "1.0.0", "timestamp": datetime.now().isoformat() } }
Production Checklist
- HTTPS enabled (required)
- Environment variables configured
- Debug mode disabled
- Logging configured
- Error handling implemented
- Rate limiting enabled
- Health check endpoint
- Monitoring/alerting setup
- Database backups (if applicable)
- CORS configured correctly
Troubleshooting
Server Not Responding
# Check if server is running curl http://localhost:8000/mcp # Check port binding lsof -i :8000 # Check logs tail -f server.log
Widget Not Loading
- Check resource registration
- Verify
mimeType: "text/html+skybridge" - Inspect
_meta.openai/outputTemplate - Test widget HTML in MCP Inspector
Tool Call Failures
- Verify tool name matches exactly
- Check inputSchema validation
- Review error response format
- Test with MCP Inspector first
Additional Resources
Reference Files
For detailed deployment guides:
- Platform-specific deploymentreferences/hosting-guide.md
- Logging and monitoring setupreferences/monitoring.md
Example Files
Working examples in
examples/:
- Docker deployment exampleexamples/Dockerfile
- Railway configurationexamples/railway.json
Official Documentation
- Apps SDK Deployment: https://developers.openai.com/apps-sdk/build/deploy-your-app/
- ChatGPT Connectors: https://help.openai.com/en/articles/12584461-developer-mode-apps-and-full-mcp-connectors-in-chatgpt-beta