Skip to content

Commit eed95b9

Browse files
(GH-538) Update MCP to use FQTN
This change updates the types and functions in the MCP module to expect and accept the `FullyQualifiedTypeName` type instead of strings.
1 parent 84ccfc5 commit eed95b9

File tree

3 files changed

+11
-13
lines changed

3 files changed

+11
-13
lines changed

dsc/src/mcp/invoke_dsc_resource.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,15 @@
33

44
use crate::mcp::mcp_server::McpServer;
55
use dsc_lib::{
6-
configure::config_doc::ExecutionKind,
7-
dscresources::{
6+
DscManager, configure::config_doc::ExecutionKind, dscresources::{
87
dscresource::Invoke,
98
invoke_result::{
109
ExportResult,
1110
GetResult,
1211
SetResult,
1312
TestResult,
1413
},
15-
},
16-
DscManager,
14+
}, types::FullyQualifiedTypeName
1715
};
1816
use rmcp::{ErrorData as McpError, Json, tool, tool_router, handler::server::wrapper::Parameters};
1917
use rust_i18n::t;
@@ -51,7 +49,7 @@ pub struct InvokeDscResourceRequest {
5149
#[schemars(description = "The operation to perform on the DSC resource")]
5250
pub operation: DscOperation,
5351
#[schemars(description = "The type name of the DSC resource to invoke")]
54-
pub resource_type: String,
52+
pub resource_type: FullyQualifiedTypeName,
5553
#[schemars(description = "The properties to pass to the DSC resource as JSON. Must match the resource JSON schema from `show_dsc_resource` tool.")]
5654
pub properties_json: String,
5755
}

dsc/src/mcp/list_dsc_resources.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use dsc_lib::{
66
DscManager, discovery::{
77
command_discovery::ImportedManifest::Resource,
88
discovery_trait::DiscoveryKind,
9-
}, dscresources::resource_manifest::Kind, progress::ProgressFormat
9+
}, dscresources::resource_manifest::Kind, progress::ProgressFormat, types::FullyQualifiedTypeName
1010
};
1111
use rmcp::{ErrorData as McpError, Json, tool, tool_router, handler::server::wrapper::Parameters};
1212
use rust_i18n::t;
@@ -22,11 +22,11 @@ pub struct ResourceListResult {
2222

2323
#[derive(Serialize, JsonSchema)]
2424
pub struct ResourceSummary {
25-
pub r#type: String,
25+
pub r#type: FullyQualifiedTypeName,
2626
pub kind: Kind,
2727
pub description: Option<String>,
2828
#[serde(rename = "requireAdapter")]
29-
pub require_adapter: Option<String>,
29+
pub require_adapter: Option<FullyQualifiedTypeName>,
3030
}
3131

3232
#[derive(Deserialize, JsonSchema)]
@@ -67,10 +67,10 @@ impl McpServer {
6767
for resource in dsc.list_available(&DiscoveryKind::Resource, "*", &adapter_filter, ProgressFormat::None) {
6868
if let Resource(resource) = resource {
6969
let summary = ResourceSummary {
70-
r#type: resource.type_name.to_string(),
70+
r#type: resource.type_name.clone(),
7171
kind: resource.kind.clone(),
7272
description: resource.description.clone(),
73-
require_adapter: resource.require_adapter.map(|fqtn| fqtn.to_string()),
73+
require_adapter: resource.require_adapter,
7474
};
7575
resources.insert(resource.type_name.to_lowercase(), summary);
7676
}

dsc/src/mcp/show_dsc_resource.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use dsc_lib::{
77
dscresources::{
88
dscresource::{Capability, Invoke},
99
resource_manifest::Kind
10-
},
10+
}, types::FullyQualifiedTypeName,
1111
};
1212
use rmcp::{ErrorData as McpError, Json, tool, tool_router, handler::server::wrapper::Parameters};
1313
use rust_i18n::t;
@@ -20,7 +20,7 @@ use tokio::task;
2020
pub struct DscResource {
2121
/// The namespaced name of the resource.
2222
#[serde(rename="type")]
23-
pub type_name: String,
23+
pub type_name: FullyQualifiedTypeName,
2424
/// The kind of resource.
2525
pub kind: Kind,
2626
/// The version of the resource.
@@ -66,7 +66,7 @@ impl McpServer {
6666
Err(_) => None,
6767
};
6868
Ok(DscResource {
69-
type_name: resource.type_name.to_string(),
69+
type_name: resource.type_name.clone(),
7070
kind: resource.kind.clone(),
7171
version: resource.version.clone(),
7272
capabilities: resource.capabilities.clone(),

0 commit comments

Comments
 (0)