refactor: Refactored the use_mcp_servers field to enabled_mcp_servers to make the purpose of the field more clear
This commit is contained in:
+2
-2
@@ -422,7 +422,7 @@ impl RoleLike for Agent {
|
||||
self.config.global_tools.clone().join(",").into()
|
||||
}
|
||||
|
||||
fn use_mcp_servers(&self) -> Option<String> {
|
||||
fn enabled_mcp_servers(&self) -> Option<String> {
|
||||
self.config.mcp_servers.clone().join(",").into()
|
||||
}
|
||||
|
||||
@@ -455,7 +455,7 @@ impl RoleLike for Agent {
|
||||
}
|
||||
}
|
||||
|
||||
fn set_use_mcp_servers(&mut self, value: Option<String>) {
|
||||
fn set_enabled_mcp_servers(&mut self, value: Option<String>) {
|
||||
match value {
|
||||
Some(servers) => {
|
||||
let servers = servers
|
||||
|
||||
+25
-24
@@ -135,7 +135,7 @@ pub struct Config {
|
||||
|
||||
pub mcp_servers: bool,
|
||||
pub mapping_mcp_servers: IndexMap<String, String>,
|
||||
pub use_mcp_servers: Option<String>,
|
||||
pub enabled_mcp_servers: Option<String>,
|
||||
|
||||
pub repl_prelude: Option<String>,
|
||||
pub cmd_prelude: Option<String>,
|
||||
@@ -221,7 +221,7 @@ impl Default for Config {
|
||||
|
||||
mcp_servers: true,
|
||||
mapping_mcp_servers: Default::default(),
|
||||
use_mcp_servers: None,
|
||||
enabled_mcp_servers: None,
|
||||
|
||||
repl_prelude: None,
|
||||
cmd_prelude: None,
|
||||
@@ -648,7 +648,7 @@ impl Config {
|
||||
self.temperature,
|
||||
self.top_p,
|
||||
self.enabled_tools.clone(),
|
||||
self.use_mcp_servers.clone(),
|
||||
self.enabled_mcp_servers.clone(),
|
||||
);
|
||||
role
|
||||
}
|
||||
@@ -696,8 +696,8 @@ impl Config {
|
||||
("top_p", format_option_value(&role.top_p())),
|
||||
("enabled_tools", format_option_value(&role.enabled_tools())),
|
||||
(
|
||||
"use_mcp_servers",
|
||||
format_option_value(&role.use_mcp_servers()),
|
||||
"enabled_mcp_servers",
|
||||
format_option_value(&role.enabled_mcp_servers()),
|
||||
),
|
||||
(
|
||||
"max_output_tokens",
|
||||
@@ -771,13 +771,13 @@ impl Config {
|
||||
let value = parse_value(value)?;
|
||||
config.write().set_enabled_tools(value);
|
||||
}
|
||||
"use_mcp_servers" => {
|
||||
"enabled_mcp_servers" => {
|
||||
let value: Option<String> = parse_value(value)?;
|
||||
if let Some(servers) = value.as_ref() {
|
||||
if let Some(registry) = &config.read().mcp_registry {
|
||||
if registry.list_configured_servers().is_empty() {
|
||||
bail!(
|
||||
"No MCP servers are configured. Please configure MCP servers first before setting 'use_mcp_servers'."
|
||||
"No MCP servers are configured. Please configure MCP servers first before setting 'enabled_mcp_servers'."
|
||||
);
|
||||
}
|
||||
|
||||
@@ -788,12 +788,12 @@ impl Config {
|
||||
|| s == "all"
|
||||
}) {
|
||||
bail!(
|
||||
"Some of the specified MCP servers in 'use_mcp_servers' are configured. Please check your MCP server configuration."
|
||||
"Some of the specified MCP servers in 'enabled_mcp_servers' are configured. Please check your MCP server configuration."
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
config.write().set_use_mcp_servers(value.clone());
|
||||
config.write().set_enabled_mcp_servers(value.clone());
|
||||
if config.read().mcp_servers {
|
||||
config.write().functions.clear_mcp_meta_functions();
|
||||
let registry = config
|
||||
@@ -854,13 +854,14 @@ impl Config {
|
||||
.mcp_registry
|
||||
.take()
|
||||
.expect("MCP registry should be initialized");
|
||||
let use_mcp_servers = if value {
|
||||
config.read().use_mcp_servers.clone()
|
||||
let enabled_mcp_servers = if value {
|
||||
config.read().enabled_mcp_servers.clone()
|
||||
} else {
|
||||
None
|
||||
};
|
||||
let new_registry =
|
||||
McpRegistry::reinit(registry, use_mcp_servers, abort_signal.clone()).await?;
|
||||
McpRegistry::reinit(registry, enabled_mcp_servers, abort_signal.clone())
|
||||
.await?;
|
||||
if !new_registry.is_empty() && value {
|
||||
config
|
||||
.write()
|
||||
@@ -977,10 +978,10 @@ impl Config {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn set_use_mcp_servers(&mut self, value: Option<String>) {
|
||||
pub fn set_enabled_mcp_servers(&mut self, value: Option<String>) {
|
||||
match self.role_like_mut() {
|
||||
Some(role_like) => role_like.set_use_mcp_servers(value),
|
||||
None => self.use_mcp_servers = value,
|
||||
Some(role_like) => role_like.set_enabled_mcp_servers(value),
|
||||
None => self.enabled_mcp_servers = value,
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1094,7 +1095,7 @@ impl Config {
|
||||
pub async fn use_role(&mut self, name: &str, abort_signal: AbortSignal) -> Result<()> {
|
||||
let role = self.retrieve_role(name)?;
|
||||
let mcp_servers = if self.mcp_servers {
|
||||
role.use_mcp_servers()
|
||||
role.enabled_mcp_servers()
|
||||
} else {
|
||||
eprintln!(
|
||||
"{}",
|
||||
@@ -1354,7 +1355,7 @@ impl Config {
|
||||
let mut new_session = false;
|
||||
if let Some(session) = session.as_mut() {
|
||||
let mcp_servers = if self.mcp_servers {
|
||||
session.use_mcp_servers()
|
||||
session.enabled_mcp_servers()
|
||||
} else {
|
||||
eprintln!(
|
||||
"{}",
|
||||
@@ -2034,7 +2035,7 @@ impl Config {
|
||||
fn select_enabled_mcp_servers(&self, role: &Role) -> Vec<FunctionDeclaration> {
|
||||
let mut mcp_functions = vec![];
|
||||
if self.mcp_servers {
|
||||
if let Some(use_mcp_servers) = role.use_mcp_servers() {
|
||||
if let Some(enabled_mcp_servers) = role.enabled_mcp_servers() {
|
||||
let mut server_names: HashSet<String> = Default::default();
|
||||
let mcp_declaration_names: HashSet<String> = self
|
||||
.functions
|
||||
@@ -2046,10 +2047,10 @@ impl Config {
|
||||
})
|
||||
.map(|v| v.name.to_string())
|
||||
.collect();
|
||||
if use_mcp_servers == "all" {
|
||||
if enabled_mcp_servers == "all" {
|
||||
server_names.extend(mcp_declaration_names);
|
||||
} else {
|
||||
for item in use_mcp_servers.split(',') {
|
||||
for item in enabled_mcp_servers.split(',') {
|
||||
let item = item.trim();
|
||||
let item_invoke_name =
|
||||
format!("{}_{item}", MCP_INVOKE_META_FUNCTION_NAME_PREFIX);
|
||||
@@ -2190,7 +2191,7 @@ impl Config {
|
||||
"temperature",
|
||||
"top_p",
|
||||
"enabled_tools",
|
||||
"use_mcp_servers",
|
||||
"enabled_mcp_servers",
|
||||
"save_session",
|
||||
"compress_threshold",
|
||||
"rag_reranker_model",
|
||||
@@ -2252,7 +2253,7 @@ impl Config {
|
||||
.collect()
|
||||
}
|
||||
"mcp_servers" => complete_bool(self.mcp_servers),
|
||||
"use_mcp_servers" => {
|
||||
"enabled_mcp_servers" => {
|
||||
let mut prefix = String::new();
|
||||
let mut ignores = HashSet::new();
|
||||
if let Some((v, _)) = args[1].rsplit_once(',') {
|
||||
@@ -2838,7 +2839,7 @@ impl Config {
|
||||
let mcp_registry = McpRegistry::init(
|
||||
log_path,
|
||||
start_mcp_servers,
|
||||
self.use_mcp_servers.clone(),
|
||||
self.enabled_mcp_servers.clone(),
|
||||
abort_signal.clone(),
|
||||
self,
|
||||
)
|
||||
@@ -2952,7 +2953,7 @@ pub async fn macro_execute(
|
||||
config.temperature = role.temperature();
|
||||
config.top_p = role.top_p();
|
||||
config.enabled_tools = role.enabled_tools().clone();
|
||||
config.use_mcp_servers = role.use_mcp_servers().clone();
|
||||
config.enabled_mcp_servers = role.enabled_mcp_servers().clone();
|
||||
config.macro_flag = true;
|
||||
config.model = role.model().clone();
|
||||
config.role = None;
|
||||
|
||||
+22
-16
@@ -29,12 +29,12 @@ pub trait RoleLike {
|
||||
fn temperature(&self) -> Option<f64>;
|
||||
fn top_p(&self) -> Option<f64>;
|
||||
fn enabled_tools(&self) -> Option<String>;
|
||||
fn use_mcp_servers(&self) -> Option<String>;
|
||||
fn enabled_mcp_servers(&self) -> Option<String>;
|
||||
fn set_model(&mut self, model: Model);
|
||||
fn set_temperature(&mut self, value: Option<f64>);
|
||||
fn set_top_p(&mut self, value: Option<f64>);
|
||||
fn set_enabled_tools(&mut self, value: Option<String>);
|
||||
fn set_use_mcp_servers(&mut self, value: Option<String>);
|
||||
fn set_enabled_mcp_servers(&mut self, value: Option<String>);
|
||||
}
|
||||
|
||||
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
|
||||
@@ -54,7 +54,7 @@ pub struct Role {
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
enabled_tools: Option<String>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
use_mcp_servers: Option<String>,
|
||||
enabled_mcp_servers: Option<String>,
|
||||
|
||||
#[serde(skip)]
|
||||
model: Model,
|
||||
@@ -88,8 +88,8 @@ impl Role {
|
||||
"enabled_tools" => {
|
||||
role.enabled_tools = value.as_str().map(|v| v.to_string())
|
||||
}
|
||||
"use_mcp_servers" => {
|
||||
role.use_mcp_servers = value.as_str().map(|v| v.to_string())
|
||||
"enabled_mcp_servers" => {
|
||||
role.enabled_mcp_servers = value.as_str().map(|v| v.to_string())
|
||||
}
|
||||
_ => (),
|
||||
}
|
||||
@@ -131,8 +131,8 @@ impl Role {
|
||||
if let Some(enabled_tools) = self.enabled_tools() {
|
||||
metadata.push(format!("enabled_tools: {enabled_tools}"));
|
||||
}
|
||||
if let Some(use_mcp_servers) = self.use_mcp_servers() {
|
||||
metadata.push(format!("use_mcp_servers: {use_mcp_servers}"));
|
||||
if let Some(enabled_mcp_servers) = self.enabled_mcp_servers() {
|
||||
metadata.push(format!("enabled_mcp_servers: {enabled_mcp_servers}"));
|
||||
}
|
||||
if metadata.is_empty() {
|
||||
format!("{}\n", self.prompt)
|
||||
@@ -171,8 +171,14 @@ impl Role {
|
||||
let temperature = role_like.temperature();
|
||||
let top_p = role_like.top_p();
|
||||
let enabled_tools = role_like.enabled_tools();
|
||||
let use_mcp_servers = role_like.use_mcp_servers();
|
||||
self.batch_set(model, temperature, top_p, enabled_tools, use_mcp_servers);
|
||||
let enabled_mcp_servers = role_like.enabled_mcp_servers();
|
||||
self.batch_set(
|
||||
model,
|
||||
temperature,
|
||||
top_p,
|
||||
enabled_tools,
|
||||
enabled_mcp_servers,
|
||||
);
|
||||
}
|
||||
|
||||
pub fn batch_set(
|
||||
@@ -181,7 +187,7 @@ impl Role {
|
||||
temperature: Option<f64>,
|
||||
top_p: Option<f64>,
|
||||
enabled_tools: Option<String>,
|
||||
use_mcp_servers: Option<String>,
|
||||
enabled_mcp_servers: Option<String>,
|
||||
) {
|
||||
self.set_model(model.clone());
|
||||
if temperature.is_some() {
|
||||
@@ -193,8 +199,8 @@ impl Role {
|
||||
if enabled_tools.is_some() {
|
||||
self.set_enabled_tools(enabled_tools);
|
||||
}
|
||||
if use_mcp_servers.is_some() {
|
||||
self.set_use_mcp_servers(use_mcp_servers);
|
||||
if enabled_mcp_servers.is_some() {
|
||||
self.set_enabled_mcp_servers(enabled_mcp_servers);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -291,8 +297,8 @@ impl RoleLike for Role {
|
||||
self.enabled_tools.clone()
|
||||
}
|
||||
|
||||
fn use_mcp_servers(&self) -> Option<String> {
|
||||
self.use_mcp_servers.clone()
|
||||
fn enabled_mcp_servers(&self) -> Option<String> {
|
||||
self.enabled_mcp_servers.clone()
|
||||
}
|
||||
|
||||
fn set_model(&mut self, model: Model) {
|
||||
@@ -314,8 +320,8 @@ impl RoleLike for Role {
|
||||
self.enabled_tools = value;
|
||||
}
|
||||
|
||||
fn set_use_mcp_servers(&mut self, value: Option<String>) {
|
||||
self.use_mcp_servers = value;
|
||||
fn set_enabled_mcp_servers(&mut self, value: Option<String>) {
|
||||
self.enabled_mcp_servers = value;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+11
-11
@@ -27,7 +27,7 @@ pub struct Session {
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
enabled_tools: Option<String>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
use_mcp_servers: Option<String>,
|
||||
enabled_mcp_servers: Option<String>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
save_session: Option<bool>,
|
||||
#[serde(skip_serializing_if = "Option::is_none")]
|
||||
@@ -159,8 +159,8 @@ impl Session {
|
||||
if let Some(enabled_tools) = self.enabled_tools() {
|
||||
data["enabled_tools"] = enabled_tools.into();
|
||||
}
|
||||
if let Some(use_mcp_servers) = self.use_mcp_servers() {
|
||||
data["use_mcp_servers"] = use_mcp_servers.into();
|
||||
if let Some(enabled_mcp_servers) = self.enabled_mcp_servers() {
|
||||
data["enabled_mcp_servers"] = enabled_mcp_servers.into();
|
||||
}
|
||||
if let Some(save_session) = self.save_session() {
|
||||
data["save_session"] = save_session.into();
|
||||
@@ -208,8 +208,8 @@ impl Session {
|
||||
items.push(("enabled_tools", enabled_tools));
|
||||
}
|
||||
|
||||
if let Some(use_mcp_servers) = self.use_mcp_servers() {
|
||||
items.push(("use_mcp_servers", use_mcp_servers));
|
||||
if let Some(enabled_mcp_servers) = self.enabled_mcp_servers() {
|
||||
items.push(("enabled_mcp_servers", enabled_mcp_servers));
|
||||
}
|
||||
|
||||
if let Some(save_session) = self.save_session() {
|
||||
@@ -281,7 +281,7 @@ impl Session {
|
||||
self.temperature = role.temperature();
|
||||
self.top_p = role.top_p();
|
||||
self.enabled_tools = role.enabled_tools();
|
||||
self.use_mcp_servers = role.use_mcp_servers();
|
||||
self.enabled_mcp_servers = role.enabled_mcp_servers();
|
||||
self.model = role.model().clone();
|
||||
self.role_name = convert_option_string(role.name());
|
||||
self.role_prompt = role.prompt().to_string();
|
||||
@@ -591,8 +591,8 @@ impl RoleLike for Session {
|
||||
self.enabled_tools.clone()
|
||||
}
|
||||
|
||||
fn use_mcp_servers(&self) -> Option<String> {
|
||||
self.use_mcp_servers.clone()
|
||||
fn enabled_mcp_servers(&self) -> Option<String> {
|
||||
self.enabled_mcp_servers.clone()
|
||||
}
|
||||
|
||||
fn set_model(&mut self, model: Model) {
|
||||
@@ -625,9 +625,9 @@ impl RoleLike for Session {
|
||||
}
|
||||
}
|
||||
|
||||
fn set_use_mcp_servers(&mut self, value: Option<String>) {
|
||||
if self.use_mcp_servers != value {
|
||||
self.use_mcp_servers = value;
|
||||
fn set_enabled_mcp_servers(&mut self, value: Option<String>) {
|
||||
if self.enabled_mcp_servers != value {
|
||||
self.enabled_mcp_servers = value;
|
||||
self.dirty = true;
|
||||
}
|
||||
}
|
||||
|
||||
+9
-6
@@ -57,7 +57,7 @@ impl McpRegistry {
|
||||
pub async fn init(
|
||||
log_path: Option<PathBuf>,
|
||||
start_mcp_servers: bool,
|
||||
use_mcp_servers: Option<String>,
|
||||
enabled_mcp_servers: Option<String>,
|
||||
abort_signal: AbortSignal,
|
||||
config: &Config,
|
||||
) -> Result<Self> {
|
||||
@@ -109,7 +109,7 @@ impl McpRegistry {
|
||||
|
||||
if start_mcp_servers && config.mcp_servers {
|
||||
abortable_run_with_spinner(
|
||||
registry.start_select_mcp_servers(use_mcp_servers),
|
||||
registry.start_select_mcp_servers(enabled_mcp_servers),
|
||||
"Loading MCP servers",
|
||||
abort_signal,
|
||||
)
|
||||
@@ -121,7 +121,7 @@ impl McpRegistry {
|
||||
|
||||
pub async fn reinit(
|
||||
registry: McpRegistry,
|
||||
use_mcp_servers: Option<String>,
|
||||
enabled_mcp_servers: Option<String>,
|
||||
abort_signal: AbortSignal,
|
||||
) -> Result<Self> {
|
||||
debug!("Reinitializing MCP registry");
|
||||
@@ -134,7 +134,7 @@ impl McpRegistry {
|
||||
.await?;
|
||||
|
||||
abortable_run_with_spinner(
|
||||
new_registry.start_select_mcp_servers(use_mcp_servers),
|
||||
new_registry.start_select_mcp_servers(enabled_mcp_servers),
|
||||
"Loading MCP servers",
|
||||
abort_signal,
|
||||
)
|
||||
@@ -143,13 +143,16 @@ impl McpRegistry {
|
||||
Ok(new_registry)
|
||||
}
|
||||
|
||||
async fn start_select_mcp_servers(&mut self, use_mcp_servers: Option<String>) -> Result<()> {
|
||||
async fn start_select_mcp_servers(
|
||||
&mut self,
|
||||
enabled_mcp_servers: Option<String>,
|
||||
) -> Result<()> {
|
||||
if self.config.is_none() {
|
||||
debug!("MCP config is not present; assuming MCP servers are disabled globally. Skipping MCP initialization");
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
if let Some(servers) = use_mcp_servers {
|
||||
if let Some(servers) = enabled_mcp_servers {
|
||||
debug!("Starting selected MCP servers: {:?}", servers);
|
||||
let config = self
|
||||
.config
|
||||
|
||||
+14
-11
@@ -700,13 +700,13 @@ pub async fn run_repl_command(
|
||||
.mcp_registry
|
||||
.take()
|
||||
.expect("MCP registry should exist");
|
||||
let use_mcp_servers = if config.read().mcp_servers {
|
||||
config.read().use_mcp_servers.clone()
|
||||
let enabled_mcp_servers = if config.read().mcp_servers {
|
||||
config.read().enabled_mcp_servers.clone()
|
||||
} else {
|
||||
None
|
||||
};
|
||||
let registry =
|
||||
McpRegistry::reinit(registry, use_mcp_servers, abort_signal.clone())
|
||||
McpRegistry::reinit(registry, enabled_mcp_servers, abort_signal.clone())
|
||||
.await?;
|
||||
if !registry.is_empty() {
|
||||
config
|
||||
@@ -726,14 +726,17 @@ pub async fn run_repl_command(
|
||||
.mcp_registry
|
||||
.take()
|
||||
.expect("MCP registry should exist");
|
||||
let use_mcp_servers = if config.read().mcp_servers {
|
||||
config.read().use_mcp_servers.clone()
|
||||
let enabled_mcp_servers = if config.read().mcp_servers {
|
||||
config.read().enabled_mcp_servers.clone()
|
||||
} else {
|
||||
None
|
||||
};
|
||||
let registry =
|
||||
McpRegistry::reinit(registry, use_mcp_servers, abort_signal.clone())
|
||||
.await?;
|
||||
let registry = McpRegistry::reinit(
|
||||
registry,
|
||||
enabled_mcp_servers,
|
||||
abort_signal.clone(),
|
||||
)
|
||||
.await?;
|
||||
if !registry.is_empty() {
|
||||
config
|
||||
.write()
|
||||
@@ -757,13 +760,13 @@ pub async fn run_repl_command(
|
||||
.mcp_registry
|
||||
.take()
|
||||
.expect("MCP registry should exist");
|
||||
let use_mcp_servers = if config.read().mcp_servers {
|
||||
config.read().use_mcp_servers.clone()
|
||||
let enabled_mcp_servers = if config.read().mcp_servers {
|
||||
config.read().enabled_mcp_servers.clone()
|
||||
} else {
|
||||
None
|
||||
};
|
||||
let registry =
|
||||
McpRegistry::reinit(registry, use_mcp_servers, abort_signal.clone())
|
||||
McpRegistry::reinit(registry, enabled_mcp_servers, abort_signal.clone())
|
||||
.await?;
|
||||
if !registry.is_empty() {
|
||||
config
|
||||
|
||||
Reference in New Issue
Block a user