nowadays-apparelmagic-mcp
NOWADAYS ApparelMagic MCP OAuth Proxy
This service connects ChatGPT to the ApparelMagic MCP endpoint without exposing the ApparelMagic API key to the client. It provides an OAuth 2.0 authorization-code flow with PKCE, validates short-lived bearer tokens, and forwards authenticated MCP requests to ApparelMagic with the configured X-API-Key header.
How it works
ChatGPT discovers the OAuth and protected-resource metadata.
The MCP client dynamically registers its redirect URI.
An administrator authorizes access with the configured password.
The client exchanges the one-time authorization code and PKCE verifier for an access token.
Requests to
/mcpare authenticated and proxied to ApparelMagic.
The ApparelMagic API key remains server-side throughout this flow.
Requirements
Node.js 20 or newer
A public HTTPS URL for the deployed service
An ApparelMagic API key
Installation
Install the exact dependency versions recorded in package-lock.json:
npm ciConfiguration
Set these environment variables in the deployment platform. Never commit their values.
Variable | Required | Description |
| Yes* | Public HTTPS origin of this service, without a trailing slash |
| Yes* | Render-provided fallback when |
| Yes | Secret API key added to upstream requests as |
| Yes | Password used on the authorization screen |
| Yes | High-entropy secret used to sign clients, codes, and tokens |
| No | HTTP port; defaults to |
| No | ApparelMagic MCP endpoint; defaults to |
| No | Granted OAuth scope; defaults to |
* Set either PUBLIC_BASE_URL or RENDER_EXTERNAL_URL.
Generate strong secrets locally, for example:
openssl rand -base64 48Run locally
OAuth redirect URIs may use HTTP only for localhost; production deployments must use HTTPS.
export PUBLIC_BASE_URL=http://localhost:3000
export APPARELMAGIC_API_KEY=replace-me
export OAUTH_ADMIN_PASSWORD=replace-me
export JWT_SECRET=replace-with-a-long-random-secret
npm startVerify the service:
curl http://localhost:3000/healthExpected response:
{"ok":true,"service":"nowadays-apparelmagic-mcp"}Connect an MCP client
After deployment, configure the MCP server URL as:
https://your-service.example/mcpThe client can discover OAuth configuration through:
/.well-known/oauth-authorization-server/.well-known/openid-configuration/.well-known/oauth-protected-resource/.well-known/oauth-protected-resource/mcp
On first connection, complete the authorization page using OAUTH_ADMIN_PASSWORD.
Endpoints
Endpoint | Purpose |
| Health check |
| Basic service status |
| Authorization and administrator approval |
| Dynamic OAuth client registration |
| Code exchange and refresh-token rotation |
| Authenticated ApparelMagic MCP proxy |
Security notes
Store all secrets only in the deployment platform's secret manager.
Use a unique, high-entropy
JWT_SECRETand rotate it if exposure is suspected.Keep
OAUTH_ADMIN_PASSWORDseparate from the ApparelMagic API key.Use HTTPS in production and restrict access to trusted users.
The default scope is read-oriented, but actual capabilities also depend on the upstream ApparelMagic account and API key.
Authorization-code replay protection is held in memory. Restarting the service clears that short-lived state, and horizontal scaling would require a shared store.
Development and CI
Run the same checks used by GitHub Actions:
npm ci
npm run checkThe CI workflow runs on pushes to main and on pull requests using Node.js 20. Dependabot alerts and normal dependency updates should keep package-lock.json synchronized with package.json.
License
Private NOWADAYS integration. No license is granted for redistribution unless one is added explicitly.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/nowadaysedi-beep/nowadays-apparelmagic-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server