Skip to content
Merged
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
71 changes: 39 additions & 32 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ uninlined_format_args = "allow"
string_slice = "warn"

[workspace.dependencies]
rmcp = { version = "2", default-features = false, features = ["schemars", "auth"] }
rmcp = { version = "3.0.0", default-features = false, features = ["schemars", "auth"] }
agent-client-protocol-schema = { version = "1.1", default-features = false, features = ["unstable"] }
agent-client-protocol = { version = "1.0", default-features = false }
agent-client-protocol-http = { version = "1.0", default-features = false, features = ["server", "unstable_cancel_request"] }
Expand Down
3 changes: 3 additions & 0 deletions crates/goose-cli/src/scenario_tests/mock_client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ impl McpClientTrait for MockClient {
resources: vec![],
next_cursor: None,
meta: None,
..Default::default()
})
}

Expand Down Expand Up @@ -90,6 +91,7 @@ impl McpClientTrait for MockClient {
tools: rmcp_tools,
next_cursor: None,
meta: None,
..Default::default()
})
}

Expand Down Expand Up @@ -120,6 +122,7 @@ impl McpClientTrait for MockClient {
prompts: vec![],
next_cursor: None,
meta: None,
..Default::default()
})
}

Expand Down
16 changes: 9 additions & 7 deletions crates/goose-mcp/src/autovisualiser/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@ use rmcp::{
handler::server::{router::tool::ToolRouter, wrapper::Parameters},
model::{
CallToolResult, ContentBlock, ErrorCode, ErrorData, Implementation, InitializeResult,
ListResourcesResult, Meta, PaginatedRequestParams, ReadResourceRequestParams,
ReadResourceResult, Resource, ResourceContents, ServerCapabilities, ServerInfo,
ListResourcesResult, MetaObject, PaginatedRequestParams, ReadResourceRequestParams,
ReadResourceResponse, ReadResourceResult, Resource, ResourceContents, ServerCapabilities,
ServerInfo,
},
service::RequestContext,
tool, tool_handler, tool_router, RoleServer, ServerHandler,
Expand All @@ -18,8 +19,8 @@ use std::path::PathBuf;
const MCP_APPS_MIME_TYPE: &str = "text/html;profile=mcp-app";

/// Build a Meta object with `_meta.ui.resourceUri` for linking a tool to a UI resource.
fn ui_resource_meta(uri: &str) -> Meta {
let mut meta = Meta::new();
fn ui_resource_meta(uri: &str) -> MetaObject {
let mut meta = MetaObject::new();
meta.0
.insert("ui".to_string(), json!({ "resourceUri": uri }));
meta
Expand Down Expand Up @@ -694,17 +695,18 @@ impl ServerHandler for AutoVisualiserRouter {
resources,
next_cursor: None,
meta: None,
..Default::default()
})
}

async fn read_resource(
&self,
params: ReadResourceRequestParams,
_context: RequestContext<RoleServer>,
) -> Result<ReadResourceResult, ErrorData> {
) -> Result<ReadResourceResponse, ErrorData> {
let html = self.get_template_html(&params.uri)?;

let mut meta = Meta::new();
let mut meta = MetaObject::new();
meta.0
.insert("ui".to_string(), json!({ "prefersBorder": true }));

Expand All @@ -715,7 +717,7 @@ impl ServerHandler for AutoVisualiserRouter {
meta: Some(meta),
};

Ok(ReadResourceResult::new(vec![resource_contents]))
Ok(ReadResourceResult::new(vec![resource_contents]).into())
}
}

Expand Down
10 changes: 6 additions & 4 deletions crates/goose-mcp/src/computercontroller/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@ use rmcp::{
handler::server::{router::tool::ToolRouter, wrapper::Parameters},
model::{
CallToolResult, ContentBlock, ErrorCode, ErrorData, Implementation, InitializeResult,
ListResourcesResult, PaginatedRequestParams, ReadResourceRequestParams, ReadResourceResult,
Resource, ResourceContents, ServerCapabilities, ServerInfo,
ListResourcesResult, PaginatedRequestParams, ReadResourceRequestParams,
ReadResourceResponse, ReadResourceResult, Resource, ResourceContents, ServerCapabilities,
ServerInfo,
},
schemars::JsonSchema,
service::RequestContext,
Expand Down Expand Up @@ -1649,14 +1650,15 @@ impl ServerHandler for ComputerControllerServer {
resources,
next_cursor: None,
meta: None,
..Default::default()
})
}

async fn read_resource(
&self,
params: ReadResourceRequestParams,
_context: RequestContext<RoleServer>,
) -> Result<ReadResourceResult, ErrorData> {
) -> Result<ReadResourceResponse, ErrorData> {
let active_resources = self.active_resources.lock().unwrap();
let resource = active_resources.get(&params.uri).ok_or_else(|| {
ErrorData::new(
Expand All @@ -1667,6 +1669,6 @@ impl ServerHandler for ComputerControllerServer {
})?;

// Clone the resource to return
Ok(ReadResourceResult::new(vec![resource.clone()]))
Ok(ReadResourceResult::new(vec![resource.clone()]).into())
}
}
Loading
Loading