Skip to main content

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

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

참고 항목

Copilot 코딩 에이전트 is in 공개 미리 보기 and subject to change.

Copilot 코딩 에이전트에 대한 자세한 내용은 Copilot에 ��업 할당 정보을(를) 참조하세요.

The Model Context Protocol (MCP) is an open standard that defines how applications share context with large language models (LLMs). MCP provides a standardized way to connect AI models to different data sources and tools, enabling them to work together more effectively.

You can use MCP to extend the capabilities of Copilot 코딩 에이전트 by connecting it to other tools and services.

에이전트는 로컬 MCP 서버에서 제공하는 도구를 사용할 수 있습니다. 예를 들어, Playwright MCP 서버는 웹 페이지와 상호 작용하고 요청된 작업을 실행할 때 추가 컨텍스트를 끌어오는 도구를 제공합니다.

MCP에 대한 자세한 내용은 공식 MCP 설명서를 참조하세요. 현재 사용할 수 있는 MCP 서버 중 일부에 대한 자세한 내용은 MCP 서버 리포지토리를 참조하세요.

참고 항목

  • Copilot 코딩 에이전트는 MCP 서버에서 제공하는 도구만 지원합니다. 리소스 또는 프롬프트를 지원하지 않습니다.
  • Copilot 코딩 에이전트는 현재 로컬 MCP 서버만 지원합니다. 전송 유형에 대한 자세한 내용은 공식 MCP 문서를 참조하세요.

MCP 서버로 안전하게 유지

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

서버를 읽기 전용 도구로 제한하는 것이 좋습니다. tools 구성 옵션을 사용하면 알려진 안전한 도구만 Copilot에 노출할 수 있습니다.

리포지토리에서 MCP 서버 설정 정보

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

MCP 서버가 리포지토리 내에서 사용하도록 구성되면, 구성에 지정된 도구를 할당된 각 작업의 Copilot 코딩 에이전트에서 사용할 수 있습니다.

JSON MCP 구성 만들기

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

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

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

  • command(string): MCP 서버를 시작하기 위해 실행할 명령입니다.
  • args(string[]): command에 전달할 인수입니다.
  • tools(string[]): MCP 서버에서 사용할 도구입니다. 도구 목록은 서버 문서나 코드에서 찾을 수 있습니다. 특정 도구를 허용 목록에 추가하는 것이 좋지만 배열에 *를 포함하여 모든 도구를 사용하도록 설정할 수도 있습니다.
  • type(string): 선택적 필드입니다. Copilot 코딩 에이전트는 "local"만 허용합니다.
  • env(object): 서버에 전달할 환경 변수입니다. 이 개체는 MCP 서버에 노출되어야 하는 환경 변수의 이름을 다음 중 하나에 매핑해야 합니다.
    • 구성된 GitHub Actions 비밀의 이름(COPILOT_MCP_로 시작)입니다.
    • 문자열 값입니다.

구성 예

예: Playwright

Playwright MCP 서버는 Copilot이 인터넷을 탐색할 수 있는 도구를 제공합니다.

JSON
{
  "mcpServers": {
    "playwright": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "--init", "mcp/playwright"],
      "tools": ["*"]
    }
  }
}

예: 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": {
      "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_AUTH_TOKEN": "COPILOT_MCP_SENTRY_AUTH_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": {
      "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@a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0
            with:
              client-id: $
              tenant-id: $
              subscription-id: $
    

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

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

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

    JSON
    {
      "mcpServers": {
        "Azure MCP Server": {
          "command": "npx",
          "args": [
            "-y",
            "@azure/mcp@latest",
            "server",
            "start"
          ]
        }
      }
    }
    

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 문서를 참조하세요.

리포지토리에 구성 추가

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

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

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

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

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

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

  5. 저장을 클릭합니다.

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

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

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 워크플로 파일을 만들어 이를 설치해야 할 수 있습니다. 자세한 내용은 Customizing the development environment for Copilot coding agent을(를) 참조하세요.

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

GitHub MCP 서버는 기본적으로 활성화되어 있으며, Copilot은 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, 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을 클릭합니다.

모범 사례

  • 타사 MCP 서버를 활성화하면 에이전트의 성능과 출력 품질에 영향을 미칠 수 있습니다. 타사 MCP 서버를 철저히 검토하고, 조직의 요구 사항을 충족하는지 확인합니다.

  • 기본적으로 Copilot 코딩 에이전트는 MCP 서버 도구를 작성할 수 없습니다. 그러나 일부 MCP 서버에는 이러한 도구가 포함되어 있을 수 있습니다. 사용하려는 MCP 서버에서 사용할 수 있는 도구를 검토해야 합니다. MCP 구성의 tools 필드를 필요한 도구만 사용하여 업데이트합니다.

  • 구성을 저장하기 전에 MCP 서버를 신중하게 검토하여 올바른 서버가 설정되었는지 확인하세요.

추가 참고 자료