| name | MCP Deployment and Testing |
| description | 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. |
| version | 0.1.0 |
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:
pip install mcp
python server.py
TypeScript:
npm install @modelcontextprotocol/sdk express
npx tsx server.ts
Exposing with ngrok
ChatGPT requires HTTPS. Use ngrok for local development:
brew install ngrok
ngrok http 8000
Save the HTTPS URL for ChatGPT connector setup.
MCP Inspector
Test MCP servers without ChatGPT integration:
Installation
npx @modelcontextprotocol/inspector@latest
Usage
npx @modelcontextprotocol/inspector http://localhost:8000/mcp
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
python server.py
curl http://localhost:8000/mcp \
-X POST \
-H "Content-Type: application/json" \
-d '{"method": "tools/list"}'
2. MCP Inspector Test
npx @modelcontextprotocol/inspector http://localhost:8000/mcp
3. ngrok Integration Test
ngrok http 8000
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 openai/outputTemplate 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
npm install -g @railway/cli
railway login
railway init
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:
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
Troubleshooting
Server Not Responding
curl http://localhost:8000/mcp
lsof -i :8000
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:
references/hosting-guide.md - Platform-specific deployment
references/monitoring.md - Logging and monitoring setup
Example Files
Working examples in examples/:
examples/Dockerfile - Docker deployment example
examples/railway.json - Railway configuration
Official Documentation