에이전트 설정 · OpenCode

LaunchRepo와 OpenCode: 브라우저 MCP 설정을 직접 검증

opencode.json에 블록 하나만 넣으면 OpenCode가 실제 Chrome을 다룹니다. 저희는 출시 인계 과정 전체를 이것으로 실행했습니다. 양식을 채우고, 확인 단계에서 멈추고, 사람이 확인을 마치게 한 뒤, 같은 세션을 재개해 한 번만 제출합니다.

핵심 요약

  • chrome-devtools 항목을 opencode.json의 "mcp" 키 아래에 넣고, "type": "local"을 지정한 뒤 명령 전체를 하나의 배열로 작성합니다. 블록은 아래에 있습니다.
  • OpenCode 1.18.34는 전역 파일, 프로젝트 opencode.json(하위 폴더에서 시작해도), .opencode/opencode.json, 그리고 두 환경 변수 모두에서 이를 로드했습니다.
  • 그다음 chrome-devtools_… 이름의 브라우저 도구 30개를 제공했고, 44,167자 분량의 페이지 스냅샷 전체를 줄이지 않고 모델에 전달했습니다.
  • CAPTCHA나 2FA 단계 후에는 opencode run --session <session-id>로 같은 대화를 재개합니다. 헤드리스에서도 모든 실행에서 성공했습니다. 같은 탭, 같은 입력란, 제출은 한 번.
  • OpenCode는 기본적으로 대부분의 작업을 허용하므로, 브라우저 작업을 직접 승인하려면 권한 줄 하나를 추가하세요.

LaunchRepo는 워크스페이스의 파일을 읽고 쓸 수 있고 브라우저를 제어할 수 있는 코딩 에이전트라면 어떤 것과도 작동합니다. OpenCode는 둘 다 할 수 있습니다. 이 페이지는 검증된 설정을 기록한 것이며, 인증이나 파트너십이 아닙니다.

opencode.json에 브라우저 추가

OpenCode는 설정 파일을 교체하지 않고 병합합니다. 그래서 설정이 안전합니다. 키 하나만 추가하면 기존 설정은 모두 그대로 유지됩니다.

  1. LaunchRepo 워크스페이스 루트의 opencode.json을 열거나 새로 만듭니다. 모든 프로젝트에 한 번에 적용하려면 대신 ~/.config/opencode/opencode.json을 사용합니다.
  2. 아래 "mcp" 블록을 기존 키 옆에 추가합니다. 파일에 이미 "mcp" 키가 있다면 그 안에 chrome-devtools 항목만 추가합니다.
  3. 실행하는 Chrome에서 chrome://inspect/#remote-debugging을 열고 원격 디버깅을 켭니다(Chrome 144 이상). --autoConnect가 여기에 연결됩니다.
  4. opencode mcp list를 실행합니다. 제대로 설정되었다면 아래 줄이 표시됩니다. 이어서 OpenCode에게 https://example.com을 열고 페이지 제목을 읽어 달라고 요청합니다.

추가할 위치 opencode.json

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "chrome-devtools": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "chrome-devtools-mcp@1.10.1",
        "--autoConnect",
        "--no-usage-statistics",
        "--no-performance-crux"
      ]
    }
  }
}

opencode mcp list에 나와야 할 줄 opencode mcp list

✓ chrome-devtools connected

--autoConnect는 이미 실행 중인 Chrome을 사용합니다. 출시 작업 전용으로 별도의 Chrome을 쓰려면 대신 --browser-url=http://127.0.0.1:9222를 사용합니다. 저희 테스트도 이 방법으로 임시 Chrome에 연결했습니다.

기존 설정 유지하기

  • 기존 파일 전체를 블록으로 덮어쓰지 마세요. 키만 추가하면 됩니다. OpenCode는 파일을 병합하므로 프로바이더, 모델, 다른 서버는 그대로 남습니다.
  • 프로젝트 opencode.json은 자신이 설정한 키에 대해서만 전역 파일을 덮어씁니다. 저희 테스트에서 "mcp"만 있는 프로젝트 파일에서도 전역 모델과 프로바이더가 그대로 활성 상태였습니다.
  • 전역 파일을 건드리지 않고 한 프로젝트에서만 브라우저를 끄려면, 해당 프로젝트에서 chrome-devtools에 "enabled": false를 설정합니다. 모든 실행에서 작동했습니다.

OpenCode가 로드하는 설정 파일

같은 서버 항목을 위치와 형태만 바꿔 시험했습니다. “로드됨”은 chrome-devtools_… 도구가 OpenCode의 모델 요청에 포함되었다는 뜻입니다.

변형파일 또는 변수결과
전역 설정 파일~/.config/opencode/opencode.json 로드됨, 도구 30개 (3/3)
주석과 후행 쉼표가 있는 전역 JSONC 파일~/.config/opencode/opencode.jsonc 로드됨, 도구 30개 (3/3)
워크스페이스 루트의 프로젝트 파일opencode.json 로드됨, 도구 30개 (3/3)
프로젝트 파일, OpenCode를 하위 폴더에서 시작opencode.json 로드됨, 도구 30개 (3/3)
.opencode 폴더 안.opencode/opencode.json 로드됨, 도구 30개 (3/3)
환경 변수로 지정한 사용자 지정 파일OPENCODE_CONFIG=<file> 로드됨, 도구 30개 (3/3)
환경 변수로 전달한 인라인 JSONOPENCODE_CONFIG_CONTENT 로드됨, 도구 30개 (3/3)
Claude Code나 Cursor에서 복사한 "mcpServers" 블록opencode.json 로드되지 않음, 오류 없음 (3/3)
"command": "npx"와 "args"(대부분의 다른 에이전트가 쓰는 형태)opencode.json 설정 거부, OpenCode가 종료 코드 1로 중단 (3/3)
"enabled": false를 지정한 항목opencode.json 로드되지 않음, 오류 없음 (3/3)
전역 항목, 프로젝트 파일은 "enabled": false만 설정opencode.json 로드되지 않음, 오류 없음 (3/3)

발목을 잡는 두 행이 있습니다. 붙여 넣은 "mcpServers" 블록은 아무 말 없이 무시되고(opencode mcp list에 “No MCP servers configured”라고 표시), 문자열 명령은 OpenCode가 시작되기도 전에 멈추게 합니다(“Expected array, got "npx"”). 둘 다 위의 배열 형태로 해결됩니다.

인계 실행을 단계별로

OpenCode 1.18.34, Chrome DevTools MCP 1.10.1, Google Chrome 154.0.8037.92, macOS, Node 22, 2026년 10월 1일에 실행. 매번 새 홈 디렉터리와 새 Chrome 프로필을 사용했으므로 개인 설정은 읽거나 변경하지 않았습니다.

AI 모델은 사용하지 않았습니다. 작은 로컬 대역이 OpenCode의 모델 요청에 정해진 도구 호출로 응답했고, 요소 ID는 OpenCode가 실제로 보낸 내용에서만 읽었습니다. 덕분에 모든 실행이 동일하고 무료이며, OpenCode가 제어하는 부분, 즉 설정, 도구, 모델이 보는 내용, 권한, 세션을 검증합니다. 모델이 얼마나 잘 계획하는지는 검증하지 않습니다.

CAPTCHA 가이드의 데모 양식에서 인계 실행: 5회. 설정 변형: 각 3회.

OpenCode가 데모 양식을 열어 채우고, 대역 확인 단계에서 멈춘 뒤 실행을 종료했습니다. 스크립트가 사람 역할을 맡아 같은 탭에서 확인을 완료했습니다. 이어서 --session을 붙인 두 번째 opencode run이 같은 대화를 이어 가 작업을 마쳤습니다. 에이전트 작업 중 CAPTCHA와 2FA: 통제된 인계 방법 →

확인 항목통과한 실행
opencode mcp list에서 서버가 연결됨으로 표시 5/5
Chrome DevTools 도구가 모델에 제공됨 5/5
기본 설정에서 페이지 스냅샷 전체가 모델에 전달됨 5/5
연결된 Chrome에서 데모 양식을 엶 5/5
세 입력란을 채우고 다시 읽음 5/5
확인 단계에서 멈춤, 상태 prepared_needs_human 5/5
실행이 끝나도 탭과 입력 내용이 유지됨 5/5
opencode session list에 세션 ID가 표시됨 5/5
사람이 같은 탭에서 확인을 완료 5/5
opencode run --session이 같은 세션을 이어 감 5/5
이어 간 세션에 이전 단계가 남아 있음 5/5
이어 간 실행이 같은 탭을 찾아 선택 5/5
일시 중지 후에도 입력란이 그대로 5/5
정확히 한 번 제출 5/5
"ask"로 헤드리스 실행: 브라우저 호출 거부, 확인 창 없음 5/5
같은 규칙에 --auto: 브라우저 호출 실행 5/5
"deny": 브라우저 도구가 모델의 목록에서 제거됨 5/5
헤드리스 실행: 질문 도구가 모델에 제공되지 않음 5/5
stdin을 열어 둔 헤드리스 실행: 20초 후 중지될 때까지 대기 3/3
일시 중지 중 OpenCode가 Chrome DevTools MCP로 찍은 스크린샷: 입력란은 채워졌고 상태는 사람을 기다리는 중.
일시 중지 중 OpenCode가 Chrome DevTools MCP로 찍은 스크린샷: 입력란은 채워졌고 상태는 사람을 기다리는 중.

사람이 마친 뒤 재개하기

모든 opencode run은 --format json 출력에 세션 ID를 표시하며, opencode session list --format json에도 나열됩니다.

같은 ID로 이어 갑니다. 저희 실행에서 이어 간 세션은 이전 단계를 모두 갖고 있었고, Chrome DevTools MCP로 같은 탭을 찾았으며, 입력란이 그대로인 것을 확인하고 한 번 제출했습니다.

터미널 UI가 편하다면 opencode --session <session-id>로 같은 대화를 그곳에서 열 수 있습니다.

세션 찾기
opencode session list --format json
헤드리스로 이어 가기
opencode run --session <session-id> "The check is done. Re-read the form and submit once."
터미널 UI에서 이어 가기
opencode --session <session-id>

승인: ask, allow, deny

권한 블록이 없으면 OpenCode는 묻지 않고 브라우저 도구를 실행합니다. 한 줄이면 바뀝니다. 각 규칙을 스크립트가 OpenCode를 호출하는 방식대로 헤드리스로 실행했습니다.

규칙헤드리스 opencode run에서
"chrome-devtools_*": "ask"“The user rejected permission to use this specific tool call.”과 함께 즉시 거부됩니다. 그래도 실행은 종료 코드 0으로 끝납니다.
같은 규칙에 --auto 추가브라우저 호출이 실행됩니다. 문서에 따르면 명시적인 deny 규칙은 여전히 적용됩니다.
"chrome-devtools_*": "deny"브라우저 도구가 모델의 도구 목록에서 사라집니다.

모든 브라우저 작업을 직접 승인

{
  "permission": {
    "chrome-devtools_*": "ask"
  }
}

"ask"는 터미널 UI에서 사용하세요. 그곳에서 OpenCode는 한 번, 항상, 거부 중에서 묻습니다. 헤드리스 실행에서는 "ask"가 브라우저를 막는다는 점을 받아들이거나, 출시용 Chrome 프로필에서 의도적으로 --auto를 사용하세요.

Claude Code에서 넘어온다면

서버는 같지만 설정은 다릅니다. 항목이 작동하는지는 네 가지 차이로 결정됩니다.

항목OpenCodeClaude Code
항목 위치opencode.json의 "mcp" 키.mcp.json의 "mcpServers"
명령 형태"command"는 하나의 배열, 그리고 "type": "local""command" 문자열과 "args" 배열
규칙 속 도구 이름chrome-devtools_take_snapshotmcp__chrome-devtools__take_snapshot
기본 승인대부분의 작업 허용각 도구를 처음 쓸 때 확인

시간을 잡아먹는 세 가지

붙여 넣은 "mcpServers" 블록은 조용히 무시됨
OpenCode는 이 키를 완전히 무시합니다. 오류 없음, 종료 코드 0, 브라우저 도구 없음. 항목을 "mcp" 아래로 옮기고 명령을 하나의 배열로 바꾸세요.
헤드리스 실행은 열린 stdin을 기다림
스크립트가 stdin을 파이프로 열어 둔 채 opencode run을 시작하면, OpenCode는 오지 않을 입력을 기다립니다. 3회 실행 모두에서 중지할 때까지 멈춰 있었고, stdin을 /dev/null로 주자 즉시 응답했습니다.
스크립트에서 "ask"는 거부
헤드리스 실행에는 대답할 사람이 없으므로 모든 "ask"는 거부가 됩니다. 브라우저가 혼자 작업해도 되는지 실행마다 정하세요.
주제원문저희가 관찰한 내용
OpenCode: 로컬 서버Add local MCP servers using type to "local" within the MCP object."type": "local"과 배열 형태는 모든 실행에서 로드되었습니다.
OpenCode: 여러 파일Configuration files are merged together, not replaced.확인됨: "mcp"만 있는 프로젝트 파일에서도 전역 모델과 프로바이더가 유지되었습니다.
OpenCode: 어느 파일이 우선인가Project config has the highest precedence among standard config files - it overrides both global and remote configs.확인됨: 프로젝트의 "enabled": false가 전역 항목을 껐습니다.
OpenCode: 도구 이름MCP server tools are registered with server name as prefix도구는 chrome-devtools_take_snapshot 같은 이름으로 전달되었습니다.
OpenCode: 기본 권한If you don’t specify anything, OpenCode starts from permissive defaults:규칙을 추가하기 전까지 브라우저 도구는 확인 없이 실행되었습니다.
OpenCode: --autoExplicit "deny" rules are still enforced.--auto는 "ask"와 함께 검증했습니다. "deny"에서는 도구가 아예 제공되지 않았습니다.
OpenCode: 컨텍스트 크기MCP servers add to your context, so you want to be careful with which ones you enable.Chrome DevTools MCP는 도구 30개를 추가합니다. 출시 작업 중에는 다른 서버를 꺼 두세요.
OpenCode: --session 플래그Session ID to continue터미널 UI에서만 재개되는 에이전트와 달리, 모든 실행에서 헤드리스로 작동했습니다.
Claude Code: 프로젝트 파일Project-scoped servers enable team collaboration by storing configurations in a .mcp.json file at your project’s root directory.OpenCode와 파일도 키도 다르므로 같은 항목이 그대로 옮겨지지 않습니다.
Claude Code: 규칙 속 도구 이름mcp__puppeteer__* matches every tool from the puppeteer serverOpenCode는 대신 서버 이름 뒤에 밑줄 하나를 씁니다.
Claude Code: 기본 모드Prompts for permission on first use of each tool.OpenCode의 기본값은 반대입니다. 규칙을 설정하지 않으면 허용입니다.
Chrome DevTools MCP: OpenCode 섹션Add the following configuration to your `opencode.json` file.저희 블록과 같은 형태입니다. 저희는 버전을 고정하고 --autoConnect를 추가합니다.

OpenCode에서 LaunchRepo 시작하기

LaunchRepo 프라이빗 워크스페이스에서 OpenCode를 열고 시작 프롬프트를 붙여 넣습니다. 그러면 키트가 온보딩을 안내하고, Example Domain에서 Chrome 연결을 테스트하고, 실행을 구성합니다.

  • 시작 프롬프트는 최상의 결과를 위해 Claude Code 또는 Codex CLI를 권장합니다. OpenCode도 같은 키트로 작동합니다. 키트에 필요한 두 가지, 즉 워크스페이스 파일 접근과 MCP를 통한 브라우저를 갖추고 있기 때문입니다.
  • OpenCode는 워크스페이스의 AGENTS.md를 읽으므로 키트의 규칙을 스스로 반영합니다.
  • CAPTCHA와 2FA 단계는 인계로 여러분에게 돌아옵니다. 위에서 본 것처럼 --session으로 세션을 재개합니다.

LaunchRepo 시작 프롬프트

Recommend Claude Code CLI or Codex CLI in a terminal instead of the desktop apps for best results. If session metadata confirms desktop hosting, explicitly advise me to switch to the CLI and resume this same private workspace. Do not infer the host from a CLI engine version alone.

Read AGENTS.md, then follow "Start the dashboard for the owner". Create my private
workspace if I do not have one yet, start the dashboard, and give me the link.
Then lead ONBOARDING.md one phase at a time. Reuse recorded permissions instead of
asking again unless their scope is missing or conflicting. Actually test my visible
existing Chrome profile and intended identity as BROWSER-SETUP.md requires; use the
OS fallback if needed. Use one platform/browser worker by default. Build the normal
run only from suitable free-ready routes, keep research separate, and preserve any
draft that needs one exact human CAPTCHA/2FA action. Never claim browser control
bypasses or reduces those challenges.

이번 테스트에서 다루지 않은 것

  • 터미널 UI의 승인 프롬프트와 질문 도구. 위의 헤드리스 동작은 측정한 것이고, UI 동작은 문서를 따릅니다.
  • 실제 AI 모델. 대역을 써서 모델 품질은 결과에서 제외했습니다. 모델이 잘못된 요소를 고를 가능성은 여전히 있습니다.
  • 평소 쓰는 Chrome 프로필에 대한 --autoConnect. 저희는 --browser-url로 임시 Chrome을 사용했습니다.
  • Windows와 Linux, 원격 MCP 서버, OpenCode 계정과 유료 모델 요금제.

출처

위의 모든 인용은 2026년 10월 1일에 읽은 아래 페이지에서 한 글자도 바꾸지 않고 옮긴 것입니다. 검증된 동작은 이 페이지에서 설명하는 저희의 직접 실행에서 나온 결과입니다.

출처페이지 날짜확인일
OpenCode Docs: MCP servers
OpenCode Docs: Config
OpenCode Docs: Permissions
OpenCode Docs: CLI
OpenCode Docs: Providers
Claude Code Docs: Connect Claude Code to tools via MCP날짜 표시 없음
Claude Code Docs: Configure permissions날짜 표시 없음
Chrome DevTools MCP: MCP client configuration날짜 표시 없음

자주 묻는 질문

OpenCode에서 MCP 서버는 어디에 설정하나요?
opencode.json의 "mcp" 키 아래에 설정합니다. 프로젝트 루트나 ~/.config/opencode/opencode.json에 둡니다. 저희 테스트에서 OpenCode 1.18.34는 .opencode/opencode.json, OPENCODE_CONFIG, OPENCODE_CONFIG_CONTENT에서도 로드했습니다.
Chrome DevTools MCP용 OpenCode 설정은 어떻게 작성하나요?
chrome-devtools라는 이름의 항목에 "type": "local"과 "command": ["npx", "-y", "chrome-devtools-mcp@1.10.1", "--autoConnect", "--no-usage-statistics", "--no-performance-crux"]를 지정합니다. opencode mcp list를 실행하면 연결된 것을 확인할 수 있습니다.
OpenCode에 MCP 서버가 표시되지 않는 이유는 무엇인가요?
대개 다른 에이전트에서 항목을 복사한 경우입니다. "mcpServers" 블록은 오류 없이 무시되고, "command": "npx"와 별도의 "args"를 쓰면 OpenCode가 설정 전체를 거부합니다. "mcp"와 하나의 명령 배열을 사용하세요.
대신 Playwright MCP를 사용할 수 있나요?
네, 같은 "mcp" 항목 형태는 모든 로컬 MCP 서버에 쓸 수 있습니다. 이 페이지는 이미 쓰고 있는 Chrome에 연결되기 때문에 Chrome DevTools MCP를 검증합니다. Playwright MCP가 더 적합한 경우는 비교 페이지에서 설명합니다.
CAPTCHA 후 OpenCode 세션은 어떻게 재개하나요?
같은 Chrome 탭에서 확인을 완료한 뒤, 짧은 지시와 함께 opencode run --session <session-id>를 실행하거나 opencode --session <session-id>로 터미널 UI에서 엽니다. 저희 실행에서는 세션, 탭, 입력란이 모두 그대로 남아 있었습니다.
LaunchRepo는 OpenCode를 공식 지원하나요?
LaunchRepo는 파일과 브라우저에 접근할 수 있는 코딩 에이전트를 지원합니다. OpenCode는 둘 다 갖추고 있으며, 이 페이지는 검증된 설정을 기록한 것입니다. 인증이나 파트너십이 아니며, 시작 프롬프트는 여전히 최상의 결과를 위해 Claude Code 또는 Codex CLI를 권장합니다.

OpenCode에 출시 계획을 맡기세요

LaunchRepo는 에이전트에게 플랫폼 목록, 런북, 그리고 에이전트가 계속 최신으로 유지하는 트래커를 제공합니다. OpenCode가 여러분의 브라우저에서 작업하고, 최종 결정은 여러분이 내립니다.

가격 보기