Skip to content

Commit e9a6baf

Browse files
new: support MCP Protocol 2025_06_18 (#2044)
* chore: bump rust-mcp-sdk * changelog * changelog update * fix: run just bump patch
1 parent 252fe3e commit e9a6baf

9 files changed

Lines changed: 51 additions & 29 deletions

File tree

.yarn/versions/a3f51fd8.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
releases:
2+
"@moonrepo/cli": patch
3+
"@moonrepo/core-linux-arm64-gnu": patch
4+
"@moonrepo/core-linux-arm64-musl": patch
5+
"@moonrepo/core-linux-x64-gnu": patch
6+
"@moonrepo/core-linux-x64-musl": patch
7+
"@moonrepo/core-macos-arm64": patch
8+
"@moonrepo/core-macos-x64": patch
9+
"@moonrepo/core-windows-x64-msvc": patch

CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# Changelog
22

3+
## Unreleased
4+
5+
#### 🚀 Updates
6+
7+
- Updated MCP (Model Context Protocol) implementation to use protocol version `2025-06-18` from `2025-03-26` - in turn, allowing Claude Code to use the MCP.
8+
39
## 1.38.3
410

511
#### 🐞 Fixes

Cargo.lock

Lines changed: 8 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crates/mcp/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@ moon_task = { version = "0.1.2", path = "../task" }
1919
moon_workspace_graph = { path = "../workspace-graph" }
2020
async-trait = { workspace = true }
2121
miette = { workspace = true }
22-
rust-mcp-sdk = { version = "0.4.5", default-features = false, features = [
22+
rust-mcp-sdk = { version = "0.5.0", default-features = false, features = [
2323
"macros",
2424
"server",
25-
"2025_03_26",
25+
"2025_06_18",
2626
] }
2727
serde = { workspace = true }
2828
serde_json = { workspace = true }

crates/mcp/src/mcp.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ pub async fn run_mcp(
7373
name: "moon MCP Server".to_string(),
7474
version: env::var("MOON_VERSION")
7575
.unwrap_or_else(|_| env!("CARGO_PKG_VERSION").to_string()),
76+
title: Some("Moon MCP Server".to_string()),
7677
},
7778
capabilities: ServerCapabilities {
7879
tools: Some(ServerCapabilitiesTools { list_changed: None }),

crates/mcp/src/tools/action_tools.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use moon_app_context::AppContext;
88
use moon_workspace_graph::WorkspaceGraph;
99
use rust_mcp_sdk::{
1010
macros::{JsonSchema, mcp_tool},
11-
schema::{CallToolResult, schema_utils::CallToolError},
11+
schema::{CallToolResult, TextContent, schema_utils::CallToolError},
1212
};
1313
use serde::{Deserialize, Serialize};
1414
use std::sync::Arc;
@@ -70,14 +70,15 @@ impl SyncWorkspaceTool {
7070
.await
7171
.map_err(map_miette_error)?;
7272

73-
Ok(CallToolResult::text_content(
73+
Ok(CallToolResult::text_content(vec![TextContent::new(
7474
serde_json::to_string_pretty(&SyncResponse {
7575
actions,
7676
synced: true,
7777
})
7878
.map_err(CallToolError::new)?,
7979
None,
80-
))
80+
None,
81+
)]))
8182
}
8283
}
8384

@@ -124,13 +125,14 @@ impl SyncProjectsTool {
124125
.await
125126
.map_err(map_miette_error)?;
126127

127-
Ok(CallToolResult::text_content(
128+
Ok(CallToolResult::text_content(vec![TextContent::new(
128129
serde_json::to_string_pretty(&SyncResponse {
129130
actions,
130131
synced: true,
131132
})
132133
.map_err(CallToolError::new)?,
133134
None,
134-
))
135+
None,
136+
)]))
135137
}
136138
}

crates/mcp/src/tools/project_tools.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use moon_project::Project;
55
use moon_workspace_graph::WorkspaceGraph;
66
use rust_mcp_sdk::{
77
macros::{JsonSchema, mcp_tool},
8-
schema::{CallToolResult, schema_utils::CallToolError},
8+
schema::{CallToolResult, TextContent, schema_utils::CallToolError},
99
};
1010
use serde::{Deserialize, Serialize};
1111
use std::sync::Arc;
@@ -42,14 +42,15 @@ impl GetProjectTool {
4242
}
4343
}
4444

45-
Ok(CallToolResult::text_content(
45+
Ok(CallToolResult::text_content(vec![TextContent::new(
4646
serde_json::to_string_pretty(&GetProjectResponse {
4747
project,
4848
project_dependencies,
4949
})
5050
.map_err(CallToolError::new)?,
5151
None,
52-
))
52+
None,
53+
)]))
5354
}
5455
}
5556

@@ -92,11 +93,12 @@ impl GetProjectsTool {
9293
projects = new_projects;
9394
}
9495

95-
Ok(CallToolResult::text_content(
96+
Ok(CallToolResult::text_content(vec![TextContent::new(
9697
serde_json::to_string_pretty(&GetProjectsResponse { projects })
9798
.map_err(CallToolError::new)?,
9899
None,
99-
))
100+
None,
101+
)]))
100102
}
101103
}
102104

crates/mcp/src/tools/task_tools.rs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use moon_task::{Target, Task};
55
use moon_workspace_graph::WorkspaceGraph;
66
use rust_mcp_sdk::{
77
macros::{JsonSchema, mcp_tool},
8-
schema::{CallToolResult, schema_utils::CallToolError},
8+
schema::{CallToolResult, TextContent, schema_utils::CallToolError},
99
};
1010
use serde::{Deserialize, Serialize};
1111
use std::sync::Arc;
@@ -40,14 +40,15 @@ impl GetTaskTool {
4040
}
4141
}
4242

43-
Ok(CallToolResult::text_content(
43+
Ok(CallToolResult::text_content(vec![TextContent::new(
4444
serde_json::to_string_pretty(&GetTaskResponse {
4545
task,
4646
task_dependencies,
4747
})
4848
.map_err(CallToolError::new)?,
4949
None,
50-
))
50+
None,
51+
)]))
5152
}
5253
}
5354

@@ -82,11 +83,12 @@ impl GetTasksTool {
8283

8384
tasks.sort_by(|a, d| a.target.cmp(&d.target));
8485

85-
Ok(CallToolResult::text_content(
86+
Ok(CallToolResult::text_content(vec![TextContent::new(
8687
serde_json::to_string_pretty(&GetTasksResponse { tasks })
8788
.map_err(CallToolError::new)?,
8889
None,
89-
))
90+
None,
91+
)]))
9092
}
9193
}
9294

crates/mcp/src/tools/vcs_tools.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use moon_common::is_ci;
66
use moon_common::path::WorkspaceRelativePathBuf;
77
use rust_mcp_sdk::{
88
macros::{JsonSchema, mcp_tool},
9-
schema::{CallToolResult, schema_utils::CallToolError},
9+
schema::{CallToolResult, TextContent, schema_utils::CallToolError},
1010
};
1111
use serde::{Deserialize, Serialize};
1212

@@ -50,13 +50,14 @@ impl GetTouchedFiles {
5050
.map_err(map_miette_error)?
5151
};
5252

53-
Ok(CallToolResult::text_content(
53+
Ok(CallToolResult::text_content(vec![TextContent::new(
5454
serde_json::to_string_pretty(&GetTouchedFilesResponse {
5555
files: touched_files.all().into_iter().cloned().collect(),
5656
})
5757
.map_err(CallToolError::new)?,
5858
None,
59-
))
59+
None,
60+
)]))
6061
}
6162
}
6263

0 commit comments

Comments
 (0)