Register an application
You have an MCP server running somewhere. Maybe a GitHub MCP at https://mcp.acme.example, maybe an internal tools API at https://api.acme.example. You want AuthSec to handle who can call what.
This page is the first step. Two minutes.
You've stood up an MCP server (or any HTTP service that AI clients will call) and you want it protected before it sees real traffic.
A registered Application in AuthSec, an introspection secret, and a resource URI the SDK plugs into. You're then 5 minutes from launched.
Before you start
You need:
- An application to protect. An MCP server, an AI agent endpoint, or an HTTP API. Reachable over HTTPS in production. (For local dev against a service running on your laptop, AuthSec also accepts loopback addresses — see local development.)
- Admin access to your AuthSec workspace.
- Five minutes to install an SDK afterward. Python, Go, and TypeScript all ship a one-line wrapper.
In the admin UI
-
Go to Applications in the left nav.
-
Click Create application.
-
Fill in three fields:
- Application name — anything you'll recognise later. "GitHub MCP", "Internal Reporting API". This is for humans; it doesn't affect runtime behaviour.
- Public base URL — the externally-reachable origin of your application. For a hosted MCP server that might be
https://mcp.acme.example. For an internal API it might behttps://api.acme.example. - Protected path — the URL prefix you want AuthSec to guard. For MCP servers this is almost always
/mcp(see why /mcp). For a REST API it might be/v1.
-
Click Create and protect.
That's it. You land on the application detail view.
What you see next
The detail view shows the Setup step with the pieces needed to protect the application:
- Copy the one-time introspection secret.
- Install the AuthSec SDK wrapper.
- Publish the tool manifest — the list of tools your application exposes, so AuthSec knows what to enforce policy on.
- Review tool access before launch — map each tool to the scopes that should be required to call it.
The introspection secret is shown once on this screen. Copy it, store it in your application's environment as AUTHSEC_INTROSPECTION_CLIENT_SECRET, and don't refresh the page before you've grabbed it. If you lose it, hit Rotate secret on the same screen.
Why these three fields
Application name is cosmetic. Pick something operators will recognise in the audit log.
Public base URL is the origin token validators check against. AuthSec will mint tokens whose aud (audience) claim is composed from this URL plus the protected path. If your application's deployed URL doesn't match what you registered here, every token will be rejected with invalid_audience. (See troubleshoot OAuth tokens for the four-claim debug checklist.)
Protected path tells AuthSec which prefix to enforce. Everything under that path needs a valid bearer token; everything else is left alone. For MCP servers /mcp is the convention every AI client expects.
What's next
Now install the SDK and let it pull the rest of the configuration automatically:
- Python SDK quickstart —
mount_mcp(app, "/mcp", handler, cfg)in your FastAPI / Starlette app. - Go SDK quickstart —
authsec.MountMCP(mux, "/mcp", handler, cfg)in yournet/httpserver. - TypeScript SDK quickstart —
mountMCP(app, options)in your Express / Fastify app.
Once the SDK is mounted and your application restarts, the manifest publishes automatically and you'll see the discovered tools on the Tools tab of the Application detail page.
Related
- How AuthSec protects your MCP server — the mental model
- What is MCP and a resource server? — background
- SDK overview — pick a language
- Launch the application — the gate after review
When you need the API
This page is the product walkthrough. If you're scripting registration (e.g. as part of CI), see the API reference for the underlying endpoint, the full response schema, the state machine, and the auth scheme. You almost never need it — the admin UI and the SDK cover the whole flow.