Skip to main content

MCP(모델 컨텍스트 프로토콜)를 사용하여 Copilot 코딩 에이전트 확장

MCP(모델 컨텍스트 프로토콜)를 사용하여 Copilot 코딩 에이전트의 기능을 확장하는 방법을 알아봅니다.

참고 항목

Copilot 코딩 에이전트는 공개 미리 보기 버전이며 변경될 수 있습니다. 미리 보기 중 기능의 사용은 GitHub 시험판 사용 조건을(를) 따릅니다.

전제 조건

Copilot 코딩 에이전트에 대한 MCP 서버를 설정하기 전에 MCP(모델 컨텍스트 프로토콜) 및 Copilot 코딩 에이전트을(를) 읽어 MCP 서버 및 Copilot 코딩 에이전트에 대한 개념을 이해해야 합니다.

소개

리포지토리 관리자는 리포지토리 내에서 사용할 MCP 서버를 구성할 수 있습니다. 이 작업은 MCP 서버의 세부 정보를 지정하는 JSON 형식 구성을 사용하여 수행합니다. GitHub.com의 리포지토리 설정에 JSON 구성을 직접 입력합니다.

경고

MCP 서버를 구성하면 Copilot이 서버에서 제공하는 도구를 자율적으로 사용할 수 있으며 도구를 사용하기 전에 사용자의 승인을 요청할 필요가 없습니다.

리포지토리에 MCP 구성 추가

리포지토리 관리자는 다음 단계에 따라 MCP 서버를 구성할 수 있습니다.

  1. GitHub에서 리포지토리의 기본 페이지로 이동합니다.

  2. 리포지토리 이름 아래에서 설정을 클릭합니다. "설정" 탭이 표시되지 않으면 드롭다운 메뉴를 선택한 다음 설정을 클릭합니다.

    탭을 보여 주는 리포지토리 헤더의 스크린샷. "설정" 탭이 진한 주황색 윤곽선으로 강조 표시됩니다.

  3. 사이드바의 "Code & automation" 섹션에서 Copilot, 코딩 에이전트 를 차례로 클릭합니다.

  4. MCP configuration 섹션에서 구성을 추가합니다.

    이 문서의 다음 섹션에서는 여기에 입력해야 하는 JSON 구성을 작성하는 방법을 설명합니다.

  5. 저장을 클릭합니다.

    구성의 유효성을 검사하여 적합한 구문인지 확인합니다.

  6. MCP 서버에 키 또는 비밀이 필요한 경우, Copilot 환경에 비밀을 추가합니다. COPILOT_MCP_ 접두사로 시작하는 이름이 있는 비밀만 MCP 구성에서 사용할 수 있습니다. Copilot 코딩 에이전트를 위한 Copilot 환경 설정.을 참조하세요.

MCP 서버에 대한 JSON 구성 작성

특별한 JSON 형식을 사용하여 MCP 서버를 구성합니다. 이 JSON에는 mcpServers 개체가 포함되어야 합니다. 여기서 키는 MCP 서버의 이름(예: sentry)이고, 값은 해당 MCP 서버의 구성이 있는 개체입니다.

JSON
{
  "mcpServers": {
    "MCP SERVER 1": {
      "command": "VALUE",
      "args": [ VALUES ],
      ...
    },
    "MCP SERVER 2": {
      "command": "VALUE",
      "args": [ VALUES ],
      ...
    },
    ...
  }
}

구성 개체에는 다음 키를 포함할 수 있습니다.

로컬 및 원격 MCP 서버에 필요한 키

  • tools(string[]): MCP 서버에서 사용할 도구입니다. 도구 목록은 서버 문서나 코드에서 찾을 수 있습니다. 에이전트가 이러한 도구를 자율적으로 사용할 수 있고 먼저 승인을 요청하지 않으므로 특정 읽기 전용 도구를 허용 목록에 추가하는 것이 좋습니다. *를 배열에 포함하여 모든 도구를 사용하도록 설정할 수도 있습니다.
  • type(string): Copilot 코딩 에이전트는 "local", "http" 또는 "sse"를 허용합니다.

로컬 MCP 특정 키

  • command(string): 필수 사항. MCP 서버를 시작하기 위해 실행할 명령입니다.
  • args(string[]): 필수 사항. command에 전달할 인수입니다.
  • env(object): 선택 사항. 서버에 전달할 환경 변수입니다. 이 개체는 MCP 서버에 노출되어야 하는 환경 변수의 이름을 다음 중 하나에 매핑해야 합니다.
    • 구성된 GitHub Actions 비밀의 이름(COPILOT_MCP_로 시작)입니다.
    • 문자열 값입니다.

원격 MCP 특정 키

  • url(string): 필수 사항. MCP 서버의 URL입니다.
  • headers(object): 선택 사항. 서버에 대한 요청에 연결할 헤더입니다. 이 개체는 헤더 키의 이름을 다음 중 하나에 매핑해야 합니다.
    • 구성된 GitHub Actions 비밀의 이름으로, $ 다음에 COPILOT_MCP_로 시작됩니다.
    • 문자열 값

구성 예

예: Sentry

Sentry MCP 서버는 Copilot이 Sentry에 기록된 예외에 인증된 액세스 권한을 부여합니다.

JavaScript
// If you copy and paste this example, you will need to remove the comments prefixed with `//`, which are not valid JSON.
{
  "mcpServers": {
    "sentry": {
      "type": "local",
      "command": "npx",
      // We can use the $SENTRY_HOST environment variable which is passed to
      // the server because of the `env` value below.
      "args": ["@sentry/mcp-server@latest", "--host=$SENTRY_HOST"],
      "tools": ["get_issue_details", "get_issue_summary"],
      "env": {
        // We can specify an environment variable value as a string...
        "SENTRY_HOST": "https://contoso.sentry.io",
        // or refer to a GitHub Actions secret with a name starting with
        // `COPILOT_MCP_`
        "SENTRY_ACCESS_TOKEN": "COPILOT_MCP_SENTRY_ACCESS_TOKEN"
      }
    }
  }
}

예: Notion

Notion MCP 서버는 Copilot이 Notion의 노트와 기타 콘텐츠에 인증된 액세스 권한을 부여합니다.

JavaScript
// If you copy and paste this example, you will need to remove the comments prefixed with `//`, which are not valid JSON.
{
  "mcpServers": {
    "notionApi": {
      "type": "local",
      "command": "docker",
      "args": [
        "run",
        "--rm",
        "-i",
        "-e",
        // We can use the $NOTION_API_KEY environment variable which is passed to
        // the server because of the `env` value below.
        "OPENAPI_MCP_HEADERS={\"Authorization\": \"Bearer $NOTION_API_KEY\", \"Notion-Version\": \"2022-06-28\"}",
       "mcp/notion"
      ],
      "env": {
        // The value of the `COPILOT_MCP_NOTION_API_KEY` secret will be passed to the
        // server command as an environment variable called `NOTION_API_KEY`
        "NOTION_API_KEY": "COPILOT_MCP_NOTION_API_KEY"
      },
      "tools": ["*"]
    }
  }
}

예제: Azure

Azure MCP 서버는 Copilot과 Azure Cosmos DB 및 Azure Storage 플랫폼과 같은 주요 Azure 서비스 간에 원활한 연결을 생성합니다.

Copilot 코딩 에이전트와 함께 Azure MCP를 사용하려면 Azure 로그인 워크플로 단계를 포함하도록 리포지토리의 copilot-setup-steps.yml 파일을 업데이트해야 합니다.

  1. GitHub를 신뢰하여 Microsoft Entra 애플리케이션에서 OIDC를 구성합니다. OpenID Connect로 Azure 로그인 작업 사용을 참조하세요.

  2. 아직 리포지토리가 없다면, .github/workflows/copilot-setup-steps.yml Actions 워크플로 파일을 추가하세요.

  3. copilot-setup-steps 워크플로 작업에 Azure 로그인 단계를 추가합니다.

    YAML
    on:
      workflow_dispatch:
    permissions:
      id-token: write
      contents: read
    jobs:
      copilot-setup-steps:
        runs-on: ubuntu-latest
        permissions:
          id-token: write
          contents: read
        environment: copilot
        steps:
          - name: Azure login
            uses: azure/login@a457da9ea143d694b1b9c7c869ebb04ebe844ef5
            with:
              client-id: ${{ secrets.AZURE_CLIENT_ID }}
              tenant-id: ${{ secrets.AZURE_TENANT_ID }}
              subscription-id: ${{ secrets.AZURE_SUBSCRIPTION_ID }}
    

    이 구성은 Copilot 코딩 에이전트가 실행될 때, azure/login 작업이 실행되도록 합니다.

  4. 리포지토리의 Copilot 환경에서 AZURE_CLIENT_ID, AZURE_TENANT_ID, AZURE_SUBSCRIPTION_ID를 위한 비밀을 추가합니다.

  5. MCP 구성에 azure 개체를 추가하여 Azure MCP 서버를 구성합니다.

JSON
 {
   "mcpServers": {
     "Azure": {
      "type": "local",
      "command": "npx",
      "args": [
        "-y",
        "@azure/mcp@latest",
        "server",
        "start"
       ],
      "tools": ["*"]
     }
   }
 }

예: Cloudflare

Cloudflare MCP 서버는 처리 문서 및 데이터 분석을 포함하는 Cloudflare 서비스 간에 연결을 만듭니다.

JSON
{
  "mcpServers": {
    "cloudflare": {
      "type": "sse",
      "url": "https://docs.mcp.cloudflare.com/sse",
      "tools": ["*"]
    }
  }
}

Visual Studio Code에서 MCP 구성 다시 사용

VS Code에서 MCP 서버를 이미 구성한 경우, Copilot 코딩 에이전트에 대해 유사한 구성을 활용할 수 있습니다.

VS Code를 구성하는 방법에 따라 리포지토리의 .vscode/mcp.json 파일이나 머신의 프라이빗 settings.json 파일에서 MCP 설정을 찾을 수 있습니다.

Copilot 코딩 에이전트에 대한 구성을 조정하려면 다음을 수행해야 합니다.

  1. 각 MCP 서버에 대해 tools 키를 추가하여 Copilot에서 사용할 수 있는 도구를 지정합니다.
  2. inputs를 구성한 경우, env를 직접 사용하도록 전환합니다.
  3. envFile을 구성한 경우, env를 직접 사용하도록 전환합니다.
  4. args 구성에서 inputs에 대한 모든 참조를 업데이트하여 대신 env의 환경 변수를 참조하도록 합니다.

VS Code의 MCP에 대한 자세한 내용은 VS Code 문서를 참조하세요.

Copilot 코딩 에이전트를 위한 Copilot 환경 설정

일부 MCP 서버에는 키 또는 비밀이 필요합니다. Copilot 코딩 에이전트에서 이러한 서버를 활용하기 위해 Copilot 환경에 비밀을 추가할 수 있습니다. 이렇게 하면 비밀이 제대로 인식되어 사용자가 구성한 해당 MCP 서버로 전달됩니다.

리포지토리의 Copilot 환경을 구성하려면 리포지토리 관리자가 되어야 합니다.

  1. GitHub에서 리포지토리의 기본 페이지로 이동합니다.

  2. 리포지토리 이름 아래에서 설정을 클릭합니다. "설정" 탭이 표시되지 않으면 드롭다운 메뉴를 선택한 다음 설정을 클릭합니다.

    탭을 보여 주는 리포지토리 헤더의 스크린샷. "설정" 탭이 진한 주황색 윤곽선으로 강조 표시됩니다.

  3. 왼쪽 사이드바에서 환경을 클릭합니다.

  4. 새 환경을 클릭합니다.

  5. 새 환경을 copilot으로 지정하고 Configure environment를 클릭합니다.

  6. "Environment secrets"에서 Add environment secret을 클릭합니다.

  7. 비밀 이름을 COPILOT_MCP_로 시작하도록 설정하고, 비밀 값을 입력한 다음, Add secret을 클릭합니다.

MCP 구성 유효성 검사

MCP 구성을 설정한 후, 올바르게 설정되었는지 테스트해야 합니다.

  1. 리포지토리에서 이슈를 만든 다음, 이를 Copilot에 할당합니다.
  2. 몇 초 후, Copilot은 이슈에 👀 반응을 남깁니다.
  3. 몇 초 후, Copilot에서 끌어오기 요청을 만듭니다. 이 요청은 이슈의 타임라인에 표시됩니다.
  4. 타임라인에서 만든 끌어오기 요청을 클릭하고 "Copilot started work" 타임라인 이벤트가 나타날 때까지 기다립니다.
  5. View session을 클릭하여 Copilot 코딩 에이전트 로그를 엽니다.
  6. 로그 뷰어의 오른쪽 위에 있는 줄임표 단추(...)를 클릭한 다음, 사이드바에서 Copilot 을 클릭합니다.
  7. Start MCP Servers 단계를 클릭하여 로그를 확장합니다.
  8. MCP 서버가 성공적으로 시작된 경우, 로그 아래쪽에 해당 도구가 나열됩니다.

MCP 서버에 GitHub Actions 실행기에서 기본적으로 설치되지 않은 종속성(예: uvpipx)이 필요하거나 특별한 설정 단계가 필요한 경우, copilot-setup-steps.yml Actions 워크플로 파일을 만들어 이를 설치해야 할 수 있습니다. 자세한 내용은 Copilot 코딩 에이전트의 개발 환경 사용자 지정을(를) 참조하세요.

기본 제공 GitHub MCP 서버 사용자 지정

GitHub MCP 서버는 기본적으로 사용하도록 설정되어 있으며 현재 리포지토리에 대한 읽기 전용 액세스 권한만 있는 특별히 범위가 지정된 토큰을 사용하여 GitHub에 연결합니다.

Copilot이 현재 리포지토리 외부의 데이터에 액세스할 수 있도록 허용하려면, personal access token에 더 폭넓은 액세스 권한을 부여할 수 있습니다.

  1. 적절한 권한을 가진 personal access token을 만듭니다. fine-grained personal access token을 사용하는 것이 좋습니다. 이를 통해 특정 리포지토리에 대한 토큰의 액세스 권한을 읽기 전용으로 제한할 수 있습니다. personal access tokens에 대한 자세한 내용은 개인용 액세스 토큰 관리을(를) 참조하세요.

  2. GitHub에서 리포지토리의 기본 페이지로 이동합니다.

  3. 리포지토리 이름 아래에서 설정을 클릭합니다. "설정" 탭이 표시되지 않으면 드롭다운 메뉴를 선택한 다음 설정을 클릭합니다.

    탭을 보여 주는 리포지토리 헤더의 스크린샷. "설정" 탭이 진한 주황색 윤곽선으로 강조 표시됩니다.

  4. 사이드바의 "Code & automation" 섹션에서 Copilot, 코딩 에이전트 를 차례로 클릭합니다.

  5. MCP configuration 섹션에서 구성을 추가합니다.

  6. 저장을 클릭합니다.

  7. 왼쪽 사이드바에서 환경을 클릭합니다.

  8. copilot 환경을 클릭합니다.

  9. "Environment secrets"에서 Add environment secret을 클릭합니다.

  10. 비밀 이름을 COPILOT_MCP_GITHUB_PERSONAL_ACCESS_TOKEN으로 지정하고 "Value" 필드에 personal access token을 입력한 다음, Add secret을 클릭합니다.

다른 환경에서 GitHub MCP 서버를 사용하는 방법에 대한 자세한 내용은 GitHub MCP 서버 사용을(를) 참조하세요.

다음 단계