CFT MCP Server
Remote MCP server for the Chrome Fair Trade platform, intended for deployment on Render.
What was fixed
- Renamed
package-1.jsontopackage.json - Added a real TypeScript build pipeline
- Fixed the
startscript to run compiled output fromdist/index.js - Fixed
tsconfig.jsonso TypeScript actually includessrc/**/*.ts - Added required dev dependencies:
typescript,tsx,@types/node,@types/express - Removed the hard-coded fallback admin secret from runtime code
- Updated
render.yamlsoCFT_ADMIN_SECRETis not committed in plaintext - Added a
/healthroute and safer MCP endpoint error handling
Tools
| Tool | What it does |
|---|---|
cft_health | Platform + DB health check |
cft_market_prices | Live CIF China + FOT rates, all grades |
cft_list_deals | All deals, filter by status |
cft_deal_stats | KPIs: tonnage, fees, grade breakdown |
cft_whatsapp_sessions | Active WhatsApp conversation states |
cft_reset_whatsapp_session | Unstick a supplier's WhatsApp flow |
cft_update_deal_status | Approve / reject a deal |
cft_verify_certificate | QR-verified deal certificate lookup |
cft_calculate_fot | Reverse-Netback FOT calculation |
cft_list_suppliers | All registered supplier accounts |
Local development
npm install
npm run build
CFT_BASE_URL=https://cft-terminal-hub.vercel.app CFT_ADMIN_SECRET=your-secret npm start
Server routes:
GET /GET /healthPOST /mcp
Render deployment
Render accepts custom build and start commands for Node services, which fits this project layout. citeturn150812view3
1. Push to GitHub
git init
git add .
git commit -m "fix: productionize CFT MCP server"
git branch -M main
git remote add origin https://github.com/Afrinov8/cft-mcp-server.git
git push -u origin main
2. Create the service on Render
- New → Web Service
- Connect the repository
- Render will use:
- Build Command:
npm install && npm run build - Start Command:
npm start
- Build Command:
3. Set environment variables
Set these in Render:
CFT_BASE_URL=https://cft-terminal-hub.vercel.appCFT_ADMIN_SECRET=...your actual admin secret...NODE_ENV=production
Do not commit the real admin secret into the repo. Render blueprints support sync: false for secrets so values are not hardcoded in render.yaml. citeturn652236search0turn652236search3
4. Verify after deploy
- Root health:
https://your-service.onrender.com/health - MCP endpoint:
https://your-service.onrender.com/mcp
Notes
This project still assumes the upstream CFT app exposes these endpoints:
/api/health/api/market/api/deals/api/admin/api/verify
If any of those routes differ on the Vercel app, the MCP server will deploy correctly but those specific tools will fail at runtime.