Skip to content

Commit 8d76ced

Browse files
committed
fix: auto-allow MCP tools via canUseTool permission callback
The dontAsk permission mode blocks MCP tools because they aren't 'pre-approved'. Added canUseTool callback that auto-allows tools from configured MCP servers (mcp__<server>__<tool> prefix) while denying other unpermitted tools. Built-in tools (Read, Edit, Bash, etc.) that dontAsk auto-approves won't trigger this callback.
1 parent 2534429 commit 8d76ced

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

claude/client.ts

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,11 @@ export async function sendToClaudeCode(
142142
// Load MCP servers from .claude/mcp.json
143143
const mcpServers = await loadMcpServers(workDir);
144144

145+
// Build set of MCP server name prefixes for auto-allowing MCP tools
146+
const mcpToolPrefixes = mcpServers
147+
? Object.keys(mcpServers).map(name => `mcp__${name}__`)
148+
: [];
149+
145150
// Wrap with comprehensive error handling
146151
const executeWithErrorHandling = async (overrideModel?: string) => {
147152
try {
@@ -199,6 +204,18 @@ export async function sendToClaudeCode(
199204
...(modelOptions?.outputFormat && { outputFormat: modelOptions.outputFormat }),
200205
// MCP servers from .claude/mcp.json
201206
...(mcpServers && { mcpServers }),
207+
// Auto-allow MCP tools from configured servers.
208+
// The dontAsk permission mode blocks MCP tools because they aren't "pre-approved".
209+
// canUseTool handles permission prompts — built-in tools that dontAsk
210+
// auto-approves (Read, Edit, Bash, etc.) won't trigger this callback.
211+
...(mcpToolPrefixes.length > 0 && {
212+
canUseTool: async (toolName: string) => {
213+
if (mcpToolPrefixes.some(prefix => toolName.startsWith(prefix))) {
214+
return { behavior: 'allow' as const };
215+
}
216+
return { behavior: 'deny' as const, message: `Tool ${toolName} not pre-approved` };
217+
},
218+
}),
202219
env: envVars,
203220
},
204221
};

0 commit comments

Comments
 (0)