diff --git a/Cargo.lock b/Cargo.lock
index 0f1711a7e..4cf16f93c 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -432,6 +432,7 @@ dependencies = [
"arc-git-storage",
"arc-github",
"arc-llm",
+ "arc-mcp",
"arc-util",
"assert_cmd",
"async-trait",
diff --git a/lib/crates/arc-agent/src/sandbox.rs b/lib/crates/arc-agent/src/sandbox.rs
index ac04523c6..92ac6d50c 100644
--- a/lib/crates/arc-agent/src/sandbox.rs
+++ b/lib/crates/arc-agent/src/sandbox.rs
@@ -1,5 +1,6 @@
use async_trait::async_trait;
use serde::{Deserialize, Serialize};
+use std::collections::HashMap;
use std::fmt::Write;
use std::path::Path;
use std::sync::Arc;
@@ -121,6 +122,10 @@ macro_rules! delegate_sandbox {
self.$field.origin_url()
}
+ async fn get_preview_url(&self, port: u16) -> Result