feat: Handle MCP server notification messages (#2613)

Co-authored-by: Michael Neale <michael.neale@gmail.com>
This commit is contained in:
Jack Amadeo
2025-05-30 11:50:14 -04:00
committed by GitHub
parent eeb61ace22
commit 03e5549b54
40 changed files with 1186 additions and 443 deletions
+6 -8
View File
@@ -2,7 +2,7 @@ use std::sync::Arc;
use dotenv::dotenv;
use futures::StreamExt;
use goose::agents::{Agent, ExtensionConfig};
use goose::agents::{Agent, AgentEvent, ExtensionConfig};
use goose::config::{DEFAULT_EXTENSION_DESCRIPTION, DEFAULT_EXTENSION_TIMEOUT};
use goose::message::Message;
use goose::providers::databricks::DatabricksProvider;
@@ -20,10 +20,11 @@ async fn main() {
let config = ExtensionConfig::stdio(
"developer",
"./target/debug/developer",
"./target/debug/goose",
DEFAULT_EXTENSION_DESCRIPTION,
DEFAULT_EXTENSION_TIMEOUT,
);
)
.with_args(vec!["mcp", "developer"]);
agent.add_extension(config).await.unwrap();
println!("Extensions:");
@@ -35,11 +36,8 @@ async fn main() {
.with_text("can you summarize the readme.md in this dir using just a haiku?")];
let mut stream = agent.reply(&messages, None).await.unwrap();
while let Some(message) = stream.next().await {
println!(
"{}",
serde_json::to_string_pretty(&message.unwrap()).unwrap()
);
while let Some(Ok(AgentEvent::Message(message))) = stream.next().await {
println!("{}", serde_json::to_string_pretty(&message).unwrap());
println!("\n");
}
}