Skip to content

Commit 1ccf084

Browse files
Merge pull request #10340 from gitbutlerapp/fix-claude-mcp-configs
Add some tracing in bridge.rs
2 parents 6bef26f + 48663b1 commit 1ccf084

File tree

2 files changed

+16
-9
lines changed

2 files changed

+16
-9
lines changed

crates/but-claude/src/bridge.rs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ use crate::{
2323
ClaudeMessage, ClaudeMessageContent, ClaudeUserParams, PermissionMode, ThinkingLevel,
2424
Transcript, UserInput,
2525
claude_config::fmt_claude_settings,
26-
claude_mcp::ClaudeMcpConfig,
26+
claude_mcp::{BUT_SECURITY_MCP, ClaudeMcpConfig},
2727
claude_settings::ClaudeSettings,
2828
db,
2929
rules::{create_claude_assignment_rule, list_claude_assignment_rules},
@@ -335,13 +335,17 @@ async fn spawn_command(
335335
let disabled_mcp_servers = user_params
336336
.disabled_mcp_servers
337337
.iter()
338+
.filter(|f| *f != BUT_SECURITY_MCP)
338339
.map(String::as_str)
339340
.collect::<Vec<&str>>();
340-
let mcp_config = serde_json::to_string(
341-
&mcp_config
342-
.mcp_servers_with_security()
343-
.exclude(&disabled_mcp_servers),
344-
)?;
341+
let mcp_config = &mcp_config
342+
.mcp_servers_with_security()
343+
.exclude(&disabled_mcp_servers);
344+
tracing::info!(
345+
"spawn_command mcp_servers: {:?}",
346+
mcp_config.mcp_servers.keys()
347+
);
348+
let mcp_config = serde_json::to_string(mcp_config)?;
345349
let mut command = Command::new(claude_executable);
346350

347351
/// Don't create a terminal window on windows.
@@ -413,6 +417,7 @@ async fn spawn_command(
413417
&user_params.message,
414418
user_params.thinking_level,
415419
));
420+
tracing::info!("spawn_command: {:?}", command);
416421
Ok(command.spawn()?)
417422
}
418423

crates/but-claude/src/claude_mcp.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,14 @@ struct Project {
2929
#[derive(Serialize, Deserialize, Debug, Clone)]
3030
#[serde(rename_all = "camelCase")]
3131
pub struct McpConfig {
32-
mcp_servers: McpServers,
32+
pub mcp_servers: McpServers,
3333
}
3434

3535
type McpServers = HashMap<String, McpServer>;
3636

3737
#[derive(Serialize, Deserialize, Debug, Clone)]
3838
#[serde(rename_all = "camelCase")]
39-
struct McpServer {
39+
pub struct McpServer {
4040
r#type: Option<String>,
4141
command: Option<String>,
4242
url: Option<String>,
@@ -52,6 +52,8 @@ pub struct ClaudeMcpConfig {
5252
mcp_json: Option<McpConfig>,
5353
}
5454

55+
pub const BUT_SECURITY_MCP: &str = "but-security";
56+
5557
impl ClaudeMcpConfig {
5658
pub async fn open(settings: &ClaudeSettings, project_path: &Path) -> Self {
5759
Self {
@@ -107,7 +109,7 @@ impl ClaudeMcpConfig {
107109
pub fn mcp_servers_with_security(&self) -> McpConfig {
108110
let mut out = self.mcp_servers();
109111
out.mcp_servers.insert(
110-
"but-security".to_owned(),
112+
BUT_SECURITY_MCP.to_owned(),
111113
McpServer {
112114
r#type: Some("stdio".to_owned()),
113115
command: Some("but".to_owned()),

0 commit comments

Comments
 (0)