This guide helps you migrate MCP (Model Context Protocol) server configuration from Cursor to the Claude Code VSCode extension running in Cursor.
- Quick Start: Copy-Paste Prompt
- Manual Migration Instructions
- Useful CLI Commands
- Troubleshooting
- MCP Tool Permission Configuration
For fastest setup: Copy everything between the arrows below and paste it into a new Claude Code chat window.
I need you to migrate my MCP servers from Cursor's configuration to work with the Claude Code VSCode extension. Here's what I need you to do:
Context:
I'm using the Claude Code VSCode extension inside Cursor. Cursor has MCP servers configured in ~/.cursor/mcp.json, but the Claude Code extension doesn't automatically read that file for stdio-based servers. I need to migrate them using the Claude CLI.
Step 1: Find the Claude CLI
- Use bash to dynamically locate the Claude CLI binary in my Cursor extensions directory
- Path pattern:
~/.cursor/extensions/anthropic.claude-code-*/resources/native-binary/claude - Store it in a variable for reuse
Step 2: Read my existing Cursor MCP configuration
- Check if I have
~/.cursor/mcp.json(this is Cursor's MCP config file) - Read it and show me all the MCP servers I currently have configured
- For each server, note:
- Server name and command
- Whether it's HTTP-based (can skip these - they already work) or stdio-based (needs migration)
- Environment variables that need to be preserved
- Any custom arguments or flags
- Whether it uses local paths (e.g.,
~/my-server/build/index.js)
Step 3: Show me the migration plan
- List all stdio-based servers that need to be migrated
- HTTP servers (if any) don't need migration - tell me they'll continue working
- For each stdio server, show me the exact CLI command you'll use to add it
- Ask me to confirm before proceeding
Step 4: Handle credentials For servers that need credentials (check the Cursor config for env vars):
- If the Cursor config has hardcoded tokens/keys, warn me about security risks
- Ask me if I want to provide fresh credentials or reuse the existing ones
- Never hardcode credentials - always use
--env KEY=VALUEin the CLI command - Tell me what each credential is for
Step 5: Execute the migration For each stdio-based server from my Cursor config:
- Use the Claude CLI to add it:
$CLAUDE_CLI mcp add --transport stdio <name> [--env KEY=VALUE ...] -- <command> [args...]
- Preserve the exact command, arguments, and environment variables from Cursor's config
- For locally installed servers, preserve the full path exactly as it appears in Cursor
- Show me each command as you run it
Step 6: Verify the migration
- Run
$CLAUDE_CLI mcp listto check all servers connected successfully - Show me the results with connection status (✓ Connected or ✗ Failed)
- If any servers failed to connect, help me troubleshoot them
- Tell me to reload Cursor: Press
Cmd+Shift+P(Mac) orCtrl+Shift+P(Windows/Linux) → type "Developer: Reload Window" → Enter
Step 7: Post-migration setup
- If Memory Bank was migrated, remind me to initialize it after reload with:
mcp__memory-bank__initialize_memory_bank - Tell me the migration is complete and the servers are ready to use
Important guidelines:
- Preserve the exact configuration from Cursor's mcp.json file
- Don't change package managers (if Cursor uses
yarn dlx, keep usingyarn dlx) - For locally installed servers, confirm the path exists before adding
- Never hardcode credentials - always use
--envflags - Skip HTTP servers - they don't need migration
Now, start by finding the Claude CLI binary and reading my Cursor MCP configuration file.
- Claude finds the CLI - Automatically locates the Claude CLI binary in your Cursor extensions
- Claude reads Cursor config - Reads
~/.cursor/mcp.jsonand shows you all configured MCP servers - Migration plan - Claude presents which servers need migration (stdio) vs which work already (HTTP)
- Credentials handling - Claude asks for any missing credentials (tokens, API keys)
- Migration execution - Claude runs CLI commands to add each stdio server
- Verification - Claude checks that all servers connected successfully
- You reload Cursor - Reload the window to activate the migrated servers
- Done! - Your Cursor MCP servers now work with Claude Code extension
If you prefer to migrate servers manually or need detailed reference documentation, follow these instructions.
Why migration is needed:
- Cursor stores MCP server configuration in
~/.cursor/mcp.json - The Claude Code VSCode extension doesn't automatically read this file for stdio-based servers
- Stdio servers must be added via the Claude CLI to work with Claude Code extension
- HTTP-based servers (like Figma) continue working without migration
What gets migrated:
- Server commands and arguments
- Environment variables
- Credentials (you'll need to provide these during migration)
- Locally installed server paths
The Claude binary is located in your Cursor extensions directory. The exact path depends on the version installed.
Find it dynamically:
find ~/.cursor/extensions -name "claude" -path "*/native-binary/claude" 2>/dev/null | head -n1Example path:
~/.cursor/extensions/anthropic.claude-code-2.0.20-darwin-arm64/resources/native-binary/claude
Note: The version number (e.g., 2.0.20) and architecture (e.g., darwin-arm64) will vary based on your system and installed version.
Before migrating, check what servers you have configured in Cursor:
# View your Cursor MCP configuration
cat ~/.cursor/mcp.jsonIdentify which servers are:
- stdio-based (have
"command"field) - these need migration - HTTP-based (have
"url"field) - these work automatically, skip them
Use the following command pattern to migrate stdio-based MCP servers from Cursor:
/path/to/claude mcp add --transport stdio <server-name> [--env KEY=VALUE] -- <command> [args...]For locally installed MCP servers: If you have MCP servers installed locally (e.g., cloned from GitHub), use the path to the executable:
/path/to/claude mcp add --transport stdio <server-name> -- node /path/to/local-mcp-server/build/index.jsNote: Preserve the exact path from your Cursor configuration.
For convenience, set the Claude CLI path as a variable:
# Find and set the Claude CLI path
CLAUDE_CLI=$(find ~/.cursor/extensions -name "claude" -path "*/native-binary/claude" 2>/dev/null | head -n1)
# Verify it exists
echo $CLAUDE_CLIBelow are examples of migrating common MCP servers from Cursor to Claude Code.
From Cursor config:
{
"Github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_xxx..."
}
}
}Migration command:
$CLAUDE_CLI mcp add \
--transport stdio github \
--env GITHUB_PERSONAL_ACCESS_TOKEN=YOUR_GITHUB_TOKEN \
-- npx -y @modelcontextprotocol/server-githubNote: Replace YOUR_GITHUB_TOKEN with your actual token (get it from your Cursor config or generate a new one).
From Cursor config:
{
"aakarsh-sasi-memory-bank": {
"command": "yarn",
"args": ["dlx", "@aakarsh-sasi/memory-bank-mcp"],
"env": {
"MEMORY_BANK_ROOT": "/path/to/workspace/.cursor"
}
}
}Migration command:
$CLAUDE_CLI mcp add \
--transport stdio memory-bank \
--env MEMORY_BANK_ROOT="$(pwd)/.cursor" \
-- yarn dlx @aakarsh-sasi/memory-bank-mcpNote: Adjust MEMORY_BANK_ROOT to match your workspace path.
Known Issues:
- ❌ Smithery wrapper (
@smithery/cli) - Causes hanging and zombie processes - ❌ Direct
mcp-atlassiannpm package - Missingjsdomdependency - ❌ Python
uvx mcp-atlassian- Has Pydantic configuration bugs - ✅ ONLY USE:
@aashari/mcp-server-atlassian-jira- This is the working Node.js version
Working configuration for .mcp.json:
{
"mcp-atlassian": {
"command": "npx",
"args": ["-y", "@aashari/mcp-server-atlassian-jira"],
"env": {
"ATLASSIAN_SITE_NAME": "your-company",
"ATLASSIAN_USER_EMAIL": "[email protected]",
"ATLASSIAN_API_TOKEN": "YOUR_API_TOKEN"
}
}
}CLI Migration command (if needed):
$CLAUDE_CLI mcp add \
--transport stdio mcp-atlassian \
--env ATLASSIAN_SITE_NAME="your-company" \
--env ATLASSIAN_USER_EMAIL="[email protected]" \
--env ATLASSIAN_API_TOKEN="YOUR_API_TOKEN" \
-- npx -y @aashari/mcp-server-atlassian-jiraGetting your API token:
- Go to https://id.atlassian.com/manage-profile/security/api-tokens
- Click "Create API token"
- Name it (e.g., "Claude Code")
- Copy the token immediately
Available tools:
mcp__mcp-atlassian__jira_get_issue- Get issue details (param:issueIdOrKey)mcp__mcp-atlassian__jira_ls_projects- List Jira projectsmcp__mcp-atlassian__jira_ls_issues- Search issues with JQL- Additional tools for comments, boards, sprints
CRITICAL: Correct Parameter Names
The @aashari/mcp-server-atlassian-jira package uses camelCase parameter names, NOT snake_case:
✅ Correct:
mcp__mcp-atlassian__jira_get_issue({
issueIdOrKey: "PROJ-123"
})❌ Wrong (will fail with -32602 error):
mcp__mcp-atlassian__jira_get_issue({
issue_key_or_id: "PROJ-123" // Wrong parameter name
})
mcp__mcp-atlassian__jira_get_issue({
owner: "...", // These are GitHub MCP parameters
repo: "...", // NOT Atlassian parameters
issue_number: 123
})Common parameter names:
issueIdOrKey- For getting/updating issues (e.g., "PROJ-123")projectKeyOrId- For project operations (e.g., "PROJ" or "10001")commentBody- For adding commentsjql- For JQL queries
Troubleshooting:
- If not working after reload, check both
.mcp.jsonAND~/.claude.jsonuse aashari package - Kill zombie processes:
pkill -9 -f "smithery.*atlassian" - Verify:
~/.cursor/extensions/anthropic.claude-code-*/resources/native-binary/claude mcp list - If you get MCP error -32602 "Invalid arguments", check parameter names are camelCase
Here are migration commands for other popular MCP servers:
# Context7 - Library documentation
$CLAUDE_CLI mcp add \
--transport stdio context7 \
-- yarn dlx -q @upstash/context7-mcp@latest
# Toolbox - MCP server search and discovery
$CLAUDE_CLI mcp add \
--transport stdio toolbox \
-- yarn dlx @smithery/cli@latest run @smithery/toolbox \
--key YOUR_SMITHERY_KEY \
--profile YOUR_PROFILE
# Shrimp Task Manager - Advanced task planning
$CLAUDE_CLI mcp add \
--transport stdio shrimp-task-manager \
--env DATA_DIR="$HOME/mcp-shrimp-task-manager/data" \
--env TEMPLATES_USE=en \
--env ENABLE_GUI=false \
-- yarn dlx mcp-shrimp-task-manager
# Clear Thought - Structured thinking tools
$CLAUDE_CLI mcp add \
--transport stdio clear-thought \
-- yarn dlx @waldzellai/clear-thought
# Example: Locally installed MCP server
$CLAUDE_CLI mcp add \
--transport stdio my-local-server \
-- node $HOME/my-mcp-servers/custom-server/build/index.jsMigration Notes:
- Preserve the exact command and package manager from your Cursor config
- Copy environment variables and credentials from Cursor's mcp.json
- For locally installed servers, preserve the full path exactly as it appears in Cursor
- Check your Cursor config for the correct
DATA_DIRpaths for servers like Shrimp Task Manager
After migrating your servers, check that they all connected successfully:
$CLAUDE_CLI mcp listExpected output showing all your migrated servers:
Checking MCP server health...
mcp-atlassian: ... - ✓ Connected
github: ... - ✓ Connected
memory-bank: ... - ✓ Connected
context7: ... - ✓ Connected
toolbox: ... - ✓ Connected
shrimp-task-manager: ... - ✓ Connected
clear-thought: ... - ✓ Connected
If any server shows ✗ Failed to connect, see the Troubleshooting section.
After successfully migrating your MCP servers:
- Press
Cmd+Shift+P(orCtrl+Shift+Pon Windows/Linux) - Type "Developer: Reload Window"
- Press Enter
After reload, your migrated MCP servers are ready to use!
If you migrated Memory Bank: Initialize it with the same path you used in the migration:
Ask Claude to run: mcp__memory-bank__initialize_memory_bank with path: <your-workspace-path>/.cursor
Note: Use the same MEMORY_BANK_ROOT path you configured during migration.
claude mcp listclaude mcp get <server-name>claude mcp remove <server-name>claude mcp reset-project-choicesMCP servers are saved to: ~/.claude.json
This is a user-level configuration file that persists across projects.
- Check that the command/package exists and is accessible
- Verify environment variables are set correctly
- Try running the command manually to see error messages
- Verify servers show as "Connected" in
claude mcp list - Reload Cursor window again
- Check the Output panel (View → Output → Claude Code) for errors
This is expected behavior and why migration is necessary. The Claude Code extension doesn't automatically read Cursor's ~/.cursor/mcp.json file for stdio servers. You must migrate them using the CLI as described in this guide.
- stdio servers (have
"command"field in Cursor config) - need migration - HTTP servers (have
"url"field in Cursor config) - work automatically, no migration needed
Yes! Cursor's native MCP integration and Claude Code's MCP servers operate independently. You can use both simultaneously.
Problem: MCP server shows as "✓ Connected" in claude mcp list but API calls return no data:
- Jira MCP returns "Issue not found" for valid issues
- Lists return 0 items when data should exist
- Authentication appears to work but queries fail
Root Causes:
- Expired API Tokens - Most common cause
- Project-specific MCP configuration not loaded - Server registered globally but not in project config
- Environment variables not properly passed - Credentials not reaching the MCP server process
Solution Steps:
Step 1: Verify API Token is Valid
Test the token directly with curl to verify authentication:
# For Atlassian Jira
curl -s -u "[email protected]:YOUR_API_TOKEN" \
-H "Accept: application/json" \
"https://yourcompany.atlassian.net/rest/api/3/myself"
# Should return your user info (name, email)
# If it returns "Client must be authenticated" → token is invalid/expiredIf token is invalid:
- Go to https://id.atlassian.com/manage-profile/security/api-tokens (for Atlassian)
- Create a new API token
- Update both
.mcp.jsonAND~/.claude.jsonwith the new token - Reload Cursor window
Step 2: Verify Project-Specific Configuration
Check if the MCP server exists in your project's configuration:
cat ~/.claude.json | jq '.projects["/your/project/path"].mcpServers["mcp-atlassian"]'If it returns null, the server is not registered for this project even though it exists globally.
Fix: Add the server configuration to the project-specific config in ~/.claude.json:
# Example: Add mcp-atlassian to project config
cat ~/.claude.json | jq '.projects["/your/project/path"].mcpServers["mcp-atlassian"] = {
"type": "stdio",
"command": "npx",
"args": ["-y", "@aashari/mcp-server-atlassian-jira"],
"env": {
"ATLASSIAN_SITE_NAME": "yourcompany",
"ATLASSIAN_USER_EMAIL": "[email protected]",
"ATLASSIAN_API_TOKEN": "YOUR_NEW_TOKEN"
}
}' > /tmp/claude_updated.json
# Backup and replace
mv ~/.claude.json ~/.claude.json.backup
mv /tmp/claude_updated.json ~/.claude.jsonAfter editing ~/.claude.json, reload Cursor for changes to take effect.
Step 3: Verify .mcp.json is Being Loaded
If you copied .mcp.json from another project:
- Check that
.mcp.jsonexists in project root - Verify it's not in
.gitignore(though credentials should be) - Check
~/.claude.jsonfor"enabledMcpjsonServers"array for this project:
cat ~/.claude.json | jq '.projects["/your/project/path"].enabledMcpjsonServers'If empty [], the .mcp.json servers aren't enabled. This is usually resolved by reloading after the servers show as connected.
Step 4: Common Configuration Issues
/* WRONG - Using Smithery wrapper (causes issues) */
{
"mcp-atlassian": {
"command": "npx",
"args": ["-y", "@smithery/cli@latest", "run", "mcp-atlassian"]
}
}
/* CORRECT - Direct package */
{
"mcp-atlassian": {
"command": "npx",
"args": ["-y", "@aashari/mcp-server-atlassian-jira"],
"env": {
"ATLASSIAN_SITE_NAME": "yourcompany",
"ATLASSIAN_USER_EMAIL": "[email protected]",
"ATLASSIAN_API_TOKEN": "YOUR_TOKEN"
}
}
}Step 5: Full Reset Procedure
If all else fails, perform a clean reset:
# 1. Remove the problematic MCP server
~/.cursor/extensions/anthropic.claude-code-*/resources/native-binary/claude mcp remove mcp-atlassian -s local
# 2. Verify it's gone
~/.cursor/extensions/anthropic.claude-code-*/resources/native-binary/claude mcp list
# 3. Manually edit ~/.claude.json to remove any project-specific entries
# (use jq or text editor to remove the mcpServers entry for this project)
# 4. Update .mcp.json with fresh token
# 5. Add via CLI with fresh credentials
CLAUDE_CLI=~/.cursor/extensions/anthropic.claude-code-*/resources/native-binary/claude
$CLAUDE_CLI mcp add --transport stdio mcp-atlassian \
--env ATLASSIAN_SITE_NAME="yourcompany" \
--env ATLASSIAN_USER_EMAIL="[email protected]" \
--env ATLASSIAN_API_TOKEN="YOUR_NEW_TOKEN" \
-- npx -y @aashari/mcp-server-atlassian-jira
# 6. Manually add to ~/.claude.json project config (see Step 2)
# 7. Reload Cursor window
# 8. Test with a simple query
# Ask Claude: "Use mcp__mcp-atlassian__jira_ls_projects to list Jira projects"Debugging Checklist:
- API token tested directly with curl - authenticates successfully
-
claude mcp listshows server as "✓ Connected" -
~/.claude.jsoncontains server in project-specificmcpServersobject -
.mcp.jsonhas correct credentials (if using project .mcp.json file) - Cursor window reloaded after configuration changes
- Correct package used (e.g.,
@aashari/mcp-server-atlassian-jira, not Smithery wrapper) - Environment variables use correct keys (e.g.,
ATLASSIAN_SITE_NAME, notATLASSIAN_BASE_URL)
Problem: When trying to access Figma designs via MCP, you get:
{"jsonrpc":"2.0","error":{"code":-32002,"message":"No session found for sessionId"},"id":null}
Root Cause: The Figma desktop MCP server session state is out of sync between Figma and the MCP client.
Solution (CRITICAL - Use HTTP transport + Toggle):
-
Ensure Figma desktop app is running with MCP server enabled:
- Open Figma desktop app
- Open the design file you want to access
- Switch to Dev Mode (Shift+D)
- In the inspect panel (right side), find the "MCP server" section
- Ensure "Enable desktop MCP server" is toggled ON
- Verify server is running:
lsof -i :3845
-
Use HTTP transport (NOT SSE):
SSE transport consistently fails to connect with Figma MCP. The working configuration uses HTTP transport:
/* Remove SSE configuration if present */ $CLAUDE_CLI mcp remove figma-desktop -s local /* Add with HTTP transport (this works) */ $CLAUDE_CLI mcp add --transport http figma http://127.0.0.1:3845/mcp
-
Update
.claude/settings.local.json:Ensure the enabled server list references the HTTP server name:
{ "enabledMcpjsonServers": [ "figma" ] } -
Reload Cursor after configuration changes
-
Toggle the MCP Server in Figma (CRITICAL FIX):
When you get the "No session found" error even with HTTP transport:
- In Figma Dev Mode inspect panel → MCP server section
- Toggle OFF "Enable desktop MCP server"
- Wait 2-3 seconds
- Toggle ON "Enable desktop MCP server"
- You should see a confirmation message at the bottom
- Try the MCP tool again immediately
-
Verify connection:
$CLAUDE_CLI mcp listShould show:
figma: http://127.0.0.1:3845/mcp (HTTP) - ✓ Connected
Why HTTP works but SSE doesn't:
Testing shows that while Figma's MCP server technically responds with SSE headers, the HTTP transport with periodic session reset (toggle) is more stable than SSE transport in Claude Code. The SSE configuration consistently shows "✗ Failed to connect" while HTTP shows "✓ Connected".
Alternative Session Reset:
You can also reset the session via Figma Preferences:
- Go to Figma > Preferences dropdown
- Select "Desktop MCP server settings"
- Toggle the server off and then back on
Using Figma MCP Tools:
Extract node ID from Figma URL:
https://www.figma.com/design/FILE-KEY/Design-Name?node-id=1234-5678
^^^^^^^^^
Node ID: 1234-5678 (preserve hyphen)
Get design context (code):
mcp__figma__get_design_context({
nodeId: "1234-5678",
clientLanguages: "typescript,javascript",
clientFrameworks: "react"
})Get screenshot:
mcp__figma__get_screenshot({
nodeId: "1234-5678",
clientLanguages: "typescript,javascript",
clientFrameworks: "react"
})Configuration file location: ~/.claude.json
Correct SSE configuration:
{
"projects": {
"/path/to/your-project": {
"mcpServers": {
"figma-desktop": {
"type": "sse",
"url": "http://127.0.0.1:3845/mcp"
}
}
}
}
}Common mistakes:
- ❌ Using
--transport httpinstead of--transport sse - ❌ Not reloading Claude Code session after configuration change
- ❌ Figma desktop app not running or MCP server not enabled
- ❌ Using
ReadMcpResourceToolinstead of specificmcp__figma__*tools
After migrating your MCP servers, you will be prompted for permission every time Claude Code tries to use an MCP tool (e.g., mcp__clear-thought__sequentialthinking, mcp__memory-bank__get_memory_bank_status, mcp__mcp-atlassian__jira_get_issue). This creates significant friction and interrupts your workflow.
Why this happens:
- Claude Code has a security model where MCP tools default to requiring approval
- This is intentional to protect against untrusted MCP servers
- However, for frequently-used, trusted MCP tools, this becomes "prompt fatigue"
Known Bug: MCP tool wildcard permissions (mcp__<server>__*) are NOT honored in the VSCode/Cursor extension as of October 2025.
- GitHub Issue: anthropics/claude-code#3107 - MCP wildcard permissions not being honored
- Patterns like
mcp__clear-thought__*ormcp__memory-bank__*will NOT prevent permission prompts - You MUST add each specific tool name individually
- Status: This is a confirmed bug with no ETA for a fix as of October 2025
You must add each specific MCP tool name you want to use to .claude/settings.local.json.
To find all available MCP tools for your configured servers, ask Claude Code:
List all available MCP tools from the following servers and provide their exact tool names in the format mcp__<server>__<tool>:
- clear-thought
- memory-bank
- mcp-atlassian
- figma
For each server, examine the function definitions available in the environment and extract the complete list of tool names.
Alternatively, check the tools list at the top of any Claude Code conversation - you'll see all available tools listed in the format mcp__<server>__<toolname>.
Each MCP server provides specific tools. Here are the commonly used tools:
clear-thought server:
mcp__clear-thought__sequentialthinkingmcp__clear-thought__mentalmodelmcp__clear-thought__debuggingapproachmcp__clear-thought__collaborativereasoningmcp__clear-thought__decisionframeworkmcp__clear-thought__metacognitivemonitoringmcp__clear-thought__scientificmethodmcp__clear-thought__structuredargumentationmcp__clear-thought__visualreasoning
memory-bank server:
mcp__memory-bank__get_memory_bank_statusmcp__memory-bank__read_memory_bank_filemcp__memory-bank__write_memory_bank_filemcp__memory-bank__list_memory_bank_filesmcp__memory-bank__track_progressmcp__memory-bank__update_active_contextmcp__memory-bank__log_decision
mcp-atlassian server:
mcp__mcp-atlassian__jira_get_issuemcp__mcp-atlassian__jira_ls_issuesmcp__mcp-atlassian__jira_get_projectmcp__mcp-atlassian__jira_ls_projectsmcp__mcp-atlassian__jira_add_commentmcp__mcp-atlassian__jira_ls_comments
figma server:
mcp__figma__get_design_contextmcp__figma__get_screenshotmcp__figma__get_metadatamcp__figma__get_variable_defsmcp__figma__get_code_connect_mapmcp__figma__add_code_connect_mapmcp__figma__create_design_system_rules
Note: This list may not be exhaustive. New tools may be added by MCP server updates. Use Step 1 to discover all available tools in your environment.
Add the specific tool names to the permissions.allow array:
Location: .claude/settings.local.json (in your project root)
{
"permissions": {
"allow": [
// ... existing permissions ...
// Clear-thought tools (add the ones you use)
"mcp__clear-thought__sequentialthinking",
"mcp__clear-thought__mentalmodel",
// Memory-bank tools (add the ones you use)
"mcp__memory-bank__get_memory_bank_status",
"mcp__memory-bank__read_memory_bank_file",
"mcp__memory-bank__write_memory_bank_file",
// Jira tools (add the ones you use)
"mcp__mcp-atlassian__jira_get_issue",
"mcp__mcp-atlassian__jira_ls_issues",
// Figma tools (add the ones you use)
"mcp__figma__get_design_context",
"mcp__figma__get_screenshot"
],
"deny": [],
"ask": []
}
}After editing the configuration:
- Press
Cmd+Shift+P(Mac) orCtrl+Shift+P(Windows/Linux) - Type "Developer: Reload Window"
- Press Enter
Important: Settings changes do NOT take effect until you reload. If tools still prompt after adding them, you likely forgot to reload.
If your project uses the Mandatory Supervisor Protocol (see .cursor/rules/mandatory-supervisor-protocol.mdc), you MUST add at minimum these specific tools:
{
"permissions": {
"allow": [
"mcp__clear-thought__sequentialthinking", // REQUIRED: Used before every action
"mcp__memory-bank__get_memory_bank_status", // REQUIRED: Task state checking
"mcp__memory-bank__track_progress", // REQUIRED: Progress tracking
"mcp__mcp-atlassian__jira_get_issue", // REQUIRED: Jira ticket access
"mcp__figma__get_design_context" // REQUIRED: Design access for UI tasks
]
}
}Why these are required:
- sequentialthinking - The protocol mandates using this tool before ANY action
- memory-bank tools - Required for documenting analysis and maintaining task state
- jira_get_issue - Protocol requires reading Jira tickets before planning (dependency order step 0)
- get_design_context - Protocol requires checking Figma designs for UI tasks (dependency order step 1)
Recommended approach: Add tools as you need them rather than adding every tool upfront.
Method 1: Learn from permission prompts
- When Claude tries to use an MCP tool and gets prompted
- Note the exact tool name from the prompt (e.g.,
mcp__memory-bank__write_memory_bank_file) - Add that specific tool to
.claude/settings.local.json - Reload Cursor
- The tool will now work without prompting
Method 2: Proactive discovery
- Ask Claude Code: "List all MCP tools available in my environment with their exact names"
- Claude will examine available functions and provide the complete list
- Add all tools you trust to
.claude/settings.local.json - Reload Cursor once
Method 3: Check tool list in conversation
- At the top of any Claude Code conversation, you can see all available tools
- Scroll through the list and identify tools starting with
mcp__ - Copy the exact names to your configuration
After configuring permissions:
-
Reload Cursor (required for changes to take effect)
-
Test a tool:
- Ask Claude to use a tool you added (e.g.,
mcp__clear-thought__sequentialthinking) - It should execute WITHOUT prompting for permission
- If prompted, check your configuration again
- Ask Claude to use a tool you added (e.g.,
-
Check active configuration:
cat .claude/settings.local.json | jq '.permissions.allow'
When to allowlist:
- ✅ Trusted MCP servers you or your team installed
- ✅ Protocol-required tools (clear-thought, memory-bank, etc.)
- ✅ Frequently-used tools that interrupt workflow
When NOT to allowlist:
- ❌ Experimental or untested MCP servers
- ❌ Third-party MCP servers from unknown sources
- ❌ MCP tools that perform destructive actions without review
Remember: Allowlisting means Claude Code can use these tools without asking for permission. Only allowlist tools you trust completely.
Problem: Tools still prompt after adding to configuration
- Solution 1: Reload Cursor window (Cmd+Shift+P → "Developer: Reload Window")
- Solution 2: Check JSON syntax is valid (no trailing commas, matching quotes)
- Solution 3: Verify tool name matches EXACTLY (case-sensitive, double underscores)
Problem: Not sure what the exact tool name is
- Solution: Let the prompt happen once, note the EXACT tool name shown in the prompt, then add it to config
Problem: Too many tools to add manually
- Workaround: This is a known limitation due to bug anthropics/claude-code#3107
- Current status: Wildcards don't work; specific tool names are required
- Subscribe to updates: Follow the GitHub issue for notification when wildcards are fixed
- Tip: Use the proactive discovery method (Step 1) to get all tool names at once, then copy-paste into config
Problem: How do I find ALL available MCP tools?
- Solution: Ask Claude Code to list all MCP tools:
"List all available MCP tools in this environment with exact tool names in format mcp__<server>__<tool>" - Claude will examine the function definitions and provide a complete list
- This is more reliable than checking documentation, as it reflects your actual environment
Never commit sensitive tokens to version control!
- Store tokens in environment variables
- Use
.gitignoreto exclude configuration files with secrets (especially.claude/settings.local.json) - Regenerate tokens immediately if accidentally exposed
- Add
.claude/settings.local.jsonto.gitignorefor local-only configuration
added MCP Tool Permission Configuration and various fixes.