Claude, Gemini, Codex, OpenCode 간 도구 호출을 지원하는 MCP 서버 Multi-CLI
요약
Multi-CLI는 Model Context Protocol (MCP)을 사용하여 Claude, Gemini, Codex, OpenCode와 같은 여러 AI 모델 클라이언트들이 서로를 도구(tools)로 호출할 수 있게 연결해주는 서버입니다. 이 시스템은 설치된 다양한 AI CLI들을 자동으로 감지하고 구성하며, 한 번 설정하면 대화하는 어떤 AI라도 다른 AI의 기능을 활용하여 작업을 확장할 수 있습니다. 이 도구는 자체 유지 관리(self-maintaining) 기능과 자동 업데이트 메커니즘을 갖추고 있어, 여러 최신 AI 모델 환경에서도 지속적으로 작동하도록 설계되었습니다.
핵심 포인트
- Multi-CLI는 MCP를 통해 Claude, Gemini, Codex, OpenCode 등 다양한 AI 클라이언트 간의 상호 호출(tool calling) 기능을 제공합니다.
- 설치된 모든 AI CLI를 자동으로 감지하고 구성하며, 사용자가 별도로 설정할 필요가 없습니다.
- 이 도구는 자체 유지 관리 및 자동 업데이트 시스템을 갖추고 있어 최신 모델 환경에서도 지속적인 지원이 가능합니다.
- 사용하려면 Node.js >= 20 버전과 최소 하나의 대상 AI CLI(예: @anthropic-ai/claude-code) 설치가 필요합니다.
Claude, Gemini, Codex, OpenCode가 서로를 도구 (tools)로 호출할 수 있게 해주는 MCP 서버입니다.
Claude: "이봐 Gemini, 이 코드에 대해 어떻게 생각해?"
Gemini: "엉망이야. Codex에게 다른 의견을 물어볼게."
Codex: "둘 다 틀렸어. 여기 수정안이 있어."
...
curl -fsSL https://raw.githubusercontent.com/osanoai/multicli/main/install.sh | bash
설치된 AI CLI를 감지하여 Multi-CLI를 자동으로 구성합니다.
- Claude Code는
127.0.0.1의 사용자별 로컬 HTTP 서비스를 사용하도록 구성됩니다. - Gemini CLI, Codex CLI, OpenCode는 기본적으로 stdio/로컬 설정을 계속 사용합니다.
- 설치 프로그램이 사용자를 대신하여 클라이언트 설정 파일을 업데이트할 수 있습니다.
Multi-CLI는 AI 클라이언트 사이에 위치하며 Model Context Protocol (MCP)을 통해 이들을 연결합니다. 한 번 설치하면, 당신이 대화 중인 어떤 AI라도 다른 AI를 호출할 수 있는 능력을 갖게 됩니다.
Claude는 Gemini, Codex 또는 OpenCode에 도움을 요청할 수 있습니다. Gemini는 Claude, Codex 또는 OpenCode에 작업을 위임할 수 있습니다. Codex는 Claude, Gemini 또는 OpenCode에게 자문을 구할 수 있습니다. OpenCode는 Claude, Gemini 또는 Codex(75개 이상의 제공업체에 걸쳐)를 호출할 수 있습니다.
- 각 클라이언트의 자체 도구는 숨겨집니다 (자기 자신과 대화하는 것은 이상하니까요).
- 설치된 CLI를 자동 감지하여 사용 가능한 것만 보여줍니다.
이 도구는 연결되는 바로 그 AI들에 의해 구축되었습니다.
Claude, Gemini, Codex, OpenCode가 코드를 작성했습니다. Claude, Gemini, Codex, OpenCode가 이를 유지 관리합니다. 매일 밤, CI 작업이 각 CLI의 최신 안정 버전을 쿼리하여 현재 모델 목록을 가져오고, 그 결과를 저장소(repo)에 있는 내용과 비교(diff)한 뒤, 변경 사항이 있으면 자동으로 새 버전을 게시합니다. 새로운 모델 출시 사항은 24시간 이내에 반영됩니다. 지원이 중단된(Deprecated) 모델은 정리됩니다. 저장소는 아무도 손대지 않아도 최신 상태를 유지합니다.
stdio 설치 경로는 @latest를 사용하므로, 해당 클라이언트들은 새 릴리스를 자동으로 가져옵니다. Claude Code의 관리형 HTTP 서비스는 일시적인 npx 캐시 대신 의도적으로 안정적인 설치 런타임에서 실행됩니다. 설치 프로그램을 다시 실행하거나 multicli service refresh --configure-claude를 실행하세요.
업그레이드 후에.
대부분의 MCP 도구들은 몇 주 안에 구식이 됩니다. 이 도구는 설계 단계부터 자체 유지 관리(self-maintaining)가 가능하도록 만들어졌습니다.
Node.js >= 20 버전이 필요하며, 다음 CLI 중 최소 하나가 설치되어 있어야 합니다:
| CLI | 설치 |
|---|---|
| Claude Code | npm install -g @anthropic-ai/claude-code |
| ... |
Multi-CLI는 두 개 이상의 CLI가 설치되어 있을 때 가장 유용합니다. 하나만 설치된 경우에도 설치는 작동하지만, 아직 연결할 대상이 없을 수 있습니다.
클라이언트별로 직접 설치하는 것을 선호하시나요? 각 명령은 한 줄로 구성됩니다.
Claude Code의 안정성을 위해 권장되는 방법:
npm install -g @osanoai/multicli
multicli service install --configure-claude
이 명령은 127.0.0.1에서만 수신 대기하는 사용자별 백그라운드 서비스(background service)를 설치하고, Claude Code가 HTTP를 통해 Multi-CLI를 사용하도록 구성하며, Claude가 stdio 서브프로세스(subprocess)를 종료하더라도 기반 서버를 계속 유지합니다.
관리형 서비스는 다음과 같이 사용자별 로그인/백그라운드 서비스로 설치됩니다:
- macOS:
launchdLaunchAgent - Ubuntu/Debian:
systemd --user - Windows: 사용자 로그인 시 실행되는 예약된 작업(Scheduled Task)
보안 모델:
127.0.0.1에서만 수신 대기- 모든 HTTP MCP 요청에 대해
Authorization: Bearer <token>사용 - 생성된 서비스 아티팩트(artifacts)를 사용자 소유의 서비스 디렉토리에 저장
운영 참고 사항:
multicli service install은 일시적인npx런타임(runtimes) 사용을 거부합니다. 전역 설치(global install) 또는 안정적인 로컬 체크아웃(local checkout)을 사용하세요.- 생성된 서비스 상태에는 로컬 AI CLI가 추가 자격 증명(credentials)이나 PATH 항목을 필요로 할 경우 편집할 수 있는 env 파일이 포함됩니다.
- Linux의 경우, 기본
systemd --user서비스는 로그인 세션을 따릅니다. 로그아웃 후에도 서비스가 계속 유지되기를 의도적으로 원하는 경우에만 직접linger를 활성화하세요.
기존의 stdio 설치 방식도 여전히 사용 가능합니다:
claude mcp add --scope user Multi-CLI -- npx -y @osanoai/multicli@latest
Claude Desktop (JSON 설정)
macOS의 경우 ~/Library/Application Support/Claude/claude_desktop_config.json에 다음을 추가하세요:
{
"mcpServers": {
"Multi-CLI": {
...
저장 후 Claude Desktop을 완전히 재시작하세요.
gemini mcp add --scope user Multi-CLI npx -y @osanoai/multicli@latest
수동 설정 (~/.gemini/settings.json)
{
"mcpServers": {
"Multi-CLI": {
...
codex mcp add Multi-CLI -- npx -y @osanoai/multicli@latest
수동 설정 (~/.codex/config.toml) 또는 --mcp-config 전달
codex --mcp-config mcp.json
여기서 mcp.json은 다음을 포함합니다:
{
"mcpServers": {
"Multi-CLI": {
...
OpenCode의 mcp add 명령어는 대화형(interactive)이므로, Multi-CLI를 ~/.config/opencode/opencode.json에 직접 추가하십시오:
{
"mcp": {
"Multi-CLI": {
...
만약 파일이 이미 존재한다면, 기존의 "mcp" 객체에 "Multi-CLI" 항목을 병합(merge)하십시오.
Multi-CLI는 stdio와 Streamable HTTP를 모두 지원합니다.
stdio를 지원하는 클라이언트의 경우, 다음을 가리키도록 설정하십시오:
npx -y @osanoai/multicli@latest
관리형 로컬 HTTP 서비스의 경우, Multi-CLI를 전역(globally)으로 설치하고 다음을 실행하십시오:
multicli service install
이 서비스는 127.0.0.1에서만 리스닝(listen)하며 /mcp 및 /health를 노출합니다.
연결되면, 귀하의 AI 클라이언트는 다른 CLI들을 위한 도구에 접근할 수 있게 됩니다 (자신의 도구에는 접근할 수 없습니다):
| 도구 | 설명 |
|---|---|
List-Gemini-Models | 사용 가능한 Gemini 모델과 그 강점을 나열합니다 |
Ask-Gemini | Gemini에게 질문을 하거나 작업을 부여합니다 |
Fetch-Chunk | Gemini로부터 청크(chunk) 단위의 응답을 가져옵니다 |
Gemini-Help | Gemini CLI 도움말 정보를 가져옵니다 |
List-Codex-Models | 사용 가능한 Codex 모델을 나열합니다 |
Ask-Codex | Codex에게 질문을 하거나 작업을 부여합니다 |
Codex-Help | Codex CLI 도움말 정보를 가져옵니다 |
List-Claude-Models | 사용 가능한 Claude 모델을 나열합니다 |
Ask-Claude | Claude에게 질문을 하거나 작업을 부여합니다 |
Claude-Help | Claude Code CLI 도움말 정보를 가져옵니다 |
List-OpenCode-Models | 구성된 모든 제공자로부터 사용 가능한 OpenCode 모델을 나열합니다 |
Ask-OpenCode | OpenCode에게 질문을 하거나 작업을 부여합니다 |
OpenCode-Help | OpenCode CLI 도움말 정보를 가져옵니다 |
Ask-* 도구들은 여전히 일반적인 동기식 (synchronous) MCP 도구로 작동하지만, 이제 작업을 지원하는 MCP 클라이언트를 위해 선택적인 작업 기반 실행 (task-based execution) 기능도 함께 제공합니다.
- 작업을 지원하는 클라이언트 (Task-capable clients)는 긴 차단형 도구 요청 (blocking tool requests)을 피하기 위해 MCP 태스크 (tasks)를 사용하여 긴
Ask-*호출을 실행할 수 있습니다. 구형 클라이언트는 설정 변경 없이 동일한Ask-*도구를 동기식으로 계속 사용합니다.List-*,*-Help,Fetch-Chunk는 일반적인 동기식 도구로 유지됩니다.
설치 후에는 AI에게 자연스럽게 말하기만 하면 됩니다:
"Ask-Gemini가 이 아키텍처에 대해 어떻게 생각하는지 물어봐줘"
"Codex에게 이 함수의 성능 문제를 검토하도록 해줘"
"이 에러 메시지에 대한 Claude의 의견을 가져와줘"
...
또는 어떤 것에 대해서든 제2의 의견을 구할 수 있습니다:
"이 모듈을 리팩터링하는 방법에 대해 세 가지 관점을 원해 — Gemini와 Codex에게 각각 다르게 할 작업이 무엇인지 물어봐줘"
┌─────────────┐ MCP (stdio) ┌──────────────┐ CLI calls ┌─────────────┐
│ Your AI │ ◄──────────────────► │ Multi-CLI │ ───────────────► │ Other AIs │
│ Client │ │ server │ │ (CLI tools) │
...
Claude Code의 경우, Multi-CLI는 로컬 백그라운드 HTTP 서비스로도 실행될 수 있습니다:
┌─────────────┐ MCP (HTTP) ┌──────────────┐ CLI calls ┌─────────────┐
│ Claude Code │ ◄──────────────────► │ Multi-CLI │ ───────────────► │ Other AIs │
│ Client │ 127.0.0.1 only │ service │ │ (CLI tools) │
...
"No usable AI CLIs detected" (사용 가능한 AI CLI가 감지되지 않음)
최소 하나 이상의 다른 CLI가 설치되어 있고 PATH에 등록되어 있는지 확인하세요:
which gemini && which codex && which claude && which opencode
도구가 나타나지 않나요?
본인의 CLI만 설치되어 있다면, Multi-CLI는 이를 숨깁니다 (자기 호출 방지). 교차 모델 협업 (cross-model collaboration)을 활성화하려면 다른 CLI를 설치하세요.
MCP 서버가 응답하지 않나요?
- Node.js >= 20 버전이 설치되어 있는지 확인하세요.
npx -y @osanoai/multicli@latest를 직접 실행하여 stdio 서버가 시작되는지 확인하세요.- AI 클라이언트를 완전히 재시작하세요.
Claude Code가 성공적인 호출 이후에 연결이 끊기나요?
기존의 stdio 통합 대신 관리형 백그라운드 서비스를 사용하세요:
npm install -g @osanoai/multicli
multicli service install --configure-claude
multicli service doctor
유용한 서비스 명령어:
multicli service status
multicli service doctor
multicli service logs
multicli service refresh
multicli service uninstall
타임아웃(timeouts)이나 정리 동작(cleanup behavior)을 조정해야 하나요?
Multi-CLI는 다음과 같은 선택적 환경 변수 (environment variables)를 지원합니다:
MULTICLI_TRANSPORT
(stdio 또는 http)
MULTICLI_ASK_TIMEOUT_MS
MULTICLI_HELP_TIMEOUT_MS
MULTICLI_CLI_DETECT_TIMEOUT_MS
MULTICLI_KILL_GRACE_MS
MULTICLI_HTTP_HOST
(기본값: 127.0.0.1)
MULTICLI_HTTP_PORT
(기본값: 37420)
MULTICLI_HTTP_PATH
(기본값: /mcp)
MULTICLI_HTTP_AUTH_TOKEN
(직접 HTTP 모드 사용 시 필수)
MULTICLI_HTTP_SESSION_IDLE_MS
MULTICLI_LOG_PATH
(기본값: ~/.multicli/logs/multicli.log)
MULTICLI_LOG_LEVEL
(error, info, 또는 debug; 파일 로그의 경우 기본값은 debug)
MULTICLI_STDERR_LOG_LEVEL
(silent, error, info, 또는 debug; 기본값은 error)
MULTICLI_SERVICE_ROOT_DIR
MULTICLI_SERVICE_LOG_PATH
MULTICLI_SERVICE_ENV_PATH
MULTICLI_SERVICE_MANIFEST_PATH
서버는 구조화된 JSON-line 로그를 단일 파일 목적지에 기록하며, 장기 실행 서비스 모드(long-running service mode)를 위해 로그를 자동으로 순환(rotate)합니다. 또한 Ask-* 요청에 대해 전체 프롬프트 본문(prompt bodies)을 포함하므로, 연결 끊김이나 충돌이 발생한 후에도 사후에 이를 재구성할 수 있습니다.
git clone https://github.com/osanoai/multicli.git
cd multicli
npm install
...
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub Claude Ecosystem의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기