Skip to content

Add MCP server card and AI catalog for agent discovery - #2832

Closed
kaankacar wants to merge 3 commits into
mainfrom
2555-agent-endpoint-discovery
Closed

kaankacar wants to merge 3 commits into
mainfrom
2555-agent-endpoint-discovery

Conversation

@kaankacar

@kaankacar kaankacar commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

Closes #2555

What

  • Add static/.well-known/mcp/server-card.json. It describes the Stellar Raven MCP server at https://raven.stellar.org/mcp with the SEP-2127 v1 card schema.
  • Add static/.well-known/ai-catalog.json. It lists the server card, the agent-skills index, the api-catalog, and llms.txt.
  • Serve the catalog as application/ai-catalog+json. Set Access-Control-Allow-Origin: * on both files.

Why

Agents can now find the official MCP server from the docs domain. The current SEP-2127 draft recommends the AI Catalog path. The isitagentready scanner reads /.well-known/mcp/server-card.json. This PR covers both.

DNS-AID is out of scope. The reasons are in #2555.

Verification

  • Both JSON files parse.
  • The server card validates against the ext-server-card schema.json (ajv, JSON Schema 2020-12).
  • The card version matches Raven's runtime serverInfo (0.1.0). The endpoint matches the Raven README.
  • All catalog URLs except the new card return 200 on production today.

Verified on the PR preview

  • GET /.well-known/mcp/server-card.json: 200, application/mcp-server-card+json, the four CORS headers from the SEP-2127 discovery doc, ETag. Body matches the repo file.
  • OPTIONS on the card: 204.
  • GET /.well-known/ai-catalog.json: 200, application/ai-catalog+json, CORS.
  • isitagentready scan of the preview host: MCP Server Card pass, ARD pass, API Catalog pass, Agent Skills pass.
  • Note: the edge in front of the site replaces Cache-Control with no-cache. The nginx max-age=3600 value does not reach clients. This is the same for every file on the site today.

Closes #2555

- static/.well-known/mcp/server-card.json points agents to the
  Stellar Raven MCP server (SEP-2127 v1 card schema).
- static/.well-known/ai-catalog.json lists the card, the agent-skills
  index, the api-catalog, and llms.txt.
- nginx serves the catalog as application/ai-catalog+json and sets
  Access-Control-Allow-Origin: * on both files.

DNS-AID is out of scope. See the issue for the reasons.
Copilot AI balanced review requested due to automatic review settings September 8, 2026 11:17

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds agent-discovery metadata for Stellar Raven and related AI resources.

Changes:

  • Adds an MCP server card and AI Catalog.
  • Configures MIME types and CORS headers.
  • References existing agent, API, and documentation catalogs.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
static/.well-known/mcp/server-card.json Describes Raven’s MCP endpoint; runtime identity requires alignment.
static/.well-known/ai-catalog.json Catalogs Stellar AI resources.
nginx/nginx.conf Configures discovery responses; card media type and preflight handling are incomplete.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread nginx/nginx.conf
Comment on lines +55 to +57
location = /.well-known/mcp/server-card.json {
add_header 'Access-Control-Allow-Origin' '*' always;
}

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in ece49de. The card is now served as application/mcp-server-card+json. Both files get the CORS set from discovery.md (Allow-Origin, Allow-Methods, Allow-Headers, Expose-Headers), Cache-Control public max-age=3600, and a 204 answer to OPTIONS preflight. nginx sends an ETag for static files by default.

@@ -0,0 +1,18 @@
{
"$schema": "https://static.modelcontextprotocol.io/schemas/v1/server-card.schema.json",
"name": "org.stellar/raven",

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The card schema requires exactly one slash in name (pattern ^[a-zA-Z0-9.-]+/[a-zA-Z0-9._-]+$). Raven's runtime name stellar-raven-codemode does not fit that pattern, so the card cannot copy it. version matches the runtime (0.1.0). Aligning Raven's serverInfo.name to org.stellar/raven is a follow-up in the stellar-raven repo.

@github-actions github-actions Bot added the preview Preview builds for PRs by SDF employees. label Sep 8, 2026
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

- Serve the MCP Server Card as application/mcp-server-card+json.
- Add the CORS headers, Cache-Control, and an OPTIONS preflight answer
  for both the card and the AI Catalog.
- Move the shared headers into nginx/includes/agent-discovery-headers.conf.
Copilot AI review requested due to automatic review settings September 8, 2026 11:26
@github-actions github-actions Bot removed the preview Preview builds for PRs by SDF employees. label Sep 8, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated 1 comment.

Suppressed comments (1)

Previously missed (1) — in code that hasn't changed since the last review.

static/.well-known/ai-catalog.json:6

  • This advertises a verifiable did:web identity, but did:web:developers.stellar.org resolves through /.well-known/did.json, and this PR/repository provides no such file; the nginx fallback will therefore return 404. Consumers that verify the catalog host will see a broken identity claim. Either publish the DID document in this PR or omit the identifier until it exists.

{
"identifier": "urn:air:stellar.org:skills:index",
"displayName": "Stellar Agent Skills index",
"type": "application/agent-skills+json",

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not changed on purpose. The agent-skills discovery RFC says to serve /.well-known/agent-skills/index.json with application/json (cloudflare/agent-skills-discovery-rfc README, publishing checklist). The catalog type field names the artifact kind with the AI Catalog known type. developers.cloudflare.com does the same: catalog type application/agent-skills+json, index served as application/json.

@github-actions github-actions Bot added the preview Preview builds for PRs by SDF employees. label Sep 8, 2026
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

developers.stellar.org publishes no /.well-known/did.json, so
did:web:developers.stellar.org cannot be resolved. The AI Catalog host
verification step resolves host.identifier as a DID and confirms the
hosting domain in the DID document, which fails today. host.identifier
is optional and displayName is the only required host member, so drop
the claim until a DID document exists.
Copilot AI review requested due to automatic review settings September 8, 2026 12:11
@github-actions github-actions Bot removed the preview Preview builds for PRs by SDF employees. label Sep 8, 2026
@kaankacar

Copy link
Copy Markdown
Contributor Author

🤖 Automated message from Kaan's Automated Triage Bot.

Verified against both specs. The preview serves each file with its declared media type, the four CORS headers, ETag, OPTIONS 204 and If-None-Match 304. I removed the did:web host identifier, because this domain serves no did.json.

Decision needed: #2555 left "do we run an official Stellar MCP server?" open. This card names stellar-experimental/stellar-raven as that server, and Raven's runtime name is still stellar-raven-codemode. Publish now, or after Raven is renamed? @kaankacar @ElliotFriend

@kaankacar kaankacar added the bot:needs-decision Bot needs a maintainer decision (listing, scope, policy) label Sep 8, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 4 out of 4 changed files in this pull request and generated no new comments.

@github-actions github-actions Bot added the preview Preview builds for PRs by SDF employees. label Sep 8, 2026
@github-actions

github-actions Bot commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

@ElliotFriend

Copy link
Copy Markdown
Contributor

closing this until the migration to mintlify is finished.

@github-actions github-actions Bot removed the preview Preview builds for PRs by SDF employees. label Sep 15, 2026
@github-actions

Copy link
Copy Markdown
Contributor

PR Preview: torn down

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bot:needs-decision Bot needs a maintainer decision (listing, scope, policy)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Agent endpoint discovery (MCP Server Card + DNS-AID)

3 participants