Frequently Asked Questions
Quick answers to common questions about mctx, including troubleshooting tips for subscribers and developers.
General
What is mctx?
mctx gives you free hosting for your App. You set your own price, and when subscribers use your tools, you get paid. Connect your GitHub repo, deploy with one click, and publish to the MCP ecosystem. That is the whole workflow.
What is MCP?
MCP (Model Context Protocol) is an open protocol that lets AI assistants use external tools. An MCP server provides tools that AI can call -- fetching data, performing actions, or connecting to services. Think of it as a standardized plugin system for AI.
Is there a free tier for subscribers?
No. Every App on mctx is paid. This keeps developers motivated and Apps well-maintained. Pricing is set by the developer and charged based on actual usage.
For Subscribers
How do I find Apps to use?
A few places to look:
- MCP Community Registry -- The official directory. Browse by category or search by keyword.
- Developer channels -- Developers share their App links on Twitter/X, Discord, Reddit, and in GitHub READMEs.
- Community lists -- Curated directories like awesome-mcp-servers collect notable servers.
When you find an App link (like weather-api.mctx.ai), visit it to see what it does and subscribe.
How much does it cost?
Each developer sets their own price, typically per 1,000 requests. You only pay for what you use. Prices vary depending on the App.
What payment methods work?
All major credit and debit cards.
Can I cancel anytime?
Yes. Go to your subscriptions page, cancel, and you will not be charged again. Access ends within minutes of cancellation.
Do I get charged if I don't use it?
No. Billing is usage-based. Zero requests means zero charges.
What if an App I use gets deleted?
You will receive an email and an in-app notification. If the App has active subscribers (including you), there is a 24-hour wind-down period before it goes offline. If the App had no subscribers, it may have been deleted immediately with no wind-down. See When a Server You Use Is Deleted for the full timeline and billing details.
Can I use one subscription with multiple AI tools?
Yes. Your subscription works with any MCP-compatible client. Check your subscriptions page for setup instructions for each client type.
What happens if my payment fails?
We retry the payment automatically. If it keeps failing, your subscription becomes past due and access is paused until payment goes through.
For Developers
How do I get started?
The Deploy Your Server guide walks you through the whole process. Most developers are live in under 10 minutes.
What languages can I use?
JavaScript or TypeScript, compiled to a single entry point. See Server Requirements for the exact structure.
What Node.js APIs can I use?
A subset. Your server runs on Cloudflare Workers — a V8 isolate, not Node.js — but mctx enables the nodejs_compat flag so commonly needed modules like node:crypto, node:buffer, node:stream, node:util, node:events, node:url, and node:path are available. Modules that require OS-level access — node:net, node:dgram, node:cluster, node:worker_threads — are not available. See Runtime environment for the full list and alternatives.
How much do I keep?
You earn 80% of all subscription revenue. mctx keeps a 20% platform fee that covers hosting, payments, and discovery. Your actual payouts depend on how you price your App and how many subscribers you have.
When do I get paid?
Payouts are sent on a standard schedule, typically a 2-day rolling basis once your account is set up.
Can I set my own prices?
Yes. You control your base price per 1,000 requests.
What if I need to take my App offline?
You can deactivate it temporarily or delete it permanently. If your App has active subscribers, there is a 24-hour wind-down period so they have time to adjust. See Deleting Your Server for the full process.
Can I run multiple Apps?
Yes. Deploy as many as you want from different repos.
Do I need my own payout account?
Yes. You set up a payout account during payout setup. This is how you receive your payouts.
Can I update my App without breaking things for existing users?
Yes. Each version runs at its own endpoint. Subscribers stay on their current version until they choose to update. See the versioning guide for how this works.
What if my App has a bug?
Deploy a fix as a new version. Subscribers on the old version are not affected until they decide to switch. This gives you time to test the fix without disrupting anyone.
Pricing and Billing
How does pricing work?
Subscribers pay per request. You set the rate, and mctx handles billing and collection. See How Pricing Works for the full breakdown.
What is locked-in pricing?
The price a subscriber sees when they subscribe is the price they keep for as long as they stay subscribed. Even if you raise prices or demand bonus kicks in later, their rate does not change.
If they cancel and resubscribe, they pay whatever the current price is at that point. The locked-in rate only lasts while the subscription is active.
What is Demand Bonus?
An optional feature that automatically increases prices during high-traffic periods. Subscribers who join during quieter times lock in lower rates.
Are there hidden fees?
No. Subscribers pay only for what they use. Developers receive 80% of revenue with no additional fees. Payment processing fees come from the platform's 20%, not yours.
Technical
How does authentication work?
It is automatic. mctx uses OAuth 2.0, and MCP clients handle the flow for you. When your client connects to an App, it discovers auth requirements automatically and prompts you to sign in through your browser. See the Authentication guide for details.
Are there rate limits?
No hard platform-level rate limits. Individual Apps may implement their own, and abusive usage may trigger account review.
Is there an SLA?
mctx runs on a global edge network with high availability. Formal SLAs are not currently offered.
Where are Apps hosted?
Globally, on edge infrastructure close to your users. Every App runs on Cloudflare Workers, deployed to data centers around the world.
Can I see logs for my App?
Yes. Your dashboard has real-time log streaming built in. Click View Logs on your App's detail page and watch console.log output appear as requests come in.
Logs are live-only -- there is no retention, so you see them while the modal is open. For persistent logging, connect an external service. See Server Logs for tips.
Is my data secure?
Yes.
- All traffic is encrypted over HTTPS
- Environment variables are encrypted at rest with AES-256-GCM
- mctx does not access your App's data
- Check each App developer's privacy policy for App-specific data handling
Are my environment variables safe?
Yes. Your API keys and secrets are protected with AES-256-GCM encryption, stored encrypted in the database, and only decrypted at deploy time when they are injected into your worker. They are never visible in logs, API responses, or the dashboard after you save them.
Account
How do I delete my account?
Go to Settings → Danger Zone → Close Account at app.mctx.ai/usr/settings. See Closing Your Account for what to expect before and after closure.
Can I change my email?
Email changes are not currently self-service. Contact support@mctx.ai to update your account email.
I forgot my password
mctx uses email and password login, with optional sign-in via Google or GitHub. If you signed up with an email and password, use the Forgot Password link on the login page to reset it. If you used Google or GitHub to sign in, log in via that provider instead — there is no mctx-specific password to reset.
Troubleshooting
Why did my deployment fail with a validation error?
If your deployment fails with a validation error (Cloudflare error 10021), your built JavaScript file imports a Node.js module that is not available in the Workers runtime.
Common causes:
- Direct import of an unsupported module —
node:net,node:dgram,node:cluster, ornode:worker_threads - Transitive dependency — a package you use internally depends on one of these modules (for example,
shelljsusesnode:child_process, which requires additional flags not enabled by mctx) node:child_process— this module requires experimental flags that mctx does not currently enable for tenant workers
To find the problem, build locally with the browser target and look for errors:
npx esbuild src/index.ts --bundle --platform=browser --format=esm --outfile=/dev/null 2>&1 | grep "Cannot use"Once you identify which import is failing, replace it with an HTTP-based alternative or remove the dependency. See Runtime environment for supported modules and alternatives.
Why am I getting an "Unauthorized" error?
This usually means the OAuth flow between your MCP client and the App did not complete. Here is what to check:
- Is your MCP client set up for OAuth? It needs to support OAuth 2.0 discovery. Make sure it is pointed at the full App URL (for example,
https://example.mctx.ai/v1.0.0). - Did the sign-in flow finish? When your client prompts you to sign in, complete the flow in your browser. If it got stuck, restart the client and try again.
- Has your session expired? Sign out and back in through your MCP client. Most clients will prompt you automatically.
- Are you using the right account? Check your subscriptions page to confirm you are logged into the account that has the subscription.
Why am I getting a "Payment Required" error?
This means you are authenticated but do not have an active subscription for this App.
- Check your subscriptions at app.mctx.ai/subscriptions. If the App is not listed, you need to subscribe.
- Subscription canceled or past due? Update your payment method or resubscribe.
- Wrong App URL? Double-check that the slug in the URL matches the App you subscribed to.
Why is my version not found?
The version you requested does not exist on this App. The error response includes a list of available versions:
{
"error": {
"code": -32001,
"message": "Version not found",
"data": {
"requestedVersion": "1.0.0",
"availableVersions": ["1.1.0", "2.0.0"]
}
}
}Update your client configuration to use one of the available versions.
Why is my connection timing out?
A few possibilities:
- The App might be inactive. Check the App's info page for its current status.
- Network issues on your end. Verify your internet connection and try the request again.
- The App is doing something slow. Some operations (external API calls, complex computations) take time. Try increasing your client's timeout setting.
Why does my SSE connection keep dropping?
Server-Sent Events connections can be finicky. Try these:
- Add reconnection logic to your client so it recovers automatically
- Check for proxy interference. Some proxies and firewalls do not support SSE well.
- Verify the Accept header is set to
text/event-stream
Why can't I activate my App?
Walk through this checklist:
- Payouts set up? Go to Payouts and complete payout onboarding.
- Support email added? Go to Developer Settings and add a verified support email.
- Valid package.json? Check for syntax errors and make sure
name,version,description, andmainare all present. - Does the main file exist? The path in the
mainfield must point to a real file, relative topackage.json. - Does the project build? Fix any TypeScript or compilation errors in your repo.
Why isn't my new version deploying?
You pushed to main but nothing happened. Here is what to check:
- Look at your notifications. Check the dashboard and your email for deployment failure messages.
- Did you bump the version? The
versioninpackage.jsonmust be a valid semver string (like1.0.0or2.1.3-beta.1), and it must be different from the currently deployed version. Same version number means no new deployment. - Build errors? Make sure your code compiles successfully on its own.
- Is the GitHub App installed? Verify it has access to your repo. You can reinstall it from your App settings if needed.
Why aren't my environment variables working?
- Check the scope. Server-level variables are available to all versions. Version-level variables only apply to that specific version.
- Did you redeploy? Server-level variables require a new deployment to take effect. Push a new version or use the Redeploy button.
- Check the variable name. Names are case-sensitive. Watch for typos.
Why aren't my logs showing up?
- No requests coming in? Logs only appear when requests are actively hitting your App.
- App inactive? Activate it first.
- Using the right methods? Stick to
console.log,console.warn, andconsole.error.
I can't subscribe to an App
- Are you signed in? You need to be logged in to subscribe.
- Payment issue? Try a different card.
- App inactive? You can only subscribe to active Apps.
My subscription is not showing up
- Refresh the page. The subscription list sometimes needs a moment.
- Check your email for a payment receipt confirming the payment went through.
- Right account? Make sure you are logged into the same account you used to subscribe.
My usage shows zero even though I'm making requests
- Are you hitting the right endpoint? Make sure you are using the versioned URL (like
/v1.0.0). - Check for auth errors. If requests are returning 401 or 402, they are not counted as usage.
- Give it a minute. Usage reporting can take a few minutes to update.
Still stuck?
Check the Authentication guide for technical details on how OAuth works, or browse the full documentation for guides on every part of the platform.
See something wrong? Report it or suggest an improvement — your feedback helps make these docs better.
When a Server You Use Is Deleted
What happens when a developer deletes an App you're subscribed to, including notifications, access timeline, and billing impact.
How Authentication Works
Technical deep-dive into OAuth 2.0 authentication for Apps on mctx. Understand the protocol-level details of how MCP clients discover and authenticate with Apps on mctx.