diff --git a/app/services/mcp_tools/search_portfolios.rb b/app/services/mcp_tools/search_portfolios.rb index 729af0102b8..ae5504f4b8d 100644 --- a/app/services/mcp_tools/search_portfolios.rb +++ b/app/services/mcp_tools/search_portfolios.rb @@ -48,7 +48,7 @@ module McpTools type: :object, properties: { name: { type: "string", description: "Name of the portfolio. Accepts partial names, not case-sensitive." }, - identifier: { type: "string", description: "Portfolio identifier. Case-insensitive, matching exactly." }, + identifier: { type: "string", description: "Portfolio identifier. Case-sensitive, matching exactly." }, status_code: { type: "string", enum: Project.status_codes.keys, description: "The portfolio status." } } ) diff --git a/app/services/mcp_tools/search_programs.rb b/app/services/mcp_tools/search_programs.rb index c88471e9478..d66a8121271 100644 --- a/app/services/mcp_tools/search_programs.rb +++ b/app/services/mcp_tools/search_programs.rb @@ -48,7 +48,7 @@ module McpTools type: :object, properties: { name: { type: "string", description: "Name of the program. Accepts partial names, not case-sensitive." }, - identifier: { type: "string", description: "Program identifier. Case-insensitive, matching exactly." }, + identifier: { type: "string", description: "Program identifier. Case-sensitive, matching exactly." }, status_code: { type: "string", enum: Project.status_codes.keys, description: "The program status." } } ) diff --git a/app/services/mcp_tools/search_projects.rb b/app/services/mcp_tools/search_projects.rb index f8a2b7e1815..4801b79dcb8 100644 --- a/app/services/mcp_tools/search_projects.rb +++ b/app/services/mcp_tools/search_projects.rb @@ -48,7 +48,7 @@ module McpTools type: :object, properties: { name: { type: "string", description: "Name of the project. Accepts partial project names, not case-sensitive." }, - identifier: { type: "string", description: "Project identifier. Case-insensitive, matching exactly." }, + identifier: { type: "string", description: "Project identifier. Case-sensitive, matching exactly." }, status_code: { type: "string", enum: Project.status_codes.keys, description: "The project status." } } ) diff --git a/spec/requests/mcp/mcp_tools/search_portfolios_spec.rb b/spec/requests/mcp/mcp_tools/search_portfolios_spec.rb index 06d3288e95c..e59271369f6 100644 --- a/spec/requests/mcp/mcp_tools/search_portfolios_spec.rb +++ b/spec/requests/mcp/mcp_tools/search_portfolios_spec.rb @@ -84,22 +84,18 @@ RSpec.describe McpTools::SearchPortfolios, with_flag: { mcp_server: true } do context "when passing an exact identifier" do let(:call_args) { { identifier: "abc" } } - it "finds only the matching portfolio" do + it "finds the portfolio" do subject - items = parsed_results.dig("structuredContent", "items") - expect(items.size).to eq(1) - expect(items.first).to include("identifier" => "abc") + expect(parsed_results.dig("structuredContent", "items")).to be_present end end - context "when passing a case-variant identifier" do + context "when passing a non-exact identifier" do let(:call_args) { { identifier: "Abc" } } - it "finds only the matching portfolio (case-insensitive)" do + it "does not find the portfolio" do subject - items = parsed_results.dig("structuredContent", "items") - expect(items.size).to eq(1) - expect(items.first).to include("identifier" => "abc") + expect(parsed_results.dig("structuredContent", "items")).to be_empty end end diff --git a/spec/requests/mcp/mcp_tools/search_programs_spec.rb b/spec/requests/mcp/mcp_tools/search_programs_spec.rb index 54d50559dd0..e59b3ad50c2 100644 --- a/spec/requests/mcp/mcp_tools/search_programs_spec.rb +++ b/spec/requests/mcp/mcp_tools/search_programs_spec.rb @@ -84,22 +84,18 @@ RSpec.describe McpTools::SearchPrograms, with_flag: { mcp_server: true } do context "when passing an exact identifier" do let(:call_args) { { identifier: "abc" } } - it "finds only the matching program" do + it "finds the program" do subject - items = parsed_results.dig("structuredContent", "items") - expect(items.size).to eq(1) - expect(items.first).to include("identifier" => "abc") + expect(parsed_results.dig("structuredContent", "items")).to be_present end end - context "when passing a case-variant identifier" do + context "when passing a non-exact identifier" do let(:call_args) { { identifier: "Abc" } } - it "finds only the matching program (case-insensitive)" do + it "does not find the program" do subject - items = parsed_results.dig("structuredContent", "items") - expect(items.size).to eq(1) - expect(items.first).to include("identifier" => "abc") + expect(parsed_results.dig("structuredContent", "items")).to be_empty end end diff --git a/spec/requests/mcp/mcp_tools/search_projects_spec.rb b/spec/requests/mcp/mcp_tools/search_projects_spec.rb index 2b1bf05a835..86865edf129 100644 --- a/spec/requests/mcp/mcp_tools/search_projects_spec.rb +++ b/spec/requests/mcp/mcp_tools/search_projects_spec.rb @@ -83,22 +83,18 @@ RSpec.describe McpTools::SearchProjects, with_flag: { mcp_server: true } do context "when passing an exact identifier" do let(:call_args) { { identifier: "abc" } } - it "finds only the matching project" do + it "finds the project" do subject - items = parsed_results.dig("structuredContent", "items") - expect(items.size).to eq(1) - expect(items.first).to include("identifier" => "abc") + expect(parsed_results.dig("structuredContent", "items")).to be_present end end - context "when passing a case-variant identifier" do + context "when passing a non-exact identifier" do let(:call_args) { { identifier: "Abc" } } - it "finds only the matching project (case-insensitive)" do + it "does not find the project" do subject - items = parsed_results.dig("structuredContent", "items") - expect(items.size).to eq(1) - expect(items.first).to include("identifier" => "abc") + expect(parsed_results.dig("structuredContent", "items")).to be_empty end end