모델 컨텍스트 프로토콜(MCP)은 애플리케이션이 대규모 언어 모델(LLM)에 대한 컨텍스트와 기능을 제공할 수 있게 해주는 새로운 표준입니다. MCP의 주요 기능은 AI 에이전트가 작업을 수행하기 위해 활용할 수 있는 도구를 정의할 수 있는 능력입니다. Azure Functions MCP는 서버리스 클라우드 컴퓨팅과 AI 어시스턴트 기능 사이의 간극을 해소하여, 개발자들이 AI 에이전트가 접근할 수 있는 확장 가능한 도구를 구축할 수 있도록 합니다.
이 튜토리얼에서는 Azure Functions MCP가 무엇인지, 어떻게 설치하는지, MCP 서버를 시작하는 방법과 GitHub Copilot과 함께 사용하는 방법을 살펴보겠습니다. 이 가이드를 마치면 유용한 작업을 수행하기 위해 AI 에이전트가 접근할 수 있는 기능적인 MCP 서버가 설정될 것입니다.
프로 팁: MCP 서버를 구축할 때 API 엔드포인트를 철저히 테스트해야 합니다. API 테스트 및 개발을 위한 최고의 Postman 대안으로 Apidog을 강력히 추천합니다.

전통적인 API 도구와는 다르게 Apidog은 내장된 모의 서버, 자동화된 테스트 및 이벤트 기반 아키텍처를 사용할 때 특히 유용한 협업 작업 공간을 제공합니다.

실시간으로 SSE 스트림을 시각화할 수 있는 기능은 MCP 서버 구현을 디버깅하는 데 매우 유용합니다. 개발 워크플로우를 간소화하려면 apidog.com에서 가져가세요.
Azure Functions MCP 서버란 무엇인가요?
Azure Functions MCP 서버는 Microsoft의 서버리스 컴퓨팅 솔루션인 Azure Functions에 모델 컨텍스트 프로토콜(MCP) 지원을 추가하는 실험적인 미리보기 기능입니다. 이는 AI 에이전트가 MCP를 통해 사용할 수 있는 도구를 만들기 위해 특별히 설계된 트리거 및 바인딩을 도입합니다.

이 통합은 개발자가 Azure Functions와 함께 사용할 수 있는 서버 전송 이벤트(SSE)를 갖춘 클라우드 규모의 원격 MCP 서버를 구축할 수 있게 해줍니다. Azure Functions MCP는 Python, Node.js(TypeScript) 및 .NET(C#) 환경에서 이벤트 기반, 자동 확장 AI 지원 도구를 개발할 수 있는 원활한 방법을 제공합니다.
핵심 구성 요소는 MCP 도구 트리거로, 이는 AI 에이전트가 컨텍스트에 따라 탐색하고 호출할 수 있는 정의된 속성을 가진 도구로 작용할 수 있도록 기능을 설정합니다.
Azure Functions MCP 서버 설치하기
Azure Functions MCP를 설치하고 구성하는 단계를 살펴보겠습니다:
사전 요구 사항
- Visual Studio Code
- Azure Functions Core Tools
- .NET SDK 6.0 이상( C# 개발용)
- Node.js (TypeScript 개발용)
- Python 3.8 이상(파이썬 개발용)
- Azure CLI( Azure에 배포하기 위해)
설치 단계
Azure Functions 프로젝트 생성: 선호하는 언어로 새로운 Azure Functions 프로젝트를 생성합니다. Visual Studio Code에 대한 Azure Functions 문서를 참조하여 프로젝트를 생성할 수 있습니다.
MCP 확장 추가:
C#용:
dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Mcp --version 1.0.0-preview.1
Python 및 Node.js의 경우에는 host.json 파일에 실험적인 확장 번들을 추가해야 합니다:
"extensionBundle": {
"id": "Microsoft.Azure.Functions.ExtensionBundle.Experimental",
"version": "[4.*, 5.0.0)"
}
로컬 개발을 위해 Azurite 설치: MCP 확장이 Blob 저장소를 사용하므로 Azure 저장소 에뮬레이터인 Azurite를 로컬에서 실행해야 합니다:
명령 팔레트를 열기 (Shift + Ctrl + P)
"Azurite: 시작"을 선택
local.settings.json을 업데이트하여 사용하도록 설정합니다:
{
"IsEncrypted": false,
"Values": {
"AzureWebJobsStorage": "UseDevelopmentStorage=true",
"FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
}
}
Azure Functions MCP 서버 시작하기
MCP 확장을 설치했으므로, 이제 MCP 서버를 생성하고 실행해 보겠습니다:
MCP 도구 생성하기
C#으로 간단한 시간 유틸리티 도구를 만드는 예시입니다:
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.Mcp;
using System.Globalization;
using System.Text.Json;
namespace AzfuncMcp;
public class TimeUtil
{
[Function(nameof(GetCurrentTime))]
public string GetCurrentTime(
[McpToolTrigger("getcurrenttime", "현재 시간을 가져옵니다. 타임존이 지정되지 않으면 도구는 UTC 시간으로 반환합니다.")] ToolInvocationContext context,
[McpToolProperty("timezone", "string", "타임존의 이름입니다.")] string timezone = "UTC")
{
try
{
TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(timezone);
DateTime currentTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, timeZoneInfo);
var response = new {
timezone = timeZoneInfo.StandardName,
time = currentTime.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture),
displayName = timeZoneInfo.DisplayName
};
return JsonSerializer.Serialize(response);
}
catch (TimeZoneNotFoundException)
{
return $"타임존 '{timezone}'이(가) 발견되지 않았습니다.";
}
catch (InvalidTimeZoneException)
{
return $"타임존 '{timezone}'이(가) 유효하지 않습니다.";
}
catch
{
return "현재 시간을 가져올 수 없습니다.";
}
}
}
MCP를 위해 Program.cs 구성하기
MCP 도구를 등록하기 위해 Program.cs 파일을 업데이트합니다:
using Microsoft.Azure.Functions.Worker.Builder;
using Microsoft.Extensions.Hosting;
using AzfuncMcp;
var builder = FunctionsApplicationBuilder.CreateBuilder(args);
builder.ConfigureFunctionsWebApplication();
builder.EnableMcpToolMetadata();
builder.ConfigureMcpTool(nameof(TimeUtil.GetCurrentTime))
.WithProperty("timezone", "string", "타임존.");
builder.Build().Run();
서버 시작하기
MCP 서버를 로컬에서 시작하려면:
Azurite가 실행되고 있는지 확인합니다.
프로젝트 디렉토리에서 터미널을 엽니다.
다음 명령을 실행합니다:
func start
또는 Visual Studio Code의 디버깅 기능을 사용할 수 있습니다:
- "실행 및 디버그" 보기를 엽니다.
- "Attach to .NET Functions"를 선택합니다.
- F5를 누르거나 녹색 재생 버튼을 클릭합니다.
서버가 시작되면, MCP 서버에 액세스할 수 있습니다: http://localhost:7071/runtime/webhooks/mcp/sse
Azure Functions MCP 서버를 GitHub Copilot과 함께 사용하는 방법
MCP 서버가 실행되고 있으므로, 이제 GitHub Copilot과 연결해 보겠습니다:
GitHub Copilot을 사용하여 MCP 서버 구성하기
VS Code에 MCP 서버 추가하기:
- 명령 팔레트를 엽니다 (Shift + Ctrl + P)
- "MCP: 서버 추가"를 입력하고 선택합니다.

- "HTTP(서버 전송 이벤트)" 옵션을 선택합니다.

- URL을 입력합니다:
http://localhost:7071/runtime/webhooks/mcp/sse
- 서버의 이름을 지정합니다 (예: "my-azfunc-mcp-server")
구성 확인하기: VS Code 작업 영역의 settings.json 파일이 다음과 같이 업데이트되어야 합니다:
"mcp": {
"inputs": [],
"servers": {
"my-azfunc-mcp-server": {
"type": "sse",
"url": "<http://localhost:7071/runtime/webhooks/mcp/sse>"
}
}
}
필요한 경우 샘플 서버 제거하기: "mcp-server-time"과 같은 미리 구성된 샘플 서버가 있는 경우, 구현과의 충돌을 피하기 위해 제거하는 것이 좋습니다.
GitHub Copilot과 함께 MCP 서버 사용하기
- GitHub Copilot Chat 열기:
- 모드가 "에이전트" 모드로 설정되어 있는지 확인합니다 (MCP 기능에 필수적입니다)
- MCP 서버 활성화하기:
- MCP 설정 아이콘(렌치와 드라이버 아이콘)을 클릭합니다.
- 추가한 MCP 서버가 활성화되어 있는지 확인합니다.
- 도구와 상호작용하기:
- 채팅 창에 MCP 도구가 필요한 질문을 합니다.
- 예를 들어, 시간 유틸리티 도구와 함께 "지금 몇 시인가요?" 또는 "도쿄의 현재 시간은 얼마인가요?"라고 물어볼 수 있습니다.
- GitHub Copilot이 외부 MCP 도구 사용 권한을 요청할 것입니다.
- "계속"을 클릭하면 Copilot이 MCP 도구를 호출하고 결과를 표시합니다.
- 기능 작동 확인하기: 디버그 모드에서 실행 중일 경우, 함수에 중단점을 설정하고 GitHub Copilot이 도구를 호출할때 중단점을 확인할 수 있습니다.
Azure에 배포하기
운영 사용을 위해, MCP 서버를 Azure에 배포해야 합니다:
Azure Functions Core Tools 또는 Azure Developer CLI를 사용하여 함수 앱 배포하기:
func azure functionapp publish <your-function-app-name>
또는
azd up
인증으로 MCP 클라이언트 구성하기: 배포된 Azure Function에 액세스할 때 인증을 제공해야 합니다. settings.json을 업데이트합니다:
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "functions-mcp-extension-system-key",
"description": "Azure Functions MCP 확장 시스템 키",
"password": true
}
],
"servers": {
"my-azfunc-mcp-server": {
"type": "sse",
"url": "<your-app-name>.azurewebsites.net/runtime/webhooks/mcp/sse",
"headers": {
"x-functions-key": "${input:functions-mcp-extension-system-key}"
}
}
}
}
함수 키 가져오기:
- Azure Portal에서 함수 앱으로 이동합니다.
- 앱 키로 이동합니다.
mcp_extension
시스템 키를 복사합니다.
예제 사용 사례
Azure Functions MCP는 여러 시나리오에서 사용될 수 있습니다:
- 코드 스니펫 관리: 코드 스니펫을 저장하고 검색할 수 있는 도구 생성
- 데이터 검색: 데이터베이스나 API에 접근하여 특정 정보를 가져오기
- 계산: LLM으로 쉽게 처리할 수 없는 복잡한 계산 수행
- 외부 시스템 통합: 엔터프라이즈 시스템, API 또는 서비스에 연결
제한 사항 및 고려 사항
- 이것은 초기 실험 미리보기이므로 기능이 발전함에 따라 중대한 변경이 있을 수 있습니다.
- 작성 시점에서 Windows Azure Functions 호스팅은 MCP와 관련된 문제가 있을 수 있으며, Linux 호스팅을 권장합니다.
- MCP는 현재 도구를 지원하지만, 프롬프트와 같은 다른 기능은 시간이 지남에 따라 추가될 것입니다.
- 이것은 미리보기 기능이므로 아직 표준 Azure 지원 계획에 포함되지 않습니다.
결론
Azure Functions MCP는 AI 에이전트를 맞춤 도구로 확장할 수 있는 강력한 방법을 제공합니다. 이 가이드를 통해 Azure Functions MCP를 설치, 구성 및 GitHub Copilot과 함께 사용하는 방법을 배웠습니다.
MCP가 널리 채택됨에 따라 이러한 기술을 갖추면 대규모 언어 모델의 추론 기능과 사용자 지정 코드의 실행 기능을 결합하여 점점 더 정교한 AI 기반 애플리케이션을 구축할 수 있습니다.
MCP는 진화하는 표준이며 Azure Functions MCP는 미리보기 상태임을 기억하십시오. 공식 문서 및 커뮤니티 포럼에서 업데이트 및 모범 사례를 주의 깊게 살펴보세요.
리소스
- 공식 Azure Functions MCP 발표
- GitHub의 Azure Functions MCP 샘플
- MCP 서버 구현 샘플
- Azure Functions 문서
- GitHub Copilot 문서
이 가이드를 따라 Azure Functions MCP를 활용하여 GitHub Copilot 및 다른 MCP 호환 인터페이스를 통해 AI 에이전트가 사용할 수 있는 강력한 도구를 만들 수 있는 지식을 얻었습니다.