Files

37 lines
1.2 KiB
Rust

// An example script to run an MCP server
use anyhow::Result;
use goose_mcp::MemoryServer;
use tracing_appender::rolling::{RollingFileAppender, Rotation};
use tracing_subscriber::{self, EnvFilter};
#[tokio::main]
async fn main() -> Result<()> {
// Set up file appender for logging
let file_appender = RollingFileAppender::new(Rotation::DAILY, "logs", "goose-mcp-example.log");
// Initialize the tracing subscriber with file and stdout logging
tracing_subscriber::fmt()
.with_env_filter(EnvFilter::from_default_env().add_directive(tracing::Level::INFO.into()))
.with_writer(file_appender)
.with_target(false)
.with_thread_ids(true)
.with_file(true)
.with_line_number(true)
.init();
tracing::info!("Starting MCP server");
// Create an instance of our memory server
let memory_server = MemoryServer::new();
// Run the server using rmcp
let transport = rmcp::transport::stdio();
tracing::info!("Server initialized and ready to handle requests");
let running_service = rmcp::service::serve_directly(memory_server, transport, None);
// Wait for the service to complete
running_service.waiting().await?;
Ok(())
}