mirror of
https://github.com/RooVetGit/Roo-Code.git
synced 2026-08-28 05:27:24 +00:00
fix: prevent MCP server creation when setting is disabled (#6613)
* fix: prevent MCP server creation when setting is disabled - Modified getFetchInstructionsDescription to conditionally include create_mcp_server task - Updated getToolDescriptionsForMode to pass enableMcpServerCreation parameter - Added tests to verify the conditional behavior - Updated snapshot test to reflect the new expected behavior Fixes #6607 * fix: address review comments - add JSDoc, null test, and clarify default behavior --------- Co-authored-by: Roo Code <roomote@roocode.com>
This commit is contained in:
parent
4a9222b50e
commit
8a35b64b9b
5 changed files with 89 additions and 13 deletions
|
|
@ -99,13 +99,12 @@ IMPORTANT: You MUST use this Efficient Reading Strategy:
|
|||
Description: Request to fetch instructions to perform a task
|
||||
Parameters:
|
||||
- task: (required) The task to get instructions for. This can take the following values:
|
||||
create_mcp_server
|
||||
create_mode
|
||||
|
||||
Example: Requesting instructions to create an MCP Server
|
||||
Example: Requesting instructions to create a Mode
|
||||
|
||||
<fetch_instructions>
|
||||
<task>create_mcp_server</task>
|
||||
<task>create_mode</task>
|
||||
</fetch_instructions>
|
||||
|
||||
## search_files
|
||||
|
|
|
|||
|
|
@ -105,6 +105,7 @@ ${getToolDescriptionsForMode(
|
|||
experiments,
|
||||
partialReadsEnabled,
|
||||
settings,
|
||||
enableMcpServerCreation,
|
||||
)}
|
||||
|
||||
${getToolUseGuidelinesSection(codeIndexManager)}
|
||||
|
|
|
|||
53
src/core/prompts/tools/__tests__/fetch-instructions.spec.ts
Normal file
53
src/core/prompts/tools/__tests__/fetch-instructions.spec.ts
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
import { describe, it, expect } from "vitest"
|
||||
import { getFetchInstructionsDescription } from "../fetch-instructions"
|
||||
|
||||
describe("getFetchInstructionsDescription", () => {
|
||||
it("should include create_mcp_server when enableMcpServerCreation is true", () => {
|
||||
const description = getFetchInstructionsDescription(true)
|
||||
|
||||
expect(description).toContain("create_mcp_server")
|
||||
expect(description).toContain("create_mode")
|
||||
expect(description).toContain("Example: Requesting instructions to create an MCP Server")
|
||||
expect(description).toContain("<task>create_mcp_server</task>")
|
||||
})
|
||||
|
||||
it("should include create_mcp_server when enableMcpServerCreation is undefined (default behavior)", () => {
|
||||
const description = getFetchInstructionsDescription()
|
||||
|
||||
expect(description).toContain("create_mcp_server")
|
||||
expect(description).toContain("create_mode")
|
||||
expect(description).toContain("Example: Requesting instructions to create an MCP Server")
|
||||
expect(description).toContain("<task>create_mcp_server</task>")
|
||||
})
|
||||
|
||||
it("should exclude create_mcp_server when enableMcpServerCreation is false", () => {
|
||||
const description = getFetchInstructionsDescription(false)
|
||||
|
||||
expect(description).not.toContain("create_mcp_server")
|
||||
expect(description).toContain("create_mode")
|
||||
expect(description).toContain("Example: Requesting instructions to create a Mode")
|
||||
expect(description).toContain("<task>create_mode</task>")
|
||||
expect(description).not.toContain("Example: Requesting instructions to create an MCP Server")
|
||||
})
|
||||
|
||||
it("should have the correct structure", () => {
|
||||
const description = getFetchInstructionsDescription(true)
|
||||
|
||||
expect(description).toContain("## fetch_instructions")
|
||||
expect(description).toContain("Description: Request to fetch instructions to perform a task")
|
||||
expect(description).toContain("Parameters:")
|
||||
expect(description).toContain("- task: (required) The task to get instructions for.")
|
||||
expect(description).toContain("<fetch_instructions>")
|
||||
expect(description).toContain("</fetch_instructions>")
|
||||
})
|
||||
|
||||
it("should handle null value consistently (treat as default/undefined)", () => {
|
||||
const description = getFetchInstructionsDescription(null as any)
|
||||
|
||||
// Should behave the same as undefined (default to true)
|
||||
expect(description).toContain("create_mcp_server")
|
||||
expect(description).toContain("create_mode")
|
||||
expect(description).toContain("Example: Requesting instructions to create an MCP Server")
|
||||
expect(description).toContain("<task>create_mcp_server</task>")
|
||||
})
|
||||
})
|
||||
|
|
@ -1,14 +1,33 @@
|
|||
export function getFetchInstructionsDescription(): string {
|
||||
return `## fetch_instructions
|
||||
Description: Request to fetch instructions to perform a task
|
||||
Parameters:
|
||||
- task: (required) The task to get instructions for. This can take the following values:
|
||||
create_mcp_server
|
||||
create_mode
|
||||
/**
|
||||
* Generates the fetch_instructions tool description.
|
||||
* @param enableMcpServerCreation - Whether to include MCP server creation task.
|
||||
* Defaults to true when undefined.
|
||||
*/
|
||||
export function getFetchInstructionsDescription(enableMcpServerCreation?: boolean): string {
|
||||
const tasks =
|
||||
enableMcpServerCreation !== false
|
||||
? ` create_mcp_server
|
||||
create_mode`
|
||||
: ` create_mode`
|
||||
|
||||
Example: Requesting instructions to create an MCP Server
|
||||
const example =
|
||||
enableMcpServerCreation !== false
|
||||
? `Example: Requesting instructions to create an MCP Server
|
||||
|
||||
<fetch_instructions>
|
||||
<task>create_mcp_server</task>
|
||||
</fetch_instructions>`
|
||||
: `Example: Requesting instructions to create a Mode
|
||||
|
||||
<fetch_instructions>
|
||||
<task>create_mode</task>
|
||||
</fetch_instructions>`
|
||||
|
||||
return `## fetch_instructions
|
||||
Description: Request to fetch instructions to perform a task
|
||||
Parameters:
|
||||
- task: (required) The task to get instructions for. This can take the following values:
|
||||
${tasks}
|
||||
|
||||
${example}`
|
||||
}
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ import { CodeIndexManager } from "../../../services/code-index/manager"
|
|||
const toolDescriptionMap: Record<string, (args: ToolArgs) => string | undefined> = {
|
||||
execute_command: (args) => getExecuteCommandDescription(args),
|
||||
read_file: (args) => getReadFileDescription(args),
|
||||
fetch_instructions: () => getFetchInstructionsDescription(),
|
||||
fetch_instructions: (args) => getFetchInstructionsDescription(args.settings?.enableMcpServerCreation),
|
||||
write_to_file: (args) => getWriteToFileDescription(args),
|
||||
search_files: (args) => getSearchFilesDescription(args),
|
||||
list_files: (args) => getListFilesDescription(args),
|
||||
|
|
@ -61,6 +61,7 @@ export function getToolDescriptionsForMode(
|
|||
experiments?: Record<string, boolean>,
|
||||
partialReadsEnabled?: boolean,
|
||||
settings?: Record<string, any>,
|
||||
enableMcpServerCreation?: boolean,
|
||||
): string {
|
||||
const config = getModeConfig(mode, customModes)
|
||||
const args: ToolArgs = {
|
||||
|
|
@ -70,7 +71,10 @@ export function getToolDescriptionsForMode(
|
|||
browserViewportSize,
|
||||
mcpHub,
|
||||
partialReadsEnabled,
|
||||
settings,
|
||||
settings: {
|
||||
...settings,
|
||||
enableMcpServerCreation,
|
||||
},
|
||||
experiments,
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue