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
21 changes: 19 additions & 2 deletions crates/goose-cli/src/commands/mcp.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
use anyhow::{anyhow, Result};
use goose_mcp::{
AutoVisualiserRouter, ComputerControllerRouter, DeveloperServer, MemoryRouter, TutorialServer,
AutoVisualiserRouter, ComputerControllerRouter, DeveloperServer, MemoryServer, TutorialServer,
};
use mcp_server::router::RouterService;
use mcp_server::{BoundedService, ByteTransport, Server};
Expand Down Expand Up @@ -65,10 +65,27 @@ pub async fn run_server(name: &str) -> Result<()> {
return Ok(());
}

if name == "memory" {
let service = MemoryServer::new().serve(stdio()).await.inspect_err(|e| {
tracing::error!("serving error: {:?}", e);
})?;

service.waiting().await?;
return Ok(());
}

// Handle old MCP-based servers
if name == "memory" {
let service = MemoryServer::new().serve(stdio()).await.inspect_err(|e| {
tracing::error!("serving error: {:?}", e);
})?;
service.waiting().await?;
return Ok(());
}

// Handle old MCP-based servers
let router: Option<Box<dyn BoundedService>> = match name {
"computercontroller" => Some(Box::new(RouterService(ComputerControllerRouter::new()))),
"memory" => Some(Box::new(RouterService(MemoryRouter::new()))),
_ => None,
};

Expand Down
20 changes: 10 additions & 10 deletions crates/goose-mcp/examples/mcp.rs
Original file line number Diff line number Diff line change
@@ -1,9 +1,6 @@
// An example script to run an MCP server
use anyhow::Result;
use goose_mcp::MemoryRouter;
use mcp_server::router::RouterService;
use mcp_server::{ByteTransport, Server};
use tokio::io::{stdin, stdout};
use goose_mcp::MemoryServer;
use tracing_appender::rolling::{RollingFileAppender, Rotation};
use tracing_subscriber::{self, EnvFilter};

Expand All @@ -24,13 +21,16 @@ async fn main() -> Result<()> {

tracing::info!("Starting MCP server");

// Create an instance of our counter router
let router = RouterService(MemoryRouter::new());
// Create an instance of our memory server
let memory_server = MemoryServer::new();

// Create and run the server
let server = Server::new(router);
let transport = ByteTransport::new(stdin(), stdout());
// Run the server using rmcp
let transport = rmcp::transport::stdio();

tracing::info!("Server initialized and ready to handle requests");
Ok(server.run(transport).await?)
let running_service = rmcp::service::serve_directly(memory_server, transport, None);

// Wait for the service to complete
running_service.waiting().await?;
Ok(())
}
2 changes: 1 addition & 1 deletion crates/goose-mcp/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,5 +16,5 @@ pub mod tutorial;
pub use autovisualiser::AutoVisualiserRouter;
pub use computercontroller::ComputerControllerRouter;
pub use developer::rmcp_developer::DeveloperServer;
pub use memory::MemoryRouter;
pub use memory::MemoryServer;
pub use tutorial::TutorialServer;
Loading
Loading