OpenCode, Cline, Mods 에 MCP Setup
제목 MCP 설정하기 내용 OpenCode, Cline, Mods 에 MCP 설정하기 OpenCode # ~/.config/opencode/opencode.json { "$schema": "https://opencode.ai/config.json", "permission": { "read": { "*.env": "deny", "*": "allow" }, "glob": "allow", "grep": "allow", "list": "allow", "task": "allow", "external_directory": "allow", "todoread": "allow", "webfetch": "allow", "websearch": "allow", "codesearch": "allow", "lsp": "allow", "doom_loop": "allow", "skill": "allow", "edit": "deny", "question": "allow", "bash": { "rm *": "deny", "git rm *": "deny", "cp *": "ask", "mv *": "ask", "git status": "allow", "git log": "allow", "git diff": "allow", "git pull*": "ask", "git reset*": "ask", "git checkout*": "ask", "git *": "ask", "ls *": "allow", "cat *": "allow", "head *": "allow", "tail *": "allow", "grep *": "allow", "mkfs*": "deny", "shred *": "deny", "dd *": "deny", "| xargs rm": "deny", "-delete": "deny", "-exec delete": "deny", "-exec rm *": "deny", "find *": "ask", "*": "ask" } }, "mode": { "plan": { "permission": { "question": "allow", "bash": { "git commit *": "ask", "git rm *": "deny", "git push *": "deny", "git *": "allow", "*": "ask" } } }, "build": { "permission": { "bash": { "rm *": "ask", "cp *": "ask", "mv *": "ask", "find *": "ask", "git rm *": "ask", "git push *": "ask", "git reset *": "ask", "git *": "allow", "*": "allow" }, "edit": { "*.env": "deny", "*": "allow" }, "todowrite": "allow" } } }, "provider": { "zai-coding-plan": { "options": { "apiKey": "{{ZAI_API_KEY}}", "timeout": 900000, "setCacheKey": true } }, "mcp": { "github": { "type": "local", "command": ["mcp-server-github"], "environment": { "GITHUB_PERSONAL_ACCESS_TOKEN": "{{GITHUB_PERSONAL_ACCESS_TOKEN}}" } }, "📅⏰": { "type": "local", "command": ["mcp-server-time", "--local-timezone=Asia/Ho_Chi_Minh"] }, "🖥️📂": { "type": "local", "command": [ "mcp-server-filesystem", "/Users/crong" ] }, "🖥️🐏": { "type": "local", "command": ["mcp-server-memory"] }, "🤔💭": { "type": "local", "command": [ "mcp-server-sequential-thinking" ] }, "Ⓜ️🎭": { "type": "local", "command": ["npx", "-y", "@playwright/mcp@latest"] }, "whistle-mcp": { "type": "local", "command": ["whistle-mcp", "--host=127.0.0.1", "--port=8888"] }, "Z.ai🖼️": { "type": "local", "command": ["npx", "-y", "@z_ai/mcp-server"], "environment": { "Z_AI_API_KEY": "{{ZAI_API_KEY}}", "Z_AI_MODE": "ZAI" } }, "Z.ai🌿": { "type": "remote", "url": "https://api.z.ai/api/mcp/zread/mcp", "headers": { "Authorization": "Bearer {{ZAI_API_KEY}}" } }, "Z.ai🔎": { "type": "remote", "url": "https://api.z.ai/api/mcp/web_search_prime/mcp", "headers": { "Authorization": "Bearer {{ZAI_API_KEY}}" } }, "Z.ai🤲": { "type": "remote", "url": "https://api.z.ai/api/mcp/web_reader/mcp", "headers": { "Authorization": "Bearer {{ZAI_API_KEY}}" } } }, "plugin": ["opencode-ignore", "opencode-wakatime"] } Cline # ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json { "mcpServers": { "github": { "command": "mcp-server-github" }, "💻📂": { "command": "mcp-server-filesystem", "args": ["/Users/crong"] }, "💻🐏": { "command": "mcp-server-memory" }, "📅⏰": { "command": "mcp-server-time" }, "🤔💭": { "command": "mcp-server-sequential-thinking" }, "Ⓜ️🎭": { "type": "stdio", "command": "npx", "timeout": 30, "args": [ "-y", "@playwright/mcp@latest" ], "disabled": false }, "Z.ai🖼️": { "type": "stdio", "command": "npx", "args": ["-y", "@z_ai/mcp-server"], "env": { "Z_AI_API_KEY": "{{ZAI_API_KEY}}", "Z_AI_MODE": "ZAI" }, "autoApprove": [ "ui_to_artifact", "extract_text_from_screenshot", "diagnose_error_screenshot", "understand_technical_diagram", "analyze_data_visualization", "ui_diff_check", "analyze_image", "analyze_video" ] }, "Z.ai🔎": { "type": "streamableHttp", "url": "https://api.z.ai/api/mcp/web_search_prime/mcp", "headers": { "Authorization": "Bearer {{ZAI_API_KEY}}" } }, "Z.ai🤲": { "type": "streamableHttp", "url": "https://api.z.ai/api/mcp/web_reader/mcp", "headers": { "Authorization": "Bearer {{ZAI_API_KEY}}" } }, "Z.ai🌿": { "type": "streamableHttp", "url": "https://api.z.ai/api/mcp/zread/mcp", "headers": { "Authorization": "Bearer {{ZAI_API_KEY}}" } } } } Mods # ~/Library/Application Support/mods/mods.yml default-api: z-ai default-model: glm-4.7 format-text: markdown: 'Format the response as markdown without enclosing backticks.' json: 'Format the response as json without enclosing backticks.' mcp-servers: github: command: "mcp-server-github" env: - "GITHUB_PERSONAL_ACCESS_TOKEN={{GITHUB_PERSONAL_ACCESS_TOKEN}}" 🖥️📂: command: "mcp-server-filesystem" args: - "/Users/crong" 🖥️🐏: command: "mcp-server-memory" 📅⏰: command: "mcp-server-time" args: - "--local-timezone=Asia/Ho_Chi_Minh" 🤔💭: command: "mcp-server-sequential-thinking" Ⓜ️🎭: command: "npx" args: - "@playwright/mcp@latest" Z.ai🖼️: command: "zai-mcp-server" env: - "Z_AI_API_KEY={{ZAI_API_KEY}}" - "Z_AI_MODE=ZAI" Z.ai🔎: command: "mcp-remote" args: - "https://api.z.ai/api/mcp/web_search_prime/mcp" - "--header" - "Authorization: Bearer {{ZAI_API_KEY}}" Z.ai🤲: command: "mcp-remote" args: - "https://api.z.ai/api/mcp/web_reader/mcp" - "--header" - "Authorization: Bearer {{ZAI_API_KEY}}" Z.ai🕎: command: "mcp-remote" args: - "https://api.z.ai/api/mcp/zread/mcp" - "--header" - "Authorization: Bearer {{ZAI_API_KEY}}" mcp-timeout: 60s roles: "default": [] "empty": [] "engineer": - "당신은 시니어 엔지니어(Java Spring, DevOps) 이자 기술 아키텍트인 'StackOverflow'입니다." - "모든 답변은 다음 'Verification Protocol'을 강제로 준수해야 합니다:" - "1. [부정적 전제] 무조건 '예'라고 하지 마십시오. OS별(Windows/macOS/Linux) 기능 제약이나 삭제된 버전의 가능성을 먼저 언급하십시오." - "2. [팩트 체크] UI 메뉴 경로는 환각이 심하므로, 설정 파일(Plist, JSON, Config)의 키 이름이나 필드명을 우선적으로 제공하십시오." - "3. [실시간 검색] 추측하지 마십시오. 공식 문서(Changelog)나 이슈 트래커를 검색한 결과만 요약하여 제공하십시오." - "4. [3-Strike Rule] 동일한 잘못된 정보를 2회 반복하면 즉시 한계를 인정하고 대화를 중단하거나 접근 방식을 변경하십시오." - "5. [응답 형식] 반드시 '🔍 상황 분석', '🏗️ 해결 방안', '🛡️ 검증 프로토콜', '💡 전문가적 견해' 순으로 답변하고, 최소 3가지 옵션을 시각화하여 제시하십시오." format: false role: "engineer" raw: false quiet: false temp: 1.0 topp: 1.0 topk: 50 no-limit: false word-wrap: 80 include-prompt-args: false include-prompt: 0 max-retries: 5 fanciness: 10 status-text: Loading theme: catppuccin max-input-chars: 12250 max-completion-tokens: 100 apis: google-gemma: base-url: https://generativelanguage.googleapis.com/v1beta/openai/ api-key: "" api-key-env: GOOGLE_API_KEY_MODS models: gemma-3-27b-it: aliases: ["g3-27b", "g3l"] max-input-chars: 392000 gemma-3-12b-it: aliases: ["g3-12b", "g3m"] max-tokens: 2048 max-input-chars: 392000 gemma-3-4b-it: aliases: ["g3-4b", "g3s"] max-input-chars: 392000 # Gemma 3n (모바일/온디바이스 최적화 모델) gemma-3n-e2b-it: aliases: ["g3-2b", "g3o"] max-input-chars: 131000 # Gemma 3 초경량 모델 gemma-3-1b-it: aliases: ["g3-1b", "g3n"] max-input-chars: 98000 z-ai: base-url: https://api.z.ai/api/coding/paas/v4 api-key: api-key-env: ZAI_API_KEY_MODS models: glm-4.7: aliases: ["glm-4.7","glm"] max-input-chars: 200000