mcp standard.dev
mcp discovery standard
Internet-Draft · Individual Submission · March 2026
The "mcp " URI Scheme and MCP Server Discovery Mechanism
draft-serra-mcp-discovery-uri-02 · 99rig · Mumble Group
I-D Exists
This document defines the "mcp" URI scheme, a well-known URI discovery convention, and a DNS TXT fallback — enabling AI agents to autonomously discover MCP servers on any web domain without prior configuration.
1. The mcp:// URI Scheme
A machine-to-machine identifier for publicly reachable MCP servers.
// Syntax (ABNF)
mcp-URI = "mcp://" authority path-abempty [ "?" query ]
// Valid examples
mcp://example.com
mcp://api.example.com/shop
mcp://example.com:8080
2. Discovery Sequence
Upon resolving an mcp:// URI, clients MUST attempt discovery in order:
1
Well-Known URI REQUIRED
HTTP GET to the well-known path. 200 + valid manifest = done. 404 or timeout (5s) = proceed to step 2.
GET https://{host}/.well-known/mcp-server
Accept: application/json
2
DNS TXT Record FALLBACK
Query _mcp.{host} TXT. If present with v=mcp1, extract endpoint. Otherwise proceed to step 3.
_mcp.example.com IN TXT "v=mcp1; endpoint=https://example.com/mcp; auth=none"
3
Direct Endpoint LAST RESORT
Attempt MCP handshake at https://{host}/mcp. If it fails, no server found.
POST https://{host}/mcp
3. Manifest Schema
JSON document returned at /.well-known/mcp-server.
Field Type Req Description
mcp_versionstring MUST MCP spec version (e.g. "2025-06-18")
namestring MUST Human-readable server name
endpointstring MUST URL of the MCP endpoint
transportstring MUST "http" or "stdio"
descriptionstring SHOULD Natural language description
authobject SHOULD { "type": "none" | "apikey" | "oauth2" }
capabilitiesarray SHOULD ["tools", "resources", "prompts"]
categoriesarray MAY Semantic categories
languagesarray MAY ISO 639-1 codes
coveragestring MAY ISO 3166-1 country code
contactstring MAY Contact email or URL
docsstring MAY Documentation URL
last_updatedstring MAY ISO 8601 timestamp
crawlboolean MAY false to opt out of indexing
4. Reference Implementation
This domain serves a live manifest. Try it:
$ curl -s https://mcpstandard.dev/.well-known/mcp-server | python3 -m json.tool
{
"mcp_version" : "2025-06-18" ,
"name" : "mcpstandard.dev Reference Server" ,
"endpoint" : "https://mcpstandard.dev/mcp" ,
"transport" : "http" ,
"auth" : { "type" : "none" },
"capabilities" : ["tools" , "resources" ],
"categories" : ["standards" , "reference" , "discovery" ],
"contact" : "marco.serra@mumble.group" ,
"crawl" : true
}
5. Implement
Server operator
# Minimal manifest
mkdir -p .well-known
cat > .well-known/mcp-server <<EOF
{
"mcp_version" : "2025-06-18" ,
"name" : "My Server" ,
"endpoint" : "https://my.domain/mcp" ,
"transport" : "http"
}
EOF
Client developer
# Resolve mcp://domain.com
# 1. well-known
curl -sf https://domain.com\
/.well-known/mcp-server
# 2. DNS fallback
dig +short TXT _mcp.domain.com
# 3. direct
curl -X POST https://domain.com/mcp
99rig · Mumble Group · Milan, Italy · marco.serra@mumble.group