Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 40 additions & 2 deletions src/agent-client-protocol-core/src/capabilities.rs
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,8 @@ impl MetaCapabilityExt for InitializeRequest {
.as_ref()
.and_then(|meta| meta.get("symposium"))
.and_then(|symposium| symposium.get(capability.key()))
.is_some()
.and_then(|v| v.as_bool())
.unwrap_or(false)
}

fn add_meta_capability(mut self, capability: impl MetaCapability) -> Self {
Expand Down Expand Up @@ -104,7 +105,8 @@ impl MetaCapabilityExt for InitializeResponse {
.as_ref()
.and_then(|meta| meta.get("symposium"))
.and_then(|symposium| symposium.get(capability.key()))
.is_some()
.and_then(|v| v.as_bool())
.unwrap_or(false)
}

fn add_meta_capability(mut self, capability: impl MetaCapability) -> Self {
Expand Down Expand Up @@ -185,4 +187,40 @@ mod tests {
json!(true)
);
}

#[test]
fn test_has_meta_capability_false_value() {
let mut meta = serde_json::Map::new();
meta.insert(
"symposium".to_string(),
json!({
"version": "1.0",
"mcp_acp_transport": false
}),
);
let client_capabilities = ClientCapabilities::new().meta(meta);

let request = InitializeRequest::new(ProtocolVersion::LATEST)
.client_capabilities(client_capabilities);

assert!(!request.has_meta_capability(McpAcpTransport));
}

#[test]
fn test_has_meta_capability_null_value() {
let mut meta = serde_json::Map::new();
meta.insert(
"symposium".to_string(),
json!({
"version": "1.0",
"mcp_acp_transport": null
}),
);
let client_capabilities = ClientCapabilities::new().meta(meta);

let request = InitializeRequest::new(ProtocolVersion::LATEST)
.client_capabilities(client_capabilities);

assert!(!request.has_meta_capability(McpAcpTransport));
}
}
14 changes: 5 additions & 9 deletions src/agent-client-protocol-core/src/mcp_server/builder.rs
Original file line number Diff line number Diff line change
Expand Up @@ -393,17 +393,13 @@ impl<Counterpart: Role> ConnectTo<role::mcp::Client> for McpServerConnection<Cou
let (mcp_client_read, mcp_client_write) = tokio::io::split(mcp_client_stream);

let run_client = async {
// Connect byte_streams to the provided client
let byte_streams =
ByteStreams::new(mcp_client_write.compat_write(), mcp_client_read.compat());
drop(
<ByteStreams<_, _> as ConnectTo<role::mcp::Client>>::connect_to(
byte_streams,
client,
)
.await,
);
Ok(())
<ByteStreams<_, _> as ConnectTo<role::mcp::Client>>::connect_to(
byte_streams,
client,
)
.await
};

let run_server = async {
Expand Down