WiseTech Image MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@WiseTech Image MCP ServerEnhance the faces in this image: https://example.com/photo.jpg"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
WiseTech Image MCP Server
An MCP (Model Context Protocol) server that exposes all three WiseTech AI image tools to any MCP-compatible client (Claude, ChatGPT, Grok, etc.):
Tool | What it does | API endpoint |
| Upscales an image to higher resolution |
|
| Enhances faces in an image |
|
| Removes the background from an image |
|
All three accept a public image URL and return the processed image as base64 PNG.
Verified working — all three APIs tested end-to-end on 2026-06-20.
Quick start (local testing)
npm install
npm run devServer starts on http://localhost:3000/mcp. No .env needed for local testing — it auto-resolves the API URLs.
Related MCP server: Arcaelas MCP
Environment variables
All config lives in .env (never committed to git). Copy .env.example to .env and fill in:
Variable | Required | Description |
| Yes for production | Your secret key. Clients send |
| No | DNS resolver URL for main API (default: |
| No | DNS resolver URL for bg remover API (default: |
| No | Fallback main API IP if DNS fails |
| No | Fallback bg API IP if DNS fails |
| No | Pin a specific main API host (skips DNS) |
| No | Pin a specific bg API host (skips DNS) |
| No | API key if WiseTech adds one (currently not needed) |
| No | Header name for the API key (e.g. |
| No | HTTP port (default: |
| No | Path to Let's Encrypt cert dir. When set, server uses HTTPS directly (no nginx needed). Example: |
DNS auto-refresh
The WiseTech API IPs rotate daily. This server replicates the WordPress plugin's DNS-resolution: on startup (and every 6 hours) it fetches the current URL from the DNS endpoints. No manual IP updates needed.
Deploy on Heroku
Step 1: Install Heroku CLI and login
npm install -g heroku
heroku loginStep 2: Create a Heroku app
cd wisetech-image-mcp
heroku create wisetech-image-mcpStep 3: Set environment variables
# Generate a strong auth key
heroku config:set MCP_AUTH_KEY=$(openssl rand -hex 32)
# API URLs (auto-resolved from DNS, but set fallbacks)
heroku config:set WISETECH_MAIN_DNS=https://sd.rad-wi.com
heroku config:set WISETECH_BG_DNS=https://ibgc.rad-wi.com/
heroku config:set WISETECH_MAIN_FALLBACK=http://34.232.100.156:5454
heroku config:set WISETECH_BG_FALLBACK=http://35.190.164.209:5454Step 4: Deploy
git add .
git commit -m "Initial deploy"
git push heroku mainHeroku automatically:
Runs
npm installRuns
npm run build(via thebuildscript inpackage.json)Starts the app using the
Procfile:web: node dist/index.jsAssigns a port via the
PORTenv var (handled automatically)
Step 5: Verify it's running
heroku open
# Or test the MCP endpoint:
curl -X POST https://wisetech-image-mcp.herokuapp.com/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer YOUR_MCP_AUTH_KEY" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'You should see all three tools in the response.
Step 6: Connect to AI tools
Your MCP URL is: https://wisetech-image-mcp.herokuapp.com/mcp
Use this URL + your MCP_AUTH_KEY in Claude / ChatGPT / Grok (see below).
Heroku notes
Free tier sleeps after 30 min of inactivity. First request after sleep takes ~10s to wake up. Use
heroku ps:scale web=1and consider upgrading to Eco/Hobby for always-on.Port: Heroku sets
PORTautomatically — don't set it yourself.Timeout: Heroku has a 30s request timeout on free tier. Image processing can take up to 180s. If you hit timeouts, upgrade to Hobby tier or use a VPS instead.
Deploy on a VPS (recommended for production)
VPS is better than Heroku for this because image processing can take up to 3 minutes (Heroku free tier times out at 30s).
This guide is written for your specific VPS (Ubuntu 24.04, IP 167.88.43.163).
Your VPS current state
Service | Port | Status |
Docker (n8n) | 3000 | ⚠️ Taken — don't use |
OpenVPN | 80 | ⚠️ Taken — don't use |
nginx | 443, 8080 | ⚠️ Taken (n8n.conf) |
Redis | 6379 | In use |
SSH | 22 | In use |
8443 | free | ✅ We'll use this |
Strategy: Use port 8443 with HTTPS directly from Node (no nginx needed). This avoids touching any existing services — no conflicts with n8n, OpenVPN, or nginx.
Step 1: Install pm2 (process manager)
pm2 is not installed on your VPS yet. SSH into your VPS and install it:
ssh root@167.88.43.163
npm install -g pm2Step 2: Clone the repo
If the repo is public:
cd /opt
git clone https://github.com/Motasaith/MCP_Upscale_Face-Enhancer_Remove-BG.git wisetech-mcp
cd wisetech-mcp
npm install
npm run buildIf the repo is private, generate a Personal Access Token first:
Go to https://github.com/settings/tokens → "Generate new token (classic)" → check
repo→ generateCopy the token, then on the VPS:
cd /opt
git clone https://Motasaith:YOUR_TOKEN@github.com/Motasaith/MCP_Upscale_Face-Enhancer_Remove-BG.git wisetech-mcp
cd wisetech-mcp
npm install
npm run buildNote: The repo is safe to make public — all secrets are in
.env(gitignored),SECURITY.mdis gitignored, and the PHP reference folder is gitignored. The code on GitHub contains no API URLs or keys.
Step 3: Create the .env file
nano /opt/wisetech-mcp/.envMCP_AUTH_KEY=GENERATE_A_STRONG_KEY_HERE
WISETECH_MAIN_DNS=https://sd.rad-wi.com
WISETECH_BG_DNS=https://ibgc.rad-wi.com/
WISETECH_MAIN_FALLBACK=http://34.232.100.156:5454
WISETECH_BG_FALLBACK=http://35.190.164.209:5454
WISETECH_API_KEY=
WISETECH_AUTH_HEADER=
PORT=8443
HTTPS_CERT_DIR=/etc/letsencrypt/live/mcp.yourdomain.comGenerate a strong auth key:
openssl rand -hex 32Lock down the file:
chmod 600 /opt/wisetech-mcp/.env
chown root:root /opt/wisetech-mcp/.envStep 4: Point a subdomain at this VPS
In your DNS dashboard (wherever you manage your domain — Cloudflare, Namecheap, etc.), add an A record:
A mcp.yourdomain.com → 167.88.43.163Wait a few minutes for DNS to propagate. Verify:
dig mcp.yourdomain.com +short
# should return 167.88.43.163Step 5: Get the SSL certificate (DNS challenge — no port 80 needed)
This method avoids touching port 80 (which OpenVPN uses). It uses a DNS TXT record instead.
apt install -y certbot
certbot certonly --manual --preferred-challenges dns -d mcp.yourdomain.comCertbot will print something like:
Please deploy a DNS TXT record under:
_acme-challenge.mcp.yourdomain.com
with this value:
abc123def456...Go to your DNS dashboard, add that TXT record, wait ~2 minutes, then press Enter in the terminal.
Certbot saves the cert to /etc/letsencrypt/live/mcp.yourdomain.com/.
Note: This cert expires in 90 days. Since it's a manual DNS challenge, you'll need to repeat this step before it expires. If your domain is on Cloudflare, you can automate it later with certbot-dns-cloudflare.
Step 6: Start the server with pm2
cd /opt/wisetech-mcp
pm2 start dist/index.js --name wisetech-mcp
pm2 save
pm2 startup # follow the instructions it prints to make it survive rebootsCheck it's running:
pm2 status
pm2 logs wisetech-mcp --lines 10You should see:
WiseTech Image MCP server listening on :8443 (HTTPS, POST /mcp)
Tools: upscale_image, enhance_face, remove_background
[DNS] APIs resolved successfully.Step 7: Open the port (if firewall is active)
ufw statusIf it says "active":
ufw allow 8443/tcpIf it says "inactive", skip this step.
Step 8: Test from outside
curl -i -X POST https://mcp.yourdomain.com:8443/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer YOUR_MCP_AUTH_KEY" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'You should see all three tools in the response.
Step 9: Connect to AI tools
Your MCP URL is: https://mcp.yourdomain.com:8443/mcp
Use this in Claude / ChatGPT / Grok (see the "Connecting to AI tools" section above).
Useful pm2 commands
pm2 status # see if it's running
pm2 logs wisetech-mcp # live logs (Ctrl+C to exit)
pm2 restart wisetech-mcp # restart after code changes
pm2 stop wisetech-mcp # stop
pm2 delete wisetech-mcp # remove from pm2Certificate renewal (every 90 days)
Since we used a manual DNS challenge, auto-renewal won't work unattended. Before the cert expires:
certbot certonly --manual --preferred-challenges dns -d mcp.yourdomain.com
pm2 restart wisetech-mcpIf your domain is on Cloudflare, you can automate this:
apt install -y python3-certbot-dns-cloudflare
# Configure with your Cloudflare API token, then:
certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.cloudflare.ini -d mcp.yourdomain.com
# Then add a cron job for auto-renewalConnecting to AI tools
Claude Desktop
Edit this file:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonMac:
~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"wisetech-image": {
"url": "https://your-domain.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_MCP_AUTH_KEY"
}
}
}
}Restart Claude Desktop. You'll see three tools available:
upscale_imageenhance_faceremove_background
ChatGPT / Grok / other MCP clients
Go to their custom tools / MCP settings and add:
URL:
https://your-domain.com/mcpHeader:
Authorization: Bearer YOUR_MCP_AUTH_KEY
Local testing (no deployment needed)
npm run devPoint your AI client at http://localhost:3000/mcp (no auth key needed for local).
How it works
Upscale & Face Enhance (synchronous)
User → AI tool → MCP server → downloads image from URL → base64-encodes →
POST {main_api}/upscale_web_v2 (or /faceenhance_web)
body: {"image": "<base64>"}
→ response: {"image": "<base64 result>"}
→ returns base64 PNG to the AI tool → AI tool shows it to the userBackground Remover (asynchronous, handled automatically)
User → AI tool → MCP server → downloads image →
1. POST {bg_api}/uploadImageV2 (multipart "file")
2. GET {bg_api}/processImageBackgroundRemove?imageName=...
3. Poll {bg_api}/getStatus?imageName=... (every 3s until status=1)
4. GET {bg_api}/downloadImage?imageName=...png
→ returns base64 PNG to the AI toolThe entire async flow is hidden from the AI tool — it just gets the final image back.
Supported formats
Tool | Formats |
Upscale | JPG, JPEG, PNG, GIF, JFIF, WEBP, BMP, ICO, SVG, AVIF |
Face Enhance | JPG, JPEG, PNG, GIF, JFIF, WEBP, BMP, ICO, SVG, AVIF |
Background Remove | JPG, JPEG, PNG, WEBP, JFIF, BMP |
Max file size: 10 MB (enforced server-side, matching the WP plugin).
Project structure
wisetech-image-mcp/
├── index.ts # MCP server — all 3 tools (supports HTTP + HTTPS)
├── package.json # Dependencies + scripts
├── tsconfig.json # TypeScript config
├── Procfile # Heroku deployment config
├── .env # Your secrets (NEVER commit to git)
├── .env.example # Template for .env
├── .gitignore # Blocks .env, SECURITY.md, node_modules from git
├── SECURITY.md # Security & deployment details (kept private)
├── README.md # This file
└── Extra_Just_For_API_Info/ # Original PHP plugin reference (gitignored)Notes
The server uses Streamable HTTP transport (not stdio), so it works with remote/web-based MCP clients like ChatGPT and Grok, not just Claude Desktop.
Background removal output is always PNG (the API converts the input filename to
.png).All API URLs are in
.env, not in the code — someone reading the source sees nothing.See
SECURITY.mdfor detailed security information and hardening steps.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Motasaith/MCP_Upscale_Face-Enhancer_Remove-BG'
If you have feedback or need assistance with the MCP directory API, please join our Discord server