mirror of
https://github.com/outbackdingo/optimclaw.git
synced 2026-09-01 09:09:19 +00:00
feat: nearai mcp for web search
This commit is contained in:
+13
-1
@@ -393,6 +393,8 @@ impl AppBuilder {
|
||||
|
||||
let mcp_session_manager = Arc::new(McpSessionManager::new());
|
||||
let mcp_process_manager = Arc::new(McpProcessManager::new());
|
||||
let companion_mcp_server =
|
||||
crate::tools::mcp::config::derive_nearai_companion_mcp_server(&self.config);
|
||||
|
||||
// Create WASM tool runtime eagerly so extensions installed after startup
|
||||
// (e.g. via the web UI) can still be activated. The tools directory is only
|
||||
@@ -469,6 +471,7 @@ impl AppBuilder {
|
||||
let tools = Arc::clone(tools);
|
||||
let mcp_sm = Arc::clone(&mcp_session_manager);
|
||||
let pm = Arc::clone(&mcp_process_manager);
|
||||
let companion_mcp_server = companion_mcp_server.clone();
|
||||
async move {
|
||||
let servers_result = if let Some(ref d) = db {
|
||||
load_mcp_servers_from_db(d.as_ref(), "default").await
|
||||
@@ -476,7 +479,10 @@ impl AppBuilder {
|
||||
crate::tools::mcp::config::load_mcp_servers().await
|
||||
};
|
||||
match servers_result {
|
||||
Ok(servers) => {
|
||||
Ok(mut servers) => {
|
||||
if let Some(companion) = companion_mcp_server {
|
||||
servers.upsert(companion);
|
||||
}
|
||||
let enabled: Vec<_> = servers.enabled_servers().cloned().collect();
|
||||
if !enabled.is_empty() {
|
||||
tracing::debug!(
|
||||
@@ -488,6 +494,8 @@ impl AppBuilder {
|
||||
let mut join_set = tokio::task::JoinSet::new();
|
||||
for server in enabled {
|
||||
let mcp_sm = Arc::clone(&mcp_sm);
|
||||
let nearai_session = Arc::clone(&self.session);
|
||||
let nearai_api_key = self.config.llm.nearai.api_key.clone();
|
||||
let secrets = secrets_store.clone();
|
||||
let tools = Arc::clone(&tools);
|
||||
let pm = Arc::clone(&pm);
|
||||
@@ -498,6 +506,8 @@ impl AppBuilder {
|
||||
let client = match crate::tools::mcp::create_client_from_config(
|
||||
server,
|
||||
&mcp_sm,
|
||||
Some(nearai_session),
|
||||
nearai_api_key,
|
||||
&pm,
|
||||
secrets,
|
||||
"default",
|
||||
@@ -635,6 +645,7 @@ impl AppBuilder {
|
||||
let manager = Arc::new(ExtensionManager::new(
|
||||
Arc::clone(&mcp_session_manager),
|
||||
Arc::clone(&mcp_process_manager),
|
||||
Some(Arc::clone(&self.session)),
|
||||
ext_secrets,
|
||||
Arc::clone(tools),
|
||||
Some(Arc::clone(hooks)),
|
||||
@@ -644,6 +655,7 @@ impl AppBuilder {
|
||||
self.config.tunnel.public_url.clone(),
|
||||
"default".to_string(),
|
||||
self.db.clone(),
|
||||
companion_mcp_server,
|
||||
catalog_entries.clone(),
|
||||
));
|
||||
tools.register_extension_tools(Arc::clone(&manager));
|
||||
|
||||
Reference in New Issue
Block a user