-
.NET용 공식 MCP SDK와 LINQPad로 만들어보는 C# MCP 서버LLM AI 2025. 4. 18. 15:00
사진: Unsplash의 Andrea De Santis 들어가며
2025년 4월 7일 제임스 몬테마뇨가 .NET 블로그에 올린 글에서 통해 Model Context Protocol(MCP) C# SDK가 정식으로 개발 및 공개되었음을 소식으로 전했습니다. MCP는 LLM(대화형 AI)과 애플리케이션 사이를 표준화된 메시지로 연결하는 프로토콜입니다. 특히 MCP는 표준 입·출력(STDIO)만으로도 서버‑클라이언트 통신이 가능해, 별도의 네트워킹 지식 없이도 AI 도구를 손쉽게 노출할 수 있다는 점이 매력적입니다.
왜 STDIO 방식을 사용하는가?
- 개발자 친화성: 별도의 네트워크 프로그래밍 지식이 없어도 손쉽게 MCP 기능을 개발하고 붙여볼 수 있어 손이 덜 갑니다.
- 플랫폼 독립성: Docker 컨테이너, CI 파이프라인, 심지어 GitHub Codespaces처럼 방화벽 안쪽에서도 그대로 동작합니다.
- 성능 부담 최소: HTTP 스택을 거치지 않으므로 오버헤드가 작습니다.
GPTs 기반 Web API 플러그인을 만들다 보면 인증, CORS, 배포 파이프라인 등 부수적인 작업, 그리고 별도 서버 배포 과정이 반드시 필요한데, STDIO 방식 MCP 플러그인은 이 과정을 건너뛸 수 있게 해줍니다.
LINQPad로 5분 만에 MCP 서버 만들기
1. LINQPad 스크립트 작성
<Query Kind="Statements"> <NuGetReference>Microsoft.Extensions.Hosting</NuGetReference> <NuGetReference Prerelease="true">ModelContextProtocol</NuGetReference> <Namespace>Microsoft.Extensions.DependencyInjection</Namespace> <Namespace>Microsoft.Extensions.Hosting</Namespace> <Namespace>ModelContextProtocol.Server</Namespace> <Namespace>System.ComponentModel</Namespace> </Query> var builder = Host.CreateEmptyApplicationBuilder(); builder.Services .AddMcpServer() .WithStdioServerTransport() // 핵심: STDIO 바인딩 .WithToolsFromAssembly(); // 현재 어셈블리의 [McpServerTool] 전부 탐색 await builder.Build().RunAsync(); [McpServerToolType] public static class EchoTool { [McpServerTool, Description("Echoes the message back to the client.")] public static string Echo(string message) => $"Hello from C#: {message}"; [McpServerTool, Description("Echoes in reverse the message sent by the client.")] public static string ReverseEcho(string message) => new string(message.Reverse().ToArray()); }
TIP WithToolsFromAssembly()는 리플렉션으로 [McpServerTool] 특성을 탐색하므로 핫 리로드 감각으로 툴을 추가‑삭제할 수 있습니다.
2. VS Code mcp.json 설정
{ "inputs": [], "servers": { "MyFirstMCP": { "type": "stdio", "command": "C:/Program Files/LINQPad8/LPRun8.exe", "args": [ "D:/Users/rkttu/Documents/LINQPad Queries/mcp-test.linq" ] } } }
- command: LINQPad 런타임(LPRun8.exe).
- args: 스크립트 경로.
- type=stdio: Copilot과 STDIO 파이프를 연결한다는 선언.
3. VS Code Insiders에서 확인
- Ctrl+I (에이전트 모드) → Copilot 창 열기
- 우측 도구(hammer 아이콘) 클릭 3. Echo, ReverseEcho가 목록에 뜨면 성공!
실행 예시
LINQPad LPRUN과 VSCode를 이용해서 만든 MCP 서버 시험해보기 기존 GPTs Web API 플러그인 대비 장점
항목GPTs Web APIMCP STDIO
초기 설정 ASP.NET Core 템플릿, 엔드포인트, OpenAPI 정의 콘솔 프로세스 하나, mcp.json 인증·보안 JWT/OAuth, CORS 고민 로컬 프로세스이므로 생략 가능 배포 Azure App Service, AWS Elastic Beanstalk 등 zip 배포 or Docker RUN 실시간 개발 변경 후 재배포 필요 Ctrl+S → 즉시 반영 다중 언어 지원 HTTP 스펙 준수하면 언어 무관 표준 입출력 구현만 있으면 언어 무관 macOS에서도 가능할까?
LINQPad 공식 블로그에 따르면 곧 macOS 버전 LPRun 커맨드라인이 추가될 예정입니다. 따라서 동일한 스크립트가 Windows‑macOS‑Linux 어디서든 동작하게 됩니다.
마치며
표준 입출력이라는 가장 단순한 인터페이스 덕분에 MCP 서버는 테스트 자동화, 로컬 LLM 연동, 또는 GitHub Actions 싱글 스텝에도 유연하게 삽입할 수 있습니다. 이미 .NET 생태계에는 Microsoft.Extensions.AI 등 LLM‑친화 패키지가 빠르게 확장되고 있으니, 자신의 도메인 로직을 "툴" 형태로 껍질 씌워 보는 것만으로 혁신적인 워크플로 개선이 가능합니다.
Copilot Inside 시대, 표준 입출력 + C# 조합은 의외로 강력한 동반자가 될 것입니다. 지금 바로 LINQPad 열고 dotnet add package ModelContextProtocol --prerelease 타이핑해 보세요. 😀