Announcing CIMD support for MCP Client registration
Learn more

Build vs buy MCP servers for multi-user agents

Build vs buy MCP servers: building means an OAuth app per provider, while a managed platform holds tokens per user

Build your own MCP servers when your agent needs a few apps, you control the users, and you have engineers to run OAuth for each app over time. Use a managed platform when many end users bring their own accounts across many apps, because most of the work is outside the MCP server: an OAuth app per provider, each provider's verification process, and a store of every user's tokens that refreshes and revokes them. First-party MCP servers from vendors such as GitHub and Notion help a person connect their own account from an MCP client, but they do not hold your users' tokens for you. For how agents reach SaaS apps through MCP servers, see our guide to MCP integrations. For the general build-vs-buy question across agent integrations, see build vs buy agent integrations.

TL;DR

  • The official MCP SDKs and FastMCP cover the MCP server's own auth: token checks and protected resource metadata.
  • The larger job grows with every app you add: register and verify an OAuth app with each provider, store and refresh tokens per user, handle each API's rate limits and errors, and keep an audit trail.
  • Most vendors' own MCP servers are built for one person connecting from Claude, Cursor or a similar client. Where a vendor does support acting for many accounts, the mechanism is vendor-specific. Linear accepts each user's token from your own Linear OAuth app, so you obtain, store and refresh those tokens. Stripe lets a Connect platform use one agent API key with a Stripe-Account header. Either way, each server covers only its own app.

What drives the decision

The number of apps and users decides this more than the MCP work does. Adding token validation to one MCP server is a bounded job with the official SDKs, and it does not grow much as you add users. What does change is the per-app work around it. Each new app means another OAuth app to register, sometimes a security review that takes weeks, another rate-limit policy, and another refresh behavior to get right for every user. A team with two internal apps and its own employees as users can build this and keep it running. A product where customers each connect ten SaaS tools has to run per-app OAuth, reviews and token refresh for every customer. That is the work a managed platform replaces.

Four options

Option
What you run
Fits when
Point agents at vendors' own MCP servers
Nothing; each user connects their account in their MCP client
Your users are developers or employees using Claude, Cursor or similar clients themselves
Build your own MCP servers
MCP servers, an authorization server or library, OAuth apps for each provider, a token store, refresh and revocation
A few apps, users you control, and a team that can own integrations long term
Self-host open-source integration code
An open-source runtime such as Nango (Elastic License 2.0) on your infrastructure, plus your own code for scopes, retries and non-OAuth auth
You want to own the runtime but not write the OAuth flow for each app
Use a managed platform
Your agent and its tool choices; the platform holds connectors and per-user tokens
Many end users bring their own accounts across many apps, inside your product

What first-party MCP servers cover

Many SaaS vendors now run an official remote MCP server. They are a good choice for a person connecting their own account. Their auth options, as documented in October 2026:

Server
Auth
Notes from the docs
OAuth or a personal access token
For OAuth, each MCP host must configure a GitHub App or OAuth App; remote hosting is not available for GitHub Enterprise Server
OAuth 2.1 with dynamic client registration, or a bearer token or API key
Accepts tokens from your own Linear OAuth app, so a product can pass each user's token
OAuth 2.1 or API tokens
Calls use Rovo credits; admins can restrict OAuth access by domain
OAuth only
Headless or automated use is not yet supported
OAuth for interactive clients, agent API keys for autonomous use
Connect platforms can act for connected accounts with an agent API key and the Stripe-Account header; OAuth is not supported for that case

Most of these are designed around a single user who signs in from an MCP client. Linear and Stripe document ways for a product to act for many accounts, and the mechanisms differ. Linear accepts each user's token from your own Linear OAuth app, so your product obtains, stores and refreshes those tokens. Stripe lets a Connect platform use one agent API key and pass the Stripe-Account header for each connected account. Each server covers only its own app. If your agent runs inside your product and acts for your customers, you still need something that holds each customer's credentials for each app.

What you build if you build

Building a multi-user MCP setup yourself covers four areas. The first is about MCP; the other three are about the apps behind it.

1. The MCP server's own auth. Under the current MCP authorization spec, a protected server MUST publish protected resource metadata (RFC 9728), MUST accept only tokens issued for it, and MUST NOT pass a client's token to upstream APIs (security considerations). Clients register through a pre-registered ID, a Client ID Metadata Document, or the now-deprecated Dynamic Client Registration. You need an authorization server for this, or a service that acts as one. The Python SDK handles the resource-server side and does not issue tokens; FastMCP adds token verifiers and an OAuth proxy for providers such as GitHub and Google. Our MCP authorization guide covers this part step by step.

2. An OAuth app for every provider, and its review. To act for users in Google, Slack or Microsoft 365 from your own product, you register an app with each provider and pass its checks:

  • Google. Apps that use restricted scopes, such as full Gmail read access or full Drive access, go through scope verification, which Google says can take several weeks. If user data passes through your servers, Google also requires an independent security assessment, renewed every year. Until an app is verified, it is limited to 100 new users.
  • Slack. Since May 29, 2025, new commercial apps that are not in the Slack Marketplace, and new installs of existing unlisted apps, are limited to one request a minute on conversations.history and conversations.replies, with at most 15 messages per request (Slack changelog). Marketplace approval is its own review.
  • Microsoft. Microsoft recommends publisher verification for multitenant apps, which requires a verified Microsoft AI Cloud Partner Program account. With risk-based step-up consent turned on, users in other tenants cannot consent to most unverified multitenant apps registered after November 8, 2020 that ask for more than sign-in and profile.

3. A store of every user's tokens. Each user authorizes each app once. You encrypt and store the tokens per user and per app, refresh them before they expire, notice when a refresh fails, send the user a new link, and delete the tokens when the user disconnects. FastMCP's OAuth proxy stores and refreshes tokens for the one provider your users sign in with. The MCP SDKs are not built to manage tokens for several downstream apps per user, which is what an agent that touches Gmail, Slack and Salesforce needs. Per-user OAuth for MCP integrations describes the full flow and an isolation test for it.

4. Running it. Rate limits, retries and error mapping for each API, changes when providers update their APIs or scopes, and a per-action audit trail tied to the real user.

Area
How it scales
Recurring work
MCP server auth
Once per server; grows little with users
Keeping up with MCP spec revisions
OAuth app and provider review
Once per provider
Google's independent security assessment renews every year
Token store
Per user, per app
Refresh, reconnect links after failed refreshes, deletion on disconnect
Operations
Per app
Rate limits, retries, provider API and scope changes, audit trail

To estimate the effort for your case, list the apps your agent needs and the review each provider requires, then map them onto these four rows.

How to decide

If
Lean toward
Why
Your users connect their own accounts from Claude, Cursor or similar clients
Vendors' own MCP servers
Each user signs in directly; there is nothing for you to host
One or two apps, and your users are your own employees
Build
One OAuth app per provider, internal Slack apps are exempt from the new rate limits, and the token store stays small
An app no platform supports
Build that one, or use a platform's custom connectors
You write the integration in both cases; the difference is whether you or the platform stores the tokens
You want to run the integration code on your own infrastructure
Self-host open source, such as Nango
You keep the runtime and token store in-house without writing each OAuth flow yourself
Customers connect several SaaS apps each inside your product
Buy
Per-app OAuth apps, reviews, token storage and refresh grow with every app and every user
You need to limit which tools each agent role can use
Buy, or build a gateway
Tool scoping per role is a separate system to build and keep in sync

Where Scalekit fits

Scalekit AgentKit is a managed option for the rows that point to buying. Your agent calls tools, and Scalekit holds each user's credentials for each app.

  • Connectors. 500+ apps and 20,000+ tools, plus custom connectors (Growth plan and up) for any REST API or remote MCP server that is not in the catalog.
  • Per-user tokens. Each user authorizes once; Scalekit stores and refreshes the tokens, and the agent never receives them.
  • Scoped MCP servers. A Virtual MCP server exposes only the tools an agent role needs. Each run uses a session token bound to one user and one server, lasting from 60 seconds to 24 hours.
  • Your own OAuth app when you want it. Swap in your client ID and secret so consent screens show your name. Provider verification for that app is still yours to complete.
  • Pricing by tool call. There is a free plan, and the Growth plan is $99 a month with 100,000 tool calls included, then $0.50 per 1,000.

Buying does not remove all the work. You still choose which tools each agent gets, decide which scopes to request, and own what your agent does with the data. For a vendor-by-vendor comparison, see best managed MCP server platforms.

Questions to ask a platform

  • Whose OAuth app is on the consent screen, and can you switch to your own later without every user signing in again?
  • What happens to a long-running agent task when a token expires partway through?
  • Where do users' credentials live, and can the agent ever read them?
  • How fast does revocation take effect when a user disconnects or leaves?
  • What does the audit log record for each tool call, and for how long?
  • How is pricing counted: per tool call, per connected account, or per unit of compute?

The build vs buy page has the full list of 19 questions and a questionnaire. For the inbound side, adding auth to an MCP server you publish, see MCP authentication: build or buy.

FAQs

Should I build my own MCP servers or use a managed platform?

Build when you need a few apps, your users are people you control, and you can own OAuth for each app over time. Use a managed platform when many end users connect their own accounts across many apps, since per-app OAuth review, token storage and refresh grow with every app and user.

Can I use official MCP servers like GitHub's or Linear's for my users?

Most are designed for a person signing in from an MCP client such as Claude or Cursor. Some document ways to act for many accounts. Linear accepts each user's token from your own Linear OAuth app, which your product then stores and refreshes. Stripe lets a Connect platform use one agent API key with a Stripe-Account header. Each server covers only its own app, so a multi-user product usually still needs its own credential layer.

What is the hardest part of building MCP integrations?

The per-app work: registering and verifying an OAuth app with each provider, storing and refreshing every user's tokens, and handling each API's rate limits and errors.

What is the difference between a first-party MCP server and a managed platform?

A first-party MCP server is run by a SaaS vendor for its own app, and each person signs in to it from an MCP client. A managed platform runs connectors for many apps and stores each of your users' tokens, so your product can act for those users across apps.

How long does Google OAuth verification take?

Google says verification for restricted scopes can take several weeks, and apps whose data passes through third-party servers also need an annual independent security assessment. Unverified apps are limited to 100 new users.

Do I still need my own OAuth app with a managed platform?

Not always. Platforms such as Scalekit can use their own OAuth apps, and you can switch to yours so consent screens show your name. If you use your own app, completing each provider's verification is still your responsibility.

No items found.
Agent
Auth Quickstart
On this page
Share this article
Agent
Auth Quickstart

Acquire enterprise customers with
‍zero upfront cost.

Every feature unlocked. No hidden fees.