Send user-configured MCP tools over ACP
This commit is contained in:
parent
65de969cc8
commit
d3758d2e47
1 changed files with 26 additions and 4 deletions
|
@ -162,12 +162,34 @@ impl AgentConnection for AcpConnection {
|
||||||
let conn = self.connection.clone();
|
let conn = self.connection.clone();
|
||||||
let sessions = self.sessions.clone();
|
let sessions = self.sessions.clone();
|
||||||
let cwd = cwd.to_path_buf();
|
let cwd = cwd.to_path_buf();
|
||||||
|
let context_server_store = project.read(cx).context_server_store().read(cx);
|
||||||
|
let mcp_servers = context_server_store
|
||||||
|
.configured_server_ids()
|
||||||
|
.iter()
|
||||||
|
.filter_map(|id| {
|
||||||
|
let configuration = context_server_store.configuration_for_server(id)?;
|
||||||
|
let command = configuration.command();
|
||||||
|
Some(acp::McpServer {
|
||||||
|
name: id.0.to_string(),
|
||||||
|
command: command.path.clone(),
|
||||||
|
args: command.args.clone(),
|
||||||
|
env: if let Some(env) = command.env.as_ref() {
|
||||||
|
env.iter()
|
||||||
|
.map(|(name, value)| acp::EnvVariable {
|
||||||
|
name: name.clone(),
|
||||||
|
value: value.clone(),
|
||||||
|
})
|
||||||
|
.collect()
|
||||||
|
} else {
|
||||||
|
vec![]
|
||||||
|
},
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.collect();
|
||||||
|
|
||||||
cx.spawn(async move |cx| {
|
cx.spawn(async move |cx| {
|
||||||
let response = conn
|
let response = conn
|
||||||
.new_session(acp::NewSessionRequest {
|
.new_session(acp::NewSessionRequest { mcp_servers, cwd })
|
||||||
mcp_servers: vec![],
|
|
||||||
cwd,
|
|
||||||
})
|
|
||||||
.await
|
.await
|
||||||
.map_err(|err| {
|
.map_err(|err| {
|
||||||
if err.code == acp::ErrorCode::AUTH_REQUIRED.code {
|
if err.code == acp::ErrorCode::AUTH_REQUIRED.code {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue