Model Context Protocol

ChatGPT와 Codex를 도구 및 정보에 연결하세요.

Model Context Protocol(MCP)을 사용하면 ChatGPT와 Codex가 다른 시스템의 도구와 정보를 활용할 수 있습니다. MCP server는 사용 가능한 도구를 설명하고 티켓 조회나 문서 검색 등의 요청을 처리합니다.

작업에 맞는 방법을 선택하세요.

티켓 123에 대한 질문이 ChatGPT에서 MCP server를 거쳐 티켓 관리 시스템으로 전달됩니다. 결과는 서버를 거쳐 돌아오며, ChatGPT는 티켓이 열려 있다고 알려 줍니다.

예: 팀의 지원 시스템에서 티켓 확인하기.

플러그인은 ChatGPT에서 사용할 수 있도록 MCP 연결을 패키지로 묶은 것입니다. 플러그인에는 재사용 가능한 지침이 담긴 스킬도 포함할 수 있습니다. 지침만 필요하다면 플러그인 만들기를 참고하세요.

Plugin Creator와 Sites로 MCP 플러그인 만들기

Plugin Creator로 플러그인을 만들고 편집하고, Sites로 MCP server를 호스팅하세요.

시작하기 전에

먼저 플러그인 디렉터리를 확인하세요. 새 연결이 필요하다면 시스템의 API 문서와 승인된 연결 방법을 준비하세요. 도움이 필요하면 시스템 소유자에게 문의하세요.

아래 예제에서는 Support Ticket Lookup 플러그인을 만듭니다. [티켓 관리 시스템] 을 사용 중인 시스템 이름으로 바꾸세요.

ChatGPT Enterprise를 사용하시나요?

워크스페이스 소유자나 관리자에게 워크스페이스 설정 → 권한 및 역할 에서 다음 사항을 확인해 달라고 요청하세요.

  • 플러그인을 만들고 편집하고 사용하려면 플러그인 사용 권한이 필요합니다. 편집하려면 해당 플러그인에 대한 편집 권한도 필요합니다.
  • Site를 만들고 게시하려면 Sites 액세스 권한이 필요합니다.
  • MCP 기반 플러그인을 게시하는 Site 소유자에게는 플러그인 업로드 및 MCP로 플러그인 만들기 권한이 필요합니다.

플러그인 사용 은 기본적으로 켜져 있으며, 두 가지 MCP 게시 권한은 기본적으로 꺼져 있습니다. Sites 액세스 권한과 플러그인 권한을 참고하세요.

1. 플러그인 만들기

새 Work 작업을 시작하고 @Plugin Creator 를 선택한 다음 API 문서를 첨부하세요. 수행할 작업을 설명하세요.

플러그인 만들기:

Create a Support Ticket Lookup plugin with an MCP server hosted on Sites, using the attached [ticketing system] API docs. Let me look up a ticket's status, owner, and latest update by ticket number. Make it read-only and tell me what's needed to connect it.

아직 API 액세스를 준비 중이라면 Plugin Creator에 우선 샘플 데이터를 사용하도록 요청하세요.

2. 시스템 연결하기

같은 대화에서 Plugin Creator에 서버를 시스템의 API에 연결하고 로그인 절차를 안내해 달라고 요청하세요. 조직에서 승인한 인증 방법을 사용하고, 비밀번호, API key, 기타 비밀 정보는 채팅에 입력하지 마세요.

연결 및 호스팅 세부 정보

Sites는 ChatGPT와 MCP server 간의 로그인을 처리합니다. 서버에는 시스템의 API에 대한 승인된 연결이 별도로 필요하며, 이 연결에 따라 액세스할 수 있는 레코드와 작업이 결정됩니다.

다른 호스팅 서비스를 사용하려면 MCP server 만들기를 따른 다음 플러그인 연결 및 테스트를 진행하세요. 로그인 설정은 인증 가이드를 참고하세요.

3. 게시 및 설치하기

Plugin Creator에 현재 액세스 설정을 유지하면서 Sites로 서버를 게시하고 플러그인 링크를 제공해 달라고 요청하세요. 플러그인을 만들려면 Site 소유자가 게시해야 합니다. 편집자는 소유자에게 게시를 요청해야 합니다.

  1. 플러그인 카드를 열거나 플러그인 → 개인 → 내가 만든 플러그인 에서 찾으세요.
  2. 설치 와 연결 을 차례로 진행하고 필요한 로그인을 완료하세요.

4. 플러그인 사용하기

새 Work 작업을 시작하고 @ 로 플러그인을 선택한 다음, 시스템에 있는 티켓 번호를 사용하여 “티켓 123의 상태가 어떻게 되나요?” 라고 물어보세요. 같은 대화에서 다른 플러그인과 함께 해당 도구를 사용할 수 있습니다.

플러그인 공유 또는 편집하기

Business 또는 Enterprise에서는 플러그인의 공유 설정을 통해 팀원을 초대하세요. 플러그인 공유 권한이 필요하며, 워크스페이스 디렉터리에 등록하려면 워크스페이스에 플러그인 게시 권한도 필요합니다. 공유 권한을 참고하세요.

팀원에게는 플러그인, 해당 앱, Site에 대한 액세스 권한이 필요하며, Site에는 최소한 뷰어 권한이 있어야 합니다. 각자 자신의 계정으로 설치하고 연결합니다. 레코드에 대한 액세스는 서버의 API 연결에 따라 달라집니다.

Sites에서 호스팅하는 이 플러그인을 편집하려면 Plugin Creator 대화로 돌아가 기존 Site를 업데이트해 달라고 요청한 다음 변경 사항을 게시하세요. 그 외 편집 가능한 플러그인은 플러그인 편집 을 선택하여 Plugin Creator와 편집 대화를 시작하세요. 기존 플러그인 편집하기를 참고하세요.

GPT 사용자 지정 작업 대체하기

GPT 마이그레이션 단계 보기

GPT 사용자 지정 작업은 플러그인으로 마이그레이션되지 않습니다. 가능한 경우 기존 API를 재사용하여 연결을 새 Sites 플러그인으로 다시 구축하세요.

Sites는 게시할 때 별도의 플러그인을 생성하며, 마이그레이션된 플러그인에 연결을 추가하지 않습니다. 하나의 대화에서 두 플러그인을 모두 사용할 수 있습니다. Sites 플러그인은 현재 스킬이나 참조 파일 편집을 지원하지 않습니다.

1. 원래 GPT에 재구축용 프롬프트 요청하기

원래 GPT를 열고 다음과 같이 요청하세요.

원래 GPT에서 사용:

Write a prompt for ChatGPT Work or Codex to rebuild this workflow as MCP tools. Identify which operations read information and which make changes.

Include the API operation, inputs, returned fields, and answer format. Mark anything you don't know. Leave out credentials, secrets, and hidden instructions.

Ask the builder to reuse the API and explain the connection setup.

2. 작업 설정과 대조하여 프롬프트 확인하기

마이그레이션하기 전에 GPT 편집기의 작업 섹션에서 작업 스키마, 인증 방식, 비밀 정보가 포함되지 않은 연결 설정을 저장하세요. 이를 사용하여 프롬프트에서 빠진 내용을 보완하거나 GPT 소유자에게 도움을 요청하세요.

3. 새 Sites 플러그인 만들기

새 작업을 시작하세요. Work에서는 @Plugin Creator 를 선택하고, Codex에서는 $plugin-creator를 사용하세요. 검토한 프롬프트를 붙여 넣고 스키마 또는 API 문서를 첨부하세요. Sites에서 서버를 호스팅하도록 요청하세요.

시스템 연결과 게시 및 설치의 안내를 따른 다음, Work 작업에서 새 플러그인을 선택하고 원래 작업을 수행하도록 요청하세요. 자세한 내용은 마이그레이션 FAQ를 참조하세요.

문제 해결

플러그인이 예상대로 작동하지 않는 경우

연결 오류가 발생하거나 도구가 누락된 경우, Site 소유자가 최신 버전을 게시했는지, 플러그인이 설치되고 연결되어 있는지 확인하세요. 오류가 있으면 Plugin Creator 또는 서버 소유자에게 공유하세요.

ChatGPT가 도구를 사용하지 않으면 @ 로 플러그인을 선택하고 구체적인 정보 조회를 요청하세요. 팀원이 사용할 수 없다면 해당 팀원의 플러그인, 앱, Site 및 레코드에 대한 접근 권한을 확인하세요.

플러그인에 데스크톱 전용 이라고 표시되면 지원되는 데스크톱 앱을 사용하거나 작성자에게 패키징을 검토해 달라고 요청하세요. 원격 MCP server만으로는 플러그인이 웹과 호환되지 않습니다.

기존 MCP server 연결하기

ChatGPT 웹은 플러그인을 통해 원격 MCP 도구를 사용합니다. 이미 서버가 있다면 플러그인 연결 및 테스트의 안내를 따르세요. 로컬 Codex 클라이언트도 MCP server에 직접 연결하고 구성을 공유할 수 있습니다.

사용하는 환경을 선택하여 해당 환경의 설정 및 구성 옵션을 확인하세요.

ChatGPT 데스크톱 앱, Codex CLI 및 IDE 확장 프로그램은 MCP server를 지원하며 동일한 Codex 호스트의 MCP 구성을 공유합니다.

아래에서 지원되는 서버 기능은 Codex 호스트에 구성된 MCP server에 적용됩니다. 호스팅된 플러그인 도구는 기능이 다를 수 있습니다.

지원되는 MCP 기능

  • STDIO 서버: 로컬 프로세스로 실행되는 서버입니다(명령으로 시작).
    • 환경 변수
  • 스트리밍 가능 HTTP 서버: 주소를 통해 액세스하는 서버입니다.
    • Bearer 토큰 인증
    • Client ID Metadata Documents(CIMD) 및 Dynamic Client Registration(DCR)을 포함한 OAuth 인증
    • 신뢰할 수 있는 자사 서버를 위한 ChatGPT 세션 인증
  • 서버 지침: Codex는 초기화 중 반환된 MCP instructions 필드를 읽고 서버 도구와 함께 서버 전체에 적용되는 지침으로 사용합니다.

Codex용 MCP server를 구축하거나 유지 관리한다면 서버 전체에 적용되는 도구 간 워크플로, 제약 조건 및 속도 제한에 instructions 필드를 사용하세요. Codex가 서버 사용 방법을 결정할 때 가장 중요한 지침을 활용할 수 있도록 처음 512자는 그 자체로 완결되게 작성하세요.

Codex를 MCP server에 연결하기

Codex는 다른 Codex 구성 설정과 함께 config.toml에 MCP 구성을 저장합니다. 기본 위치는 ~/.codex/config.toml이지만 .codex/config.toml을 사용해 MCP server의 범위를 프로젝트로 한정할 수도 있습니다(신뢰할 수 있는 프로젝트만 해당).

ChatGPT 데스크톱 앱, Codex CLI 및 IDE 확장 프로그램은 이 구성을 공유합니다. MCP server를 구성한 후에는 설정을 다시 하지 않고도 이러한 클라이언트 간에 전환할 수 있습니다.

ChatGPT 데스크톱 앱에서 구성하기

  1. Settings 를 열고 MCP servers 를 선택합니다.
  2. Add server 를 선택합니다.
  3. 이름을 입력하고 STDIO 또는 Streamable HTTP 를 선택한 다음 서버의 명령 또는 URL을 제공합니다.
  4. 서버를 저장한 다음 Restart 를 선택합니다.

서버 목록에는 활성화된 서버와 OAuth가 필요한 서버가 표시됩니다. OAuth 서버에 로그인이 필요하면 Authenticate 를 선택합니다. 작성란에 /mcp 명령을 입력하여 연결된 서버를 확인할 수 있습니다.

config.toml로 구성하기

더 세밀하게 제어하려면 ~/.codex/config.toml 또는 프로젝트 범위의 .codex/config.toml을 편집하세요. 지원되는 모든 MCP 옵션을 검색할 수 있는 목록은 구성 참조에서 확인하세요.

구성 파일에서 각 MCP server를 [mcp_servers.<server-name>] 테이블로 구성합니다.

STDIO 서버

  • command(필수): 서버를 시작하는 명령입니다.
  • args(선택 사항): 서버에 전달할 인수입니다.
  • env(선택 사항): 서버에 설정할 환경 변수입니다.
  • env_vars(선택 사항): 허용하고 전달할 환경 변수입니다.
  • cwd(선택 사항): 서버를 시작할 작업 디렉터리입니다.
  • experimental_environment(선택 사항): 원격 실행기 환경을 사용할 수 있을 때 해당 환경을 통해 stdio 서버를 시작하려면 remote로 설정합니다.

env_vars에는 일반 변수 이름이나 소스가 지정된 객체를 포함할 수 있습니다.

env_vars = ["LOCAL_TOKEN", { name = "REMOTE_TOKEN", source = "remote" }]

문자열 항목과 source = "local"은 Codex의 로컬 환경에서 읽습니다. source = "remote" 설정은 원격 실행기 환경에서 읽으며 원격 MCP stdio가 필요합니다.

Streamable HTTP 서버

  • url(필수): 서버 주소입니다.
  • auth(선택 사항): 구성된 전달자 토큰 및 권한 부여 헤더 다음에 시도할 인증입니다. 저장된 MCP OAuth 자격 증명을 사용하려면 oauth(기본값)을 사용합니다. 신뢰할 수 있는 자사 ChatGPT 출처에 현재 ChatGPT 세션을 사용하고 저장된 OAuth를 대체 수단으로 사용하려면 chatgpt를 사용합니다.
  • bearer_token_env_var(선택 사항): Authorization으로 전송할 전달자 토큰의 환경 변수 이름입니다.
  • http_headers(선택 사항): 헤더 이름을 정적 값에 매핑한 항목입니다.
  • env_http_headers(선택 사항): 헤더 이름을 환경 변수 이름에 매핑한 항목입니다(값은 환경에서 가져옴).
  • http_headers_helper(선택 사항): 헤더 이름과 문자열 값으로 구성된 JSON 객체를 출력하는 로컬 명령입니다(예: {"X-Auth": "temporary-token"}). 로컬 환경에서 이루어지는 HTTP MCP 연결에 지원되며, stdio 서버나 원격 실행 환경을 통해 이루어지는 연결에는 지원되지 않습니다.

Codex는 연결에 사용할 도우미 헤더를 캐시합니다. 동일 출처 POST가 401 또는 403을 반환하면 헤더를 한 번 새로 고치고, 도우미가 변경된 값을 반환하는 경우에만 다시 시도합니다. 명시적 전달자 토큰과 OAuth 자격 증명은 도우미가 제공한 Authorization 헤더보다 우선합니다. 범위가 부족하다고 보고하는 OAuth 403 응답은 도우미 새로 고침을 트리거하지 않습니다.

확인되는 자격 증명 소스가 없으면 Codex는 인증 없이 서버에 연결할 수 있습니다. MCP OAuth 로그인을 시작하려면 codex mcp login <server-name> 명령을 별도로 실행하세요.

기타 구성 옵션

  • startup_timeout_sec(선택 사항): 서버 시작 제한 시간(초)입니다. 기본값: 10.
  • tool_timeout_sec(선택 사항): 서버에서 도구를 실행하는 제한 시간(초)입니다. 기본값: 60.
  • enabled(선택 사항): 서버를 삭제하지 않고 비활성화하려면 false로 설정합니다.
  • required(선택 사항): 활성화된 이 서버를 초기화할 수 없을 때 시작이 실패하도록 하려면 true로 설정합니다.
  • enabled_tools(선택 사항): 도구 허용 목록입니다.
  • disabled_tools(선택 사항): 도구 거부 목록입니다(enabled_tools 이후 적용).
  • default_tools_approval_mode(선택 사항): 이 서버의 도구에 적용할 기본 승인 동작입니다. 지원되는 값은 auto, prompt, writes 및 approve입니다. writes 모드에서는 읽기 전용으로 표시되지 않은 도구에 대해 승인을 요청합니다.
  • tools.<tool>.approval_mode(선택 사항): 도구별 승인 동작 재정의입니다.
  • tools.<tool>.output_token_limit(선택 사항): 표준 20% 직렬화 허용량을 적용하기 전, 도구 하나의 출력에 적용되는 양의 토큰 예산입니다. 해당 도구에 대한 모델의 기본 출력 잘림 예산을 재정의합니다.

최상위 mcp_optional_startup_grace_ms 설정은 Codex가 초기 도구 카탈로그를 구성할 때 선택적 MCP server를 기다리는 시간을 제어합니다. 기본값은 1000 밀리초입니다. 각 서버의 startup_timeout_sec만큼 기다리려면 0으로 설정합니다. 필수 서버에는 계속 해당 서버의 시작 제한 시간이 적용됩니다.

OAuth 클라이언트 등록 및 콜백

인증 서버에서 사전 등록된 OAuth 클라이언트를 요구하는 경우, MCP server를 추가할 때 해당 클라이언트 ID를 입력합니다.

codex mcp add example --url https://mcp.example.com --oauth-client-id my-client

기밀 클라이언트의 경우 --oauth-client-secret도 전달하세요. 시크릿은 환경 변수에서 읽어오세요:

codex mcp add example --url https://mcp.example.com --oauth-client-id my-client --oauth-client-secret "$MCP_CLIENT_SECRET"

이 옵션에는 비어 있지 않은 클라이언트 ID와 시크릿이 필요합니다. Codex는 시크릿을 mcp_servers.example.oauth.client_secret 값으로 config.toml에 저장합니다. 이 파일은 비공개로 유지하고 버전 관리에서 제외하세요.

Codex는 제공업체에 등록할 전체 콜백 URL을 표시합니다.

OAuth callback URL: http://127.0.0.1/callback

Codex는 이후 로그인에 사용할 수 있도록 클라이언트 ID와 함께 콜백을 config.toml에 저장합니다.

[mcp_servers.example]
url = "https://mcp.example.com"

[mcp_servers.example.oauth]
client_id = "my-client"
callback_url = "http://127.0.0.1/callback"

새로 추가된 사전 등록 클라이언트는 인증 서버가 authorization_response_iss_parameter_supported: true로 알리고 메타데이터 issuer를 제공하는 경우에만 고정 콜백을 사용합니다. 발급자 지원을 알리지 않으면 Codex는 http://127.0.0.1/callback/XuuuHAzzHOni와 같이 서버별 콜백 ID를 추가합니다. 저장된 콜백이 없는 기존 클라이언트는 계속해서 콜백 ID가 포함된 리디렉션을 사용합니다.

로그인 중 콜백 선택은 OAuth 구성과 인증 서버 메타데이터에 따라 달라집니다.

OAuth 구성 발급자 지원 사용되는 콜백
callback_url(client_id 없음) 지원됨 구성된 콜백이 클라이언트 등록에 사용됩니다.
callback_url(client_id 없음) 지원되지 않음 구성된 콜백에 서버별 콜백 ID를 추가하여 클라이언트 등록에 사용합니다.
client_id 및 callback_url 지원됨 구성된 콜백을 재사용하며, 인증 응답에 일치하는 iss가 포함되어야 합니다.
client_id 및 올바른 콜백 ID로 끝나는 callback_url 지원되지 않음 구성된 콜백을 변경 없이 재사용합니다.
client_id 및 올바른 콜백 ID가 없는 callback_url 지원되지 않음 구성된 콜백을 무시합니다. Codex는 mcp_oauth_callback_url 설정을 사용하며, 설정되지 않은 경우 http://127.0.0.1/callback에 콜백 ID를 추가하여 사용합니다.
client_id(구성된 callback_url 없음) 지원 여부 무관 Codex는 전역 또는 기본 콜백에 서버별 콜백 ID를 추가하여 사용합니다.

대체 동작은 저장된 콜백 URL을 수정하지 않습니다. Codex는 경로와 쿼리 문자열을 포함한 MCP server URL에서 콜백 ID를 파생합니다. 자동 로그인과 명시적 로그인에 동일한 선택 규칙이 적용됩니다.

사용자 지정 콜백 경로나 원격 Devbox 인그레스 URL이 필요한 경우 mcp_oauth_callback_url을 설정하세요. 새로 추가된 사전 등록 클라이언트는 제공업체가 발급자 식별을 지원하면 해당 URL을 변경 없이 사용합니다. 그렇지 않으면 구성된 URL에 서버별 콜백 ID를 추가하여 사용합니다. 항상 codex mcp add에서 표시하는 정확한 콜백을 등록하세요.

명시적 포트가 없는 http://127.0.0.1 콜백의 경우, Codex는 표시하고 저장하는 URL에서 리스너 포트를 생략한 뒤, 인가 과정에서 활성 리스너 포트를 삽입합니다. 이 치환은 localhost, IPv6 호스트, HTTPS URL 또는 이미 포트가 포함된 콜백에는 적용되지 않습니다. 인가 서버는 다음 규정에 따라 가변 루프백 포트를 허용해야 합니다. RFC 8252, 섹션 7.3.

mcp_oauth_callback_port를 설정해 고정 전역 리스너 포트를 선택하거나, mcp_servers.<server-name>.oauth.callback_port를 설정해 특정 서버의 포트를 재정의하세요. 콜백 URL에 포트를 명시해도 리스너가 구성되지는 않습니다. 직접 루프백 콜백의 경우, 명시적 포트 없이 http://127.0.0.1을 사용하거나 콜백 URL과 리스너에 동일한 포트를 명시적으로 구성하세요. 프록시를 거치는 콜백은 로컬 리스너 포트와 다른 외부 URL 포트를 의도적으로 사용할 수 있습니다. 로컬 콜백 URL은 로컬 인터페이스에 바인딩되고, 로컬이 아닌 콜백 URL은 0.0.0.0에 바인딩됩니다.

Codex는 인증 코드를 교환하기 전에 반환된 모든 iss를 검증합니다. iss가 일치하지 않으면 항상 응답을 거부합니다. 발급자 지원이 알려진 경우 iss가 누락되어도 응답을 거부합니다. 두 실패 모두 코드를 교환하거나 다른 콜백으로 대체하지 않습니다. 콜백 URL의 형식이 잘못되었거나 메타데이터 발급자 없이 발급자 지원만 알려진 경우에도 복구 불가능한 실패로 처리됩니다. 자세한 내용은 사용자 인증을 참조하세요.

서버의 OAuth 범위를 선택하려면 mcp_servers.<server-name>.scopes를 config.toml에 설정합니다. 한 번의 로그인에만 다른 범위를 적용하려면 다음을 실행합니다. codex mcp login <name> --scopes read,write. 둘 다 설정하지 않으면 Codex는 서버가 제공하는 OAuth 범위가 있을 경우 해당 범위를 사용합니다.

빈 목록(scopes = [])을 설정해도 OAuth 라이브러리가 범위를 선택할 수 있습니다. 인증 서버가 지원하는 경우 라이브러리는 offline_access도 추가할 수 있습니다.

OAuth 클라이언트 등록

Codex는 OAuth Client ID Metadata Documents(CIMD)와 Dynamic Client Registration(DCR)을 지원합니다. 기본적으로 인증 서버가 client_id_metadata_document_supported: true로 알리고, token_endpoint_auth_methods_supported에 none 값을 포함하며, 콜백이 지원되는 루프백 URL을 사용하면 Codex가 자동으로 CIMD를 선택합니다. 그렇지 않고 DCR을 사용할 수 있으면 Codex는 DCR을 사용합니다. 구성된 OAuth 클라이언트 ID는 항상 우선하며 클라이언트 등록을 건너뜁니다.

발급자에 바인딩된 응답이 없는 CIMD의 경우, Codex CLI는 ChatGPT에서 호스팅하는 MCP server별 메타데이터 문서를 사용합니다.

https://chatgpt.com/oauth/codex/<callback_id>/client.json

Codex는 MCP server URL에서 <callback_id>를 도출하여 다음과 같은 루프백 리디렉션 URI에 포함합니다: http://127.0.0.1:<port>/callback/<callback_id>. 메타데이터 문서에는 포트가 없는 해당 루프백 URI가 등록됩니다. 권한 부여 서버는 RFC 8252의 요구 사항에 따라 호스트와 경로가 정확히 일치하는 경우 로그인 시 선택된 포트를 허용해야 합니다. 사용자 지정 콜백 호스트, 경로 또는 쿼리 매개변수를 사용하려면 DCR 또는 구성된 OAuth 클라이언트 ID가 필요합니다.

Codex CLI는 고정된 공용 CIMD 문서도 지원합니다.

https://chatgpt.com/oauth/codex/client.json

Codex CLI는 인가 서버가 다음 조건을 충족할 때 공용 /callback 경로와 함께 고정 문서를 사용합니다. 인가 서버가 authorization_response_iss_parameter_supported: true 지원을 알리고, 메타데이터에 유효한 issuer를 제공하며, 인가 응답에 일치하는 iss를 포함해야 합니다. 발급자에 바인딩된 응답이 없는 서버는 콜백별 문서를 사용합니다.

한 번의 CLI 로그인에 사용할 등록 방식을 선택하려면 --oauth-client-registration 옵션을 사용합니다:

codex mcp login <server-name> --oauth-client-registration cimd
codex mcp login <server-name> --oauth-client-registration dcr

기본값은 auto입니다. 등록 방식 선택은 현재 로그인에만 적용되며 config.toml에 저장되지 않습니다.

config.toml 예시

[mcp_servers.context7]
command = "npx"
args = ["-y", "@upstash/context7-mcp"]
env_vars = ["LOCAL_TOKEN"]

[mcp_servers.context7.env]
MY_ENV_VAR = "MY_ENV_VALUE"
# Optional MCP OAuth callback overrides (used by `codex mcp login`)
mcp_oauth_callback_port = 5555
mcp_oauth_callback_url = "https://devbox.example.internal/callback"
[mcp_servers.figma]
url = "https://mcp.figma.com/mcp"
bearer_token_env_var = "FIGMA_OAUTH_TOKEN"
http_headers = { "X-Figma-Region" = "us-east-1" }
[mcp_servers.chrome_devtools]
url = "http://localhost:3000/mcp"
enabled_tools = ["open", "screenshot"]
disabled_tools = ["screenshot"] # applied after enabled_tools
default_tools_approval_mode = "prompt"
startup_timeout_sec = 20
tool_timeout_sec = 45
enabled = true

[mcp_servers.chrome_devtools.tools.open]
approval_mode = "approve"
output_token_limit = 30000

플러그인이 제공하는 MCP server

설치된 플러그인은 플러그인 매니페스트에 MCP server를 포함할 수 있습니다. 이러한 서버는 플러그인에서 시작되므로 사용자 구성에서 전송 명령을 설정하지 않습니다. 사용자 구성에서는 plugins.<plugin>.mcp_servers.<server> 아래에서 활성화/비활성화 상태와 도구 정책을 계속 제어할 수 있습니다.

[plugins."sample@test".mcp_servers.sample]
enabled = true
default_tools_approval_mode = "prompt"
enabled_tools = ["read", "search"]

[plugins."sample@test".mcp_servers.sample.tools.search]
approval_mode = "approve"

플러그인이 제공하는 HTTP MCP server도 .mcp.json에서 OAuth 설정을 선언할 수 있습니다. 플러그인 매니페스트는 camelCase 필드 이름인 clientId, callbackUrl 및 callbackPort 값을 사용합니다.

{
  "mcpServers": {
    "sample": {
      "type": "http",
      "url": "https://mcp.example.com/mcp",
      "oauth": {
        "clientId": "my-pre-registered-client",
        "callbackUrl": "http://127.0.0.1/callback/registered"
      }
    }
  }
}

플러그인이 제공하는 MCP server에는 다른 MCP server와 동일한 콜백 선택 규칙이 적용됩니다. 플러그인이 clientId를 제공하고, 해당 제공업체가 발급자에 바인딩된 콜백을 지원하지 않으며, callbackUrl에 서버별 콜백 ID가 없으면 Codex는 로그인 시 해당 URL을 무시하고 mcp_oauth_callback_url 설정을 사용하며, 설정되지 않은 경우 http://127.0.0.1/callback에 콜백 ID를 추가하여 사용합니다. 구성된 callbackUrl 값은 변경되지 않습니다.

플러그인의 oauth.callbackPort는 전역 mcp_oauth_callback_port 설정을 재정의합니다. 둘 다 설정되지 않으면 Codex는 임시 포트를 선택합니다. callbackUrl에 포함된 포트는 리스너 포트를 선택하지 않습니다. 고정 포트를 사용하는 직접 루프백 콜백의 경우 두 값이 일치하도록 구성합니다.

{
  "callbackUrl": "http://127.0.0.1:4321/callback/registered",
  "callbackPort": 4321
}

원격 인그레스나 다른 프록시가 구성된 리스너로 전달하는 경우, 콜백 URL 포트와 로컬 리스너 포트를 의도적으로 다르게 설정할 수 있습니다.

유용한 MCP server 예시

MCP server 목록은 계속 늘어나고 있습니다. 다음은 자주 사용되는 몇 가지 예시입니다.

  • OpenAI Docs MCP: OpenAI 개발자 문서를 검색하고 읽습니다.
  • Context7: 최신 개발자 문서에 연결합니다.
  • Figma 로컬 및 원격: Figma 디자인에 액세스합니다.
  • Playwright: Playwright를 사용하여 브라우저를 제어하고 검사합니다.
  • Chrome Developer Tools: Chrome을 제어하고 검사합니다.
  • Sentry: Sentry 로그에 액세스합니다.
  • GitHub: git에서 지원하는 범위를 넘어 GitHub를 관리합니다(예: pull request 및 issue).