/ Каталог / Песочница / mcp-go (SDK)
● Сообщество mark3labs ⚡ Сразу

mcp-go (SDK)

автор mark3labs · mark3labs/mcp-go

Go SDK для построения MCP-серверов — минимум boilerplate, типобезопасные определения инструментов, используется половиной production-grade Go MCP в мире.

mcp-go — де-факто Go SDK для Model Context Protocol. Берёт на себя транспорт (stdio + SSE + streamable HTTP), JSON-RPC фрейминг, регистрацию инструментов/ресурсов/промптов и валидацию запросов, чтобы вы могли сосредоточиться на логике MCP-сервера. Используется в GitHub mcp-server, dbhub, k8s-mcp и многих других.

Зачем использовать

Ключевые функции

Живое демо

Как выглядит на практике

mcp-go-mark3labs.replay ▶ готово
0/0

Установка

Выберите клиент

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "mcp-go-mark3labs": {
      "command": "go",
      "args": [
        "install",
        "github.com/mark3labs/mcp-go/cmd/example@latest"
      ],
      "_inferred": true
    }
  }
}

Откройте Claude Desktop → Settings → Developer → Edit Config. Перезапустите после сохранения.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "mcp-go-mark3labs": {
      "command": "go",
      "args": [
        "install",
        "github.com/mark3labs/mcp-go/cmd/example@latest"
      ],
      "_inferred": true
    }
  }
}

Cursor использует ту же схему mcpServers, что и Claude Desktop. Конфиг проекта приоритетнее глобального.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "mcp-go-mark3labs": {
      "command": "go",
      "args": [
        "install",
        "github.com/mark3labs/mcp-go/cmd/example@latest"
      ],
      "_inferred": true
    }
  }
}

Щёлкните значок MCP Servers на боковой панели Cline, затем "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "mcp-go-mark3labs": {
      "command": "go",
      "args": [
        "install",
        "github.com/mark3labs/mcp-go/cmd/example@latest"
      ],
      "_inferred": true
    }
  }
}

Тот же формат, что и Claude Desktop. Перезапустите Windsurf для применения.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "mcp-go-mark3labs",
      "command": "go",
      "args": [
        "install",
        "github.com/mark3labs/mcp-go/cmd/example@latest"
      ]
    }
  ]
}

Continue использует массив объектов серверов, а не map.

~/.config/zed/settings.json
{
  "context_servers": {
    "mcp-go-mark3labs": {
      "command": {
        "path": "go",
        "args": [
          "install",
          "github.com/mark3labs/mcp-go/cmd/example@latest"
        ]
      }
    }
  }
}

Добавьте в context_servers. Zed перезагружается автоматически.

claude mcp add mcp-go-mark3labs -- go install github.com/mark3labs/mcp-go/cmd/example@latest

Однострочная команда. Проверить: claude mcp list. Удалить: claude mcp remove.

Сценарии использования

Реальные сценарии: mcp-go (SDK)

Создайте внутренний MCP-сервер для вашего корпоративного API менее чем в 100 строк кода

👤 Go-разработчики в компаниях, желающих предоставить внутренние инструменты Claude ⏱ ~45 min intermediate

Когда использовать: У вас есть Go-сервис и вы хотите, чтобы Claude мог его вызывать без написания OpenAPI-схем.

Предварительные требования
  • Go 1.21+ — Установить через brew или asdf
Поток
  1. Скаффолдинг сервера
    Create a new Go project. Add mcp-go and define one tool: search_orders(customer_id) that calls our internal /v1/orders API.✓ Скопировано
    → main.go ~50 строк, чистая сборка
  2. Тестирование с mcp-inspector
    Run the server in stdio mode. Open mcp-inspector and verify the tool shows up.✓ Скопировано
    → Инструмент вызывается из инспектора
  3. Регистрация в Claude
    Add the binary to claude_desktop_config.json. Test from Claude with a real customer ID.✓ Скопировано
    → Живой ответ от API

Итог: Внутренний Go API предоставлен Claude через типобезопасные MCP-инструменты.

Подводные камни
  • Долгоживущие вызовы блокируют stdio — Для вызовов >5s используйте транспорт SSE или streamable HTTP
Сочетать с: mcp-python-sdk

Перенесите существующий REST API в MCP без отказа от REST-клиентов

👤 Backend-команды, внедряющие MCP без принудительной миграции ⏱ ~60 min intermediate

Когда использовать: Вы хотите, чтобы REST и MCP сосуществовали на одних обработчиках.

Поток
  1. Извлечение логики обработчика
    Take the existing /api/v1/search handler. Extract the core function so both gin and mcp-go can call it.✓ Скопировано
    → Обработчик разделён — http handler делегирует чистой функции
  2. Оборачивание в MCP-инструмент
    Register the pure func as an mcp-go tool. Map URL params to tool inputs.✓ Скопировано
    → Та же логика, две поверхности
  3. Один бинарник, два транспорта
    Build one binary that runs gin on :8080 and the MCP server over stdio when invoked with --mcp.✓ Скопировано
    → Мультирежимный бинарник

Итог: REST и MCP обслуживаются из одного Go-бинарника с общим ядром.

Хостите MCP-сервер в интернете через SSE

👤 Разработчики, публикующие публичные MCP (например, git-mcp.io) ⏱ ~90 min advanced

Когда использовать: Вы хотите, чтобы пользователи добавляли ваш MCP без локальной установки чего-либо.

Предварительные требования
  • Домен и TLS — Caddy/nginx с Let's Encrypt
Поток
  1. Переключение на SSE-транспорт
    Convert the stdio server to SSE. Add CORS for the relevant origins.✓ Скопировано
    → Сервер принимает /sse-соединения
  2. Добавление аутентификации per-user
    Validate Bearer token on each connection; reject unknown.✓ Скопировано
    → 401 при неверных токенах, ok при корректных
  3. Деплой и тест
    Deploy to fly.io. Add the URL to Claude via mcp-remote.✓ Скопировано
    → Инструмент вызывается из Claude, указывающего на удалённый URL

Итог: MCP-сервер в интернете с аутентификацией, готовый для пользователей.

Подводные камни
  • SSE за балансировщиком нагрузки обрывает долгие соединения — Настройте idle-таймауты >5min на LB

Комбинации

Сочетайте с другими MCP — эффект x10

mcp-go-mark3labs + mcp-python-sdk

Один проект, два SDK для разных поверхностей

Use mcp-go for the perf-critical core; mcp-python-sdk for the data-science adjacency.✓ Скопировано
mcp-go-mark3labs + mcp-registry

Публикация собственного MCP в официальный реестр

Once your mcp-go server works, submit it to the modelcontextprotocol/registry.✓ Скопировано

Инструменты

Что предоставляет этот MCP

ИнструментВходные данныеКогда вызыватьСтоимость
AddTool name, description, handler При старте сервера для каждого инструмента 0
AddResource uri, name, handler Предоставление читаемого ресурса 0
AddPrompt name, description, handler Предоставление переиспользуемых промптов 0
ServeStdio () Локальный stdio-режим (наиболее распространённый) 0
ServeSSE addr, opts Сетевой/удалённый режим 0

Стоимость и лимиты

Во что обходится

Квота API
Не применимо — библиотека
Токенов на вызов
Не применимо
Деньги
Бесплатно (MIT)
Совет
Пинните конкретную минорную версию; API стабилизировался в 2025, но небольшие изменения бывают

Безопасность

Права, секреты, радиус поражения

Хранение учётных данных: Что нужно вашим обработчикам инструментов
Исходящий трафик: Контролируется вашими обработчиками

Устранение неполадок

Частые ошибки и исправления

Tool not visible to Claude

Проверьте согласование возможностей; инструменты должны быть зарегистрированы до вызова ServeStdio

Проверить: Используйте mcp-inspector для подтверждения списка инструментов
stdio messages malformed

Не выводите в stdout из обработчиков — это JSON-RPC канал. Используйте stderr для логов.

SSE drops on idle

Добавьте периодические keepalive; настройте таймауты прокси

Альтернативы

mcp-go (SDK) в сравнении

АльтернативаКогда использоватьКомпромисс
mcp-python-sdk (official)Вы пишете на PythonДругой язык; оба первоклассные
TypeScript SDK (official)Экосистема Node/Bun подходит лучшеJS-первый; меньше запаса по производительности, чем у Go

Ещё

Ресурсы

📖 Читать официальный README на GitHub

🐙 Открытые задачи

🔍 Все 400+ MCP-серверов и Skills