MCP Go

고에서 MCP 서버를 최소 코드로 만드는 SDK

go get github.com/mark3labs/mcp-go

MCP 규약을 고 언어로 구현한 SDK 입니다. 서버를 만들고 도구를 등록한 뒤 표준 입출력으로 띄우는 데까지 함수 몇 개면 끝나도록 높은 수준의 인터페이스를 제공합니다. 규약의 세부 처리와 서버 관리를 라이브러리가 맡고 개발자는 도구 구현에만 집중하게 하는 것이 목표입니다. 도구 인자에 필수 여부와 설명을 붙이는 방식이라 정의와 문서가 한 자리에 모입니다. 규약 자체가 계속 바뀌는 중이라 핵심 기능은 동작하되 일부 고급 기능은 아직 진행 중이라고 저장소가 직접 밝히고 있습니다.

판단

이럴 때 씁니다

  • 고로 만든 서비스를 MCP 도구로 노출해야 할 때
  • 단일 바이너리로 배포되는 MCP 서버가 필요할 때
  • 규약 세부를 직접 구현하지 않고 도구 로직만 쓰고 싶을 때

이럴 땐 쓰지 마세요

  • 파이썬이나 타입스크립트 생태계에 이미 붙어 있다면 공식 SDK 가 낫습니다
  • 규약의 최신 고급 기능은 아직 진행 중입니다
  • 고를 쓰지 않는 팀에는 학습 비용이 생깁니다

차별점

  • 도구 정의와 설명, 필수 여부를 한 자리에 적는 고수준 인터페이스입니다.
  • 고로 만들어 단일 바이너리로 배포됩니다.
  • 규약 개정을 빠르게 따라갑니다.

워크플로

  1. 01패키지를 받습니다.
  2. 02서버 객체를 만들고 이름과 판을 정합니다.
  3. 03도구를 정의하면서 인자에 필수 여부와 설명을 붙입니다.
  4. 04도구 처리 함수를 등록합니다.
  5. 05표준 입출력으로 서버를 띄우고 클라이언트에 등록합니다.

주요 명령

명령설명
go get github.com/mark3labs/mcp-goSDK 를 받습니다.
server.NewMCPServer(name, version)서버를 만듭니다.
server.ServeStdio(s)표준 입출력으로 서버를 띄웁니다.

함정

설치 전에 확인하세요

  • 규약 자체가 계속 바뀌는 중입니다. 핵심은 동작하지만 일부 고급 기능은 진행 중이라고 저장소가 직접 밝히고 있습니다.
  • v1.0.0 직전에 베타 판이 있었습니다. 오래된 예제는 v0 계열 API 를 쓰고 있으니 판을 확인해야 합니다.
  • 인자를 꺼낼 때 타입 변환 오류를 그대로 도구 오류로 돌려주는 형태입니다. 처리하지 않으면 클라이언트에 원문 오류가 노출됩니다.
  • SSE 전송에서 클라이언트가 죽는 문제가 최근에야 고쳐졌습니다. 그 전송을 쓴다면 최신 판을 써야 합니다.

비교

공식 SDK 는 파이썬과 타입스크립트가 먼저입니다. 고 생태계에서 서버를 만들려면 선택지가 좁고, 이 저장소가 사실상 표준 자리를 잡았습니다. 대신 규약 개정을 따라가는 과정에서 API 가 바뀌는 편이라 판 고정이 필요합니다.

최근 변경

2026-07-28 규약 판을 지원하도록 서버와 클라이언트가 함께 올라갔습니다. 정수 배열 변환 오류가 잘못된 항목 번호를 알려 주던 문제와 SSE 클라이언트가 죽던 문제도 고쳐졌습니다.