MCP Go
고에서 MCP 서버를 최소 코드로 만드는 SDK
go get github.com/mark3labs/mcp-goMCP 규약을 고 언어로 구현한 SDK 입니다. 서버를 만들고 도구를 등록한 뒤 표준 입출력으로 띄우는 데까지 함수 몇 개면 끝나도록 높은 수준의 인터페이스를 제공합니다. 규약의 세부 처리와 서버 관리를 라이브러리가 맡고 개발자는 도구 구현에만 집중하게 하는 것이 목표입니다. 도구 인자에 필수 여부와 설명을 붙이는 방식이라 정의와 문서가 한 자리에 모입니다. 규약 자체가 계속 바뀌는 중이라 핵심 기능은 동작하되 일부 고급 기능은 아직 진행 중이라고 저장소가 직접 밝히고 있습니다.
판단
이럴 때 씁니다
- 고로 만든 서비스를 MCP 도구로 노출해야 할 때
- 단일 바이너리로 배포되는 MCP 서버가 필요할 때
- 규약 세부를 직접 구현하지 않고 도구 로직만 쓰고 싶을 때
이럴 땐 쓰지 마세요
- 파이썬이나 타입스크립트 생태계에 이미 붙어 있다면 공식 SDK 가 낫습니다
- 규약의 최신 고급 기능은 아직 진행 중입니다
- 고를 쓰지 않는 팀에는 학습 비용이 생깁니다
차별점
- 도구 정의와 설명, 필수 여부를 한 자리에 적는 고수준 인터페이스입니다.
- 고로 만들어 단일 바이너리로 배포됩니다.
- 규약 개정을 빠르게 따라갑니다.
워크플로
- 01패키지를 받습니다.
- 02서버 객체를 만들고 이름과 판을 정합니다.
- 03도구를 정의하면서 인자에 필수 여부와 설명을 붙입니다.
- 04도구 처리 함수를 등록합니다.
- 05표준 입출력으로 서버를 띄우고 클라이언트에 등록합니다.
주요 명령
| 명령 | 설명 |
|---|---|
go get github.com/mark3labs/mcp-go | SDK 를 받습니다. |
server.NewMCPServer(name, version) | 서버를 만듭니다. |
server.ServeStdio(s) | 표준 입출력으로 서버를 띄웁니다. |
함정
설치 전에 확인하세요
- 규약 자체가 계속 바뀌는 중입니다. 핵심은 동작하지만 일부 고급 기능은 진행 중이라고 저장소가 직접 밝히고 있습니다.
- v1.0.0 직전에 베타 판이 있었습니다. 오래된 예제는 v0 계열 API 를 쓰고 있으니 판을 확인해야 합니다.
- 인자를 꺼낼 때 타입 변환 오류를 그대로 도구 오류로 돌려주는 형태입니다. 처리하지 않으면 클라이언트에 원문 오류가 노출됩니다.
- SSE 전송에서 클라이언트가 죽는 문제가 최근에야 고쳐졌습니다. 그 전송을 쓴다면 최신 판을 써야 합니다.
비교
공식 SDK 는 파이썬과 타입스크립트가 먼저입니다. 고 생태계에서 서버를 만들려면 선택지가 좁고, 이 저장소가 사실상 표준 자리를 잡았습니다. 대신 규약 개정을 따라가는 과정에서 API 가 바뀌는 편이라 판 고정이 필요합니다.
최근 변경
2026-07-28 규약 판을 지원하도록 서버와 클라이언트가 함께 올라갔습니다. 정수 배열 변환 오류가 잘못된 항목 번호를 알려 주던 문제와 SSE 클라이언트가 죽던 문제도 고쳐졌습니다.