Comparison
| Example | What It Does | Auth Pattern | Complexity | Best For |
|---|---|---|---|---|
| ISS Tracker | Real-time space station location | None | Minimal | Learning MCP basics, public APIs |
| Weather API | Current weather & forecasts | API Key | Low | Simple auth, proxying user credentials |
| WHOOP Integration | Health data (sleep, recovery) | OAuth Proxy | Medium | Wrapping existing OAuth APIs |
| Bookmark Manager | Personal bookmark storage | OAuth + DCR | Medium | Building new multi-user services |
When to Use Each Pattern
No Authentication → ISS Tracker
- Public APIs with no user-specific data
- Testing and learning MCP
- Read-only data sources
API Key → Weather API
- Users provide their own API keys
- Simple credential validation
- No OAuth complexity needed
OAuth Proxy → WHOOP Integration
- Third-party service already has OAuth
- You’re wrapping their existing API
- Service doesn’t support Dynamic Client Registration
Remote OAuth + DCR → Bookmark Manager
- Building a new service from scratch
- Need MCP spec compliance
- Want automatic client registration
Repository Structure
All examples live in one repository:src/server.py- MCP server implementationrequirements.txt- Python dependencies.env.example- Environment template (if needed)README.md- Detailed setup and deployment instructions
Getting Started Locally
Every example follows the same setup pattern:http://localhost:8000 (or the port specified in the example).
Local Testing with MCP Inspector
Before deploying, test your MCP server locally using the MCP Inspector:http://localhost:PORT/mcp (use the port your server is running on, usually 8000) and select “Via Proxy” as the connection type.
You can then:
- View all available tools and their schemas
- Execute tools with test parameters
- Inspect request/response payloads
- Debug tool execution issues
OAuth examples may not work in MCP Inspector due to CORS restrictions. The
Inspector runs in a browser, and OAuth redirect flows can conflict with
browser security policies. For OAuth integrations, test directly by deploying
to HTTPS and connecting through Poke or another client like Claude.
Deploying to Production
Poke requires HTTPS for production integrations. Local HTTP
(
http://localhost) works for testing, but deployed servers must use HTTPS.Deployment Steps
1. Prepare Your Repository Fork or push the example to your own GitHub repository:- Sign up at render.com
- Click New + → Web Service
- Connect your GitHub account
- Select your repository
- Root Directory: Set to the example folder (e.g.,
iss-tracker,weather-api, etc.) - Build Command:
pip install -r requirements.txt - Start Command:
python src/server.py - Environment: Python 3
| Example | Required Variables | Notes |
|---|---|---|
| ISS Tracker | None | No config needed |
| Weather API | None | API keys come from users |
| WHOOP Integration | WHOOP_CLIENT_IDWHOOP_CLIENT_SECRETPUBLIC_BASE_URL | Create OAuth app in WHOOP dashboard first |
| Bookmark Manager | AUTHKIT_DOMAINPUBLIC_BASE_URL | Create WorkOS account, enable DCR |
PUBLIC_BASE_URL to your Render URL: https://your-service.onrender.com
5. Deploy
Click Create Web Service. Render will:
- Build your Python environment
- Install dependencies
- Start your server
- Assign an HTTPS URL
- Go to poke.com/settings/connections/integrations/new
- Enter your server URL (with
/mcppath) - Add API key or complete OAuth flow (if required)
- Test your integration
Deployment Notes
Free Tier Limitations Render’s free tier spins down after 15 minutes of inactivity. First request after sleep takes ~30 seconds to wake up. Visit your URL in a browser to wake it before connecting to Poke. Updating Your Integration- Push changes to GitHub (Render auto-deploys if enabled)
- Or manually deploy from Render dashboard
- Important: After code changes, disconnect and reconnect in Poke to refresh tool schemas
- View logs in Render dashboard under Logs tab
- Most common issues: missing environment variables, incorrect paths, cold starts
- For OAuth examples: ensure redirect URIs match your
PUBLIC_BASE_URL
PUBLIC_BASE_URL environment variable and reconnect in Poke.
For example-specific deployment details (OAuth setup, database configuration, etc.), see individual README files in the repository.
What You’ll Learn
Each example demonstrates multiple concepts beyond just authentication: Authentication Patterns- ISS Tracker: No authentication (baseline pattern)
- Weather API: API key validation against upstream services
- WHOOP: OAuth Proxy for third-party APIs
- Bookmark Manager: Remote OAuth + DCR for new services
- ISS Tracker: Human-readable responses optimized for conversational AI
- Weather API: Flexible parameters in single tools
- WHOOP: Combining API calls to minimize latency (detailed in Tool Design Philosophy)
- Bookmark Manager: Per-user data isolation
- Rate limiting (per-key, per-user)
- Token validation and caching
- Error handling and graceful degradation
- HTTPS deployment and security