Skip to content

feat(capabilities): add extensions field for SEP-1724#643

Merged
alexhancock merged 1 commit intomodelcontextprotocol:mainfrom
aharvard:feat/sep-1724-extensions-capability
Feb 4, 2026
Merged

feat(capabilities): add extensions field for SEP-1724#643
alexhancock merged 1 commit intomodelcontextprotocol:mainfrom
aharvard:feat/sep-1724-extensions-capability

Conversation

@aharvard
Copy link
Contributor

@aharvard aharvard commented Feb 3, 2026

This PR adds support for MCP extension capabilities in both ClientCapabilities and ServerCapabilities structs, as specified in SEP-1724.

Changes

  • Add ExtensionCapabilities type alias (BTreeMap<String, JsonObject>)
  • Add extensions field to ClientCapabilities struct
  • Add extensions field to ServerCapabilities struct
  • Update builder macros and impl blocks for both structs
  • Add comprehensive tests for extension capabilities
  • Update JSON schema test fixtures

Usage

This enables clients to advertise extension support during initialize:

let mut extensions = ExtensionCapabilities::new();
extensions.insert(
    "io.modelcontextprotocol/ui".to_string(),
    serde_json::from_value(json!({
        "mimeTypes": ["text/html;profile=mcp-app"]
    })).unwrap(),
);

let capabilities = ClientCapabilities::builder()
    .enable_extensions_with(extensions)
    .enable_sampling()
    .build();

Which serializes to:

{
  "capabilities": {
    "extensions": {
      "io.modelcontextprotocol/ui": {
        "mimeTypes": ["text/html;profile=mcp-app"]
      }
    }
  }
}

Related

Add support for MCP extension capabilities in both ClientCapabilities
and ServerCapabilities structs, as specified in SEP-1724.

Changes:
- Add ExtensionCapabilities type alias (BTreeMap<String, JsonObject>)
- Add 'extensions' field to ClientCapabilities struct
- Add 'extensions' field to ServerCapabilities struct
- Update builder macros and impl blocks for both structs
- Add comprehensive tests for extension capabilities
- Update JSON schema test fixtures

This enables clients to advertise extension support during initialize,
such as:

  {
    "capabilities": {
      "extensions": {
        "io.modelcontextprotocol/ui": {
          "mimeTypes": ["text/html;profile=mcp-app"]
        }
      }
    }
  }

Closes modelcontextprotocol#530
@github-actions github-actions bot added T-test Testing related changes T-config Configuration file changes T-core Core library changes T-model Model/data structure changes labels Feb 3, 2026
aharvard added a commit to block/goose that referenced this pull request Feb 3, 2026
WIP: Depends on rmcp PR #643 being merged and released.

This change updates the MCP client to advertise support for the
io.modelcontextprotocol/ui extension during capability negotiation,
as required by the MCP Apps specification.

The client now advertises:
  {
    "capabilities": {
      "extensions": {
        "io.modelcontextprotocol/ui": {
          "mimeTypes": ["text/html;profile=mcp-app"]
        }
      }
    }
  }

Blocked by:
- modelcontextprotocol/rust-sdk#643

Related:
- https://github.com/modelcontextprotocol/ext-apps/blob/main/specification/2026-01-26/apps.mdx
@alexhancock alexhancock self-requested a review February 4, 2026 00:13
@alexhancock alexhancock merged commit 1794fe1 into modelcontextprotocol:main Feb 4, 2026
11 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

T-config Configuration file changes T-core Core library changes T-model Model/data structure changes T-test Testing related changes

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement SEP-1724: Extensions

2 participants