Discoverability
Server card
Publish MCP server metadata so clients discover your endpoint before connecting.
MCP server cards let clients discover your server name, description, and Streamable HTTP endpoint before connecting. bitmcp serves a spec-shaped JSON document automatically.
Confirm your server is live
Deploy your app and verify health:
curl https://mcp.example.com/healthSet MCP_URL in production so the card advertises the correct public endpoint. See Installation → Environment variables.
Fetch the server card
curl https://mcp.example.com/.well-known/mcp/server-card.jsonOr GET /mcp/server-card when your MCP path is /mcp.
Verify fields
Confirm the JSON includes:
nameandtitlematching your appremotes[0].urlpointing to your public/mcpendpointsupportedProtocolVersionsincluding2026-07-28
Optional customize
import { defineConfig } from "bitmcp";
export default defineConfig({
name: "notes",
version: "1.0.0",
serverCard: {
title: "Notes MCP",
description: "Create and search notes",
websiteUrl: "https://notes.example.com",
},
});Reference
Endpoints
For an MCP path of /mcp, bitmcp serves:
| URL | Purpose |
|---|---|
GET /mcp/server-card | Primary server card endpoint |
GET /.well-known/mcp/server-card.json | Well-known alias |
Responses use Content-Type: application/mcp-server-card+json, public caching with ETag support, and CORS headers for browser discovery.
Default card shape
{
"$schema": "https://static.modelcontextprotocol.io/schemas/v1/server-card.schema.json",
"name": "my-app/mcp",
"version": "0.0.1",
"title": "My App",
"description": "My App MCP server",
"remotes": [
{
"type": "streamable-http",
"url": "https://mcp.example.com/mcp",
"supportedProtocolVersions": ["2026-07-28"]
}
]
}Configure fields
| Field | Description |
|---|---|
enabled | Set false to disable card generation while keeping other config |
name | Override default card name |
title | Display title (defaults to app name) |
description | Card description |
websiteUrl | Public site URL |
repository | Source repository metadata |
icons | Icon URLs with optional mimeType, sizes, and theme |
Disable entirely with serverCard: false.
The well-known path follows current bitmcp behavior. The MCP Server Card working group may standardize a different discovery URL later.
Remote URL resolution
- In production, set
MCP_URLto your public MCP endpoint - Locally, bitmcp resolves the request origin and MCP path automatically
- When OAuth is enabled, the remote URL must match your configured OAuth resource
Vercel projects need a rewrite from /mcp/server-card to the MCP handler in vercel.json.