Skip to content

Commit 2e60be9

Browse files
add unstable mcp-over-acp additions to the schema (#1173)
* feat: ignore agent-specific files * Gate MCP-over-ACP types behind unstable_mcp_over_acp feature Gate McpServer::Acp, McpServerAcp, and McpCapabilities.acp behind convention for unstable protocol features. * Cleanups * Mirror MCP-over-ACP types in v2 module v2 protocol types currently mirror v1 (enforced by JSON round-trip tests in conversion.rs). Mirror the new unstable MCP-over-ACP additions: - McpServerAcpId newtype - McpServerAcp struct - McpServer::Acp variant - McpCapabilities.acp field Plus IntoV1/IntoV2 conversions for the new types, all gated behind unstable_mcp_over_acp. Regenerates schema.v2.unstable.json and draft/schema-v2.mdx. --------- Co-authored-by: Ben Brandt <benjamin.j.brandt@gmail.com>
1 parent aadfc25 commit 2e60be9

9 files changed

Lines changed: 663 additions & 6 deletions

File tree

.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,3 +14,8 @@ typescript/*.js.map
1414

1515
# TypeDoc generated documentation
1616
typescript/docs/
17+
18+
.agents
19+
.kiro
20+
.claude
21+

Cargo.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ unstable = [
2020
"unstable_elicitation",
2121
"unstable_llm_providers",
2222
"unstable_logout",
23+
"unstable_mcp_over_acp",
2324
"unstable_nes",
2425
"unstable_session_additional_directories",
2526
"unstable_session_fork",
@@ -38,6 +39,7 @@ unstable_cancel_request = []
3839
unstable_elicitation = []
3940
unstable_llm_providers = []
4041
unstable_logout = []
42+
unstable_mcp_over_acp = []
4143
unstable_nes = []
4244
unstable_session_additional_directories = []
4345
unstable_session_fork = []

docs/protocol/draft/schema-v2.mdx

Lines changed: 97 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/exte
309309
<ResponseField name="agentCapabilities" type={<a href="#agentcapabilities">AgentCapabilities</a>} >
310310
Capabilities supported by the agent.
311311

312-
- Default: `{"auth":{},"loadSession":false,"mcpCapabilities":{"http":false,"sse":false},"promptCapabilities":{"audio":false,"embeddedContext":false,"image":false},"sessionCapabilities":{}}`
312+
- Default: `{"auth":{},"loadSession":false,"mcpCapabilities":{"acp":false,"http":false,"sse":false},"promptCapabilities":{"audio":false,"embeddedContext":false,"image":false},"sessionCapabilities":{}}`
313313

314314
</ResponseField>
315315
<ResponseField name="agentInfo" type={<><span><a href="#implementation">Implementation</a></span><span> | null</span></>} >
@@ -2491,7 +2491,7 @@ Authentication-related capabilities supported by the agent.
24912491
<ResponseField name="mcpCapabilities" type={<a href="#mcpcapabilities">McpCapabilities</a>} >
24922492
MCP capabilities supported by the agent.
24932493

2494-
- Default: `{"http":false,"sse":false}`
2494+
- Default: `{"acp":false,"http":false,"sse":false}`
24952495

24962496
</ResponseField>
24972497
<ResponseField name="nes" type={<><span><a href="#nescapabilities">NesCapabilities</a></span><span> | null</span></>} >
@@ -4367,6 +4367,16 @@ these keys.
43674367

43684368
See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)
43694369

4370+
</ResponseField>
4371+
<ResponseField name="acp" type={"boolean"} >
4372+
**UNSTABLE**
4373+
4374+
This capability is not part of the spec yet, and may be removed or changed at any point.
4375+
4376+
Agent supports `McpServer::Acp`.
4377+
4378+
- Default: `false`
4379+
43704380
</ResponseField>
43714381
<ResponseField name="http" type={"boolean"} >
43724382
Agent supports `McpServer::Http`.
@@ -4454,6 +4464,43 @@ See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/exte
44544464
</Expandable>
44554465
</ResponseField>
44564466

4467+
<ResponseField name="acp" type="object">
4468+
**UNSTABLE**
4469+
4470+
This capability is not part of the spec yet, and may be removed or changed at any point.
4471+
4472+
ACP transport configuration
4473+
4474+
Only available when the Agent capabilities indicate `mcp_capabilities.acp` is `true`.
4475+
The MCP server is provided by an ACP component and communicates over the ACP channel.
4476+
4477+
<Expandable title="Properties">
4478+
4479+
<ResponseField name="_meta" type={"object | null"} >
4480+
The _meta property is reserved by ACP to allow clients and agents to attach additional
4481+
metadata to their interactions. Implementations MUST NOT make assumptions about values at
4482+
these keys.
4483+
4484+
See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)
4485+
4486+
</ResponseField>
4487+
<ResponseField name="id" type={<a href="#mcpserveracpid">McpServerAcpId</a>} required>
4488+
Unique identifier for this MCP server, generated by the component providing it.
4489+
4490+
Providers MUST NOT reuse an ID for multiple ACP-transport MCP servers that are visible
4491+
on the same ACP connection.
4492+
4493+
</ResponseField>
4494+
<ResponseField name="name" type={"string"} required>
4495+
Human-readable name identifying this MCP server.
4496+
</ResponseField>
4497+
<ResponseField name="type" type={"string"} required>
4498+
The discriminator value. Must be `"acp"`.
4499+
</ResponseField>
4500+
4501+
</Expandable>
4502+
</ResponseField>
4503+
44574504
<ResponseField name="stdio">
44584505
Stdio transport configuration
44594506

@@ -4485,6 +4532,54 @@ See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/exte
44854532
</Expandable>
44864533
</ResponseField>
44874534

4535+
## <span class="font-mono">McpServerAcp</span>
4536+
4537+
**UNSTABLE**
4538+
4539+
This capability is not part of the spec yet, and may be removed or changed at any point.
4540+
4541+
ACP transport configuration for MCP.
4542+
4543+
The MCP server is provided by an ACP component and communicates over the ACP channel
4544+
using `mcp/connect`, `mcp/message`, and `mcp/disconnect`.
4545+
4546+
**Type:** Object
4547+
4548+
**Properties:**
4549+
4550+
<ResponseField name="_meta" type={"object | null"} >
4551+
The _meta property is reserved by ACP to allow clients and agents to attach additional
4552+
metadata to their interactions. Implementations MUST NOT make assumptions about values at
4553+
these keys.
4554+
4555+
See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)
4556+
4557+
</ResponseField>
4558+
<ResponseField name="id" type={<a href="#mcpserveracpid">McpServerAcpId</a>} required>
4559+
Unique identifier for this MCP server, generated by the component providing it.
4560+
4561+
Providers MUST NOT reuse an ID for multiple ACP-transport MCP servers that are visible
4562+
on the same ACP connection.
4563+
4564+
</ResponseField>
4565+
<ResponseField name="name" type={"string"} required>
4566+
Human-readable name identifying this MCP server.
4567+
</ResponseField>
4568+
4569+
## <span class="font-mono">McpServerAcpId</span>
4570+
4571+
**UNSTABLE**
4572+
4573+
This capability is not part of the spec yet, and may be removed or changed at any point.
4574+
4575+
Unique identifier for an MCP server using the ACP transport.
4576+
4577+
The value is opaque and generated by the ACP component providing the MCP server. It is
4578+
used by `mcp/connect` to route connection requests back to the component that declared the
4579+
server.
4580+
4581+
**Type:** `string`
4582+
44884583
## <span class="font-mono">McpServerHttp</span>
44894584

44904585
HTTP transport configuration for MCP.

docs/protocol/draft/schema.mdx

Lines changed: 97 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -309,7 +309,7 @@ See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/exte
309309
<ResponseField name="agentCapabilities" type={<a href="#agentcapabilities">AgentCapabilities</a>} >
310310
Capabilities supported by the agent.
311311

312-
- Default: `{"auth":{},"loadSession":false,"mcpCapabilities":{"http":false,"sse":false},"promptCapabilities":{"audio":false,"embeddedContext":false,"image":false},"sessionCapabilities":{}}`
312+
- Default: `{"auth":{},"loadSession":false,"mcpCapabilities":{"acp":false,"http":false,"sse":false},"promptCapabilities":{"audio":false,"embeddedContext":false,"image":false},"sessionCapabilities":{}}`
313313

314314
</ResponseField>
315315
<ResponseField name="agentInfo" type={<><span><a href="#implementation">Implementation</a></span><span> | null</span></>} >
@@ -2491,7 +2491,7 @@ Authentication-related capabilities supported by the agent.
24912491
<ResponseField name="mcpCapabilities" type={<a href="#mcpcapabilities">McpCapabilities</a>} >
24922492
MCP capabilities supported by the agent.
24932493

2494-
- Default: `{"http":false,"sse":false}`
2494+
- Default: `{"acp":false,"http":false,"sse":false}`
24952495

24962496
</ResponseField>
24972497
<ResponseField name="nes" type={<><span><a href="#nescapabilities">NesCapabilities</a></span><span> | null</span></>} >
@@ -4367,6 +4367,16 @@ these keys.
43674367

43684368
See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)
43694369

4370+
</ResponseField>
4371+
<ResponseField name="acp" type={"boolean"} >
4372+
**UNSTABLE**
4373+
4374+
This capability is not part of the spec yet, and may be removed or changed at any point.
4375+
4376+
Agent supports `McpServer::Acp`.
4377+
4378+
- Default: `false`
4379+
43704380
</ResponseField>
43714381
<ResponseField name="http" type={"boolean"} >
43724382
Agent supports `McpServer::Http`.
@@ -4454,6 +4464,43 @@ See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/exte
44544464
</Expandable>
44554465
</ResponseField>
44564466

4467+
<ResponseField name="acp" type="object">
4468+
**UNSTABLE**
4469+
4470+
This capability is not part of the spec yet, and may be removed or changed at any point.
4471+
4472+
ACP transport configuration
4473+
4474+
Only available when the Agent capabilities indicate `mcp_capabilities.acp` is `true`.
4475+
The MCP server is provided by an ACP component and communicates over the ACP channel.
4476+
4477+
<Expandable title="Properties">
4478+
4479+
<ResponseField name="_meta" type={"object | null"} >
4480+
The _meta property is reserved by ACP to allow clients and agents to attach additional
4481+
metadata to their interactions. Implementations MUST NOT make assumptions about values at
4482+
these keys.
4483+
4484+
See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)
4485+
4486+
</ResponseField>
4487+
<ResponseField name="id" type={<a href="#mcpserveracpid">McpServerAcpId</a>} required>
4488+
Unique identifier for this MCP server, generated by the component providing it.
4489+
4490+
Providers MUST NOT reuse an ID for multiple ACP-transport MCP servers that are visible
4491+
on the same ACP connection.
4492+
4493+
</ResponseField>
4494+
<ResponseField name="name" type={"string"} required>
4495+
Human-readable name identifying this MCP server.
4496+
</ResponseField>
4497+
<ResponseField name="type" type={"string"} required>
4498+
The discriminator value. Must be `"acp"`.
4499+
</ResponseField>
4500+
4501+
</Expandable>
4502+
</ResponseField>
4503+
44574504
<ResponseField name="stdio">
44584505
Stdio transport configuration
44594506

@@ -4485,6 +4532,54 @@ See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/exte
44854532
</Expandable>
44864533
</ResponseField>
44874534

4535+
## <span class="font-mono">McpServerAcp</span>
4536+
4537+
**UNSTABLE**
4538+
4539+
This capability is not part of the spec yet, and may be removed or changed at any point.
4540+
4541+
ACP transport configuration for MCP.
4542+
4543+
The MCP server is provided by an ACP component and communicates over the ACP channel
4544+
using `mcp/connect`, `mcp/message`, and `mcp/disconnect`.
4545+
4546+
**Type:** Object
4547+
4548+
**Properties:**
4549+
4550+
<ResponseField name="_meta" type={"object | null"} >
4551+
The _meta property is reserved by ACP to allow clients and agents to attach additional
4552+
metadata to their interactions. Implementations MUST NOT make assumptions about values at
4553+
these keys.
4554+
4555+
See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)
4556+
4557+
</ResponseField>
4558+
<ResponseField name="id" type={<a href="#mcpserveracpid">McpServerAcpId</a>} required>
4559+
Unique identifier for this MCP server, generated by the component providing it.
4560+
4561+
Providers MUST NOT reuse an ID for multiple ACP-transport MCP servers that are visible
4562+
on the same ACP connection.
4563+
4564+
</ResponseField>
4565+
<ResponseField name="name" type={"string"} required>
4566+
Human-readable name identifying this MCP server.
4567+
</ResponseField>
4568+
4569+
## <span class="font-mono">McpServerAcpId</span>
4570+
4571+
**UNSTABLE**
4572+
4573+
This capability is not part of the spec yet, and may be removed or changed at any point.
4574+
4575+
Unique identifier for an MCP server using the ACP transport.
4576+
4577+
The value is opaque and generated by the ACP component providing the MCP server. It is
4578+
used by `mcp/connect` to route connection requests back to the component that declared the
4579+
server.
4580+
4581+
**Type:** `string`
4582+
44884583
## <span class="font-mono">McpServerHttp</span>
44894584

44904585
HTTP transport configuration for MCP.

schema/schema.unstable.json

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@
7777
}
7878
],
7979
"default": {
80+
"acp": false,
8081
"http": false,
8182
"sse": false
8283
},
@@ -2942,6 +2943,7 @@
29422943
"auth": {},
29432944
"loadSession": false,
29442945
"mcpCapabilities": {
2946+
"acp": false,
29452947
"http": false,
29462948
"sse": false
29472949
},
@@ -3304,6 +3306,11 @@
33043306
"description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)",
33053307
"type": ["object", "null"]
33063308
},
3309+
"acp": {
3310+
"default": false,
3311+
"description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nAgent supports [`McpServer::Acp`].",
3312+
"type": "boolean"
3313+
},
33073314
"http": {
33083315
"default": false,
33093316
"description": "Agent supports [`McpServer::Http`].",
@@ -3351,6 +3358,22 @@
33513358
"required": ["type"],
33523359
"type": "object"
33533360
},
3361+
{
3362+
"allOf": [
3363+
{
3364+
"$ref": "#/$defs/McpServerAcp"
3365+
}
3366+
],
3367+
"description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nACP transport configuration\n\nOnly available when the Agent capabilities indicate `mcp_capabilities.acp` is `true`.\nThe MCP server is provided by an ACP component and communicates over the ACP channel.",
3368+
"properties": {
3369+
"type": {
3370+
"const": "acp",
3371+
"type": "string"
3372+
}
3373+
},
3374+
"required": ["type"],
3375+
"type": "object"
3376+
},
33543377
{
33553378
"allOf": [
33563379
{
@@ -3363,6 +3386,34 @@
33633386
],
33643387
"description": "Configuration for connecting to an MCP (Model Context Protocol) server.\n\nMCP servers provide tools and context that the agent can use when\nprocessing prompts.\n\nSee protocol docs: [MCP Servers](https://agentclientprotocol.com/protocol/session-setup#mcp-servers)"
33653388
},
3389+
"McpServerAcp": {
3390+
"description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nACP transport configuration for MCP.\n\nThe MCP server is provided by an ACP component and communicates over the ACP channel\nusing `mcp/connect`, `mcp/message`, and `mcp/disconnect`.",
3391+
"properties": {
3392+
"_meta": {
3393+
"additionalProperties": true,
3394+
"description": "The _meta property is reserved by ACP to allow clients and agents to attach additional\nmetadata to their interactions. Implementations MUST NOT make assumptions about values at\nthese keys.\n\nSee protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/extensibility)",
3395+
"type": ["object", "null"]
3396+
},
3397+
"id": {
3398+
"allOf": [
3399+
{
3400+
"$ref": "#/$defs/McpServerAcpId"
3401+
}
3402+
],
3403+
"description": "Unique identifier for this MCP server, generated by the component providing it.\n\nProviders MUST NOT reuse an ID for multiple ACP-transport MCP servers that are visible\non the same ACP connection."
3404+
},
3405+
"name": {
3406+
"description": "Human-readable name identifying this MCP server.",
3407+
"type": "string"
3408+
}
3409+
},
3410+
"required": ["name", "id"],
3411+
"type": "object"
3412+
},
3413+
"McpServerAcpId": {
3414+
"description": "**UNSTABLE**\n\nThis capability is not part of the spec yet, and may be removed or changed at any point.\n\nUnique identifier for an MCP server using the ACP transport.\n\nThe value is opaque and generated by the ACP component providing the MCP server. It is\nused by `mcp/connect` to route connection requests back to the component that declared the\nserver.",
3415+
"type": "string"
3416+
},
33663417
"McpServerHttp": {
33673418
"description": "HTTP transport configuration for MCP.",
33683419
"properties": {

0 commit comments

Comments
 (0)