diff --git a/src/core/prompts/__tests__/__snapshots__/add-custom-instructions/mcp-server-creation-disabled.snap b/src/core/prompts/__tests__/__snapshots__/add-custom-instructions/mcp-server-creation-disabled.snap
index 632273dea02..b1fdcc2e32b 100644
--- a/src/core/prompts/__tests__/__snapshots__/add-custom-instructions/mcp-server-creation-disabled.snap
+++ b/src/core/prompts/__tests__/__snapshots__/add-custom-instructions/mcp-server-creation-disabled.snap
@@ -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
-create_mcp_server
+create_mode
## search_files
diff --git a/src/core/prompts/system.ts b/src/core/prompts/system.ts
index cbe91903ee3..227e79679da 100644
--- a/src/core/prompts/system.ts
+++ b/src/core/prompts/system.ts
@@ -105,6 +105,7 @@ ${getToolDescriptionsForMode(
experiments,
partialReadsEnabled,
settings,
+ enableMcpServerCreation,
)}
${getToolUseGuidelinesSection(codeIndexManager)}
diff --git a/src/core/prompts/tools/__tests__/fetch-instructions.spec.ts b/src/core/prompts/tools/__tests__/fetch-instructions.spec.ts
new file mode 100644
index 00000000000..29e7f0fca26
--- /dev/null
+++ b/src/core/prompts/tools/__tests__/fetch-instructions.spec.ts
@@ -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("create_mcp_server")
+ })
+
+ 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("create_mcp_server")
+ })
+
+ 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("create_mode")
+ 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("")
+ expect(description).toContain("")
+ })
+
+ 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("create_mcp_server")
+ })
+})
diff --git a/src/core/prompts/tools/fetch-instructions.ts b/src/core/prompts/tools/fetch-instructions.ts
index eca231c5620..dd9cbb80da9 100644
--- a/src/core/prompts/tools/fetch-instructions.ts
+++ b/src/core/prompts/tools/fetch-instructions.ts
@@ -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
create_mcp_server
`
+ : `Example: Requesting instructions to create a Mode
+
+
+create_mode
+`
+
+ 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}`
}
diff --git a/src/core/prompts/tools/index.ts b/src/core/prompts/tools/index.ts
index 9f4af7f312c..0c88bd94b1f 100644
--- a/src/core/prompts/tools/index.ts
+++ b/src/core/prompts/tools/index.ts
@@ -29,7 +29,7 @@ import { CodeIndexManager } from "../../../services/code-index/manager"
const toolDescriptionMap: Record 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,
partialReadsEnabled?: boolean,
settings?: Record,
+ 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,
}