No description
  • Go 95%
  • Dockerfile 5%
Find a file
2025-11-24 09:53:39 +03:00
handlers first commit 2025-11-21 13:32:56 +03:00
http first commit 2025-11-21 13:32:56 +03:00
middleware first commit 2025-11-21 13:32:56 +03:00
models first commit 2025-11-21 13:32:56 +03:00
storage first commit 2025-11-21 13:32:56 +03:00
.dockerignore first commit 2025-11-21 13:32:56 +03:00
.gitignore first commit 2025-11-21 13:32:56 +03:00
.woodpecker.yml first commit 2025-11-21 13:32:56 +03:00
Dockerfile Fix Dockerfile 2025-11-24 09:14:58 +03:00
go.mod first commit 2025-11-21 13:32:56 +03:00
go.sum first commit 2025-11-21 13:32:56 +03:00
LICENSE first commit 2025-11-21 13:32:56 +03:00
main.go Добавление верии приложения 2025-11-24 09:53:39 +03:00
README.md first commit 2025-11-21 13:32:56 +03:00

MCP Registry Server

Go Version License: MIT

Сервер реестра MCP (Model Context Protocol), реализующий спецификацию MCP Server Registry API для хранения и управления метаданными MCP-серверов.

Особенности

  • Полная поддержка MCP Server Registry API specification
  • Хранение данных в файловой системе с структурированной организацией
  • Аутентификация Bearer Token для операций публикации/удаления
  • Пагинация и фильтрация списка серверов
  • Поддержка версионирования MCP-серверов
  • Валидация JSON схемы MCP-серверов

Быстрый старт

Требования

  • Go 1.25 или выше
  • Переменные окружения (опционально)

Установка

git clone https://git.ymnuktech.ru/ymnuk/mcp-registry.git
cd mcp-registry
go mod tidy
go build -o mcp-registry .

Запуск

# Базовый запуск
./mcp-registry

# С настройкой переменных окружения
DATA_DIR="./data" \
PORT="8080" \
REGISTRY_AUTH_TOKEN="your-secret-token" \
./mcp-registry

Docker

docker build -t gti.ymnuktech.ru/ymnuk/mcp-registry .
docker run -p 8080:8080 \
  -e DATA_DIR=/data \
  -e REGISTRY_AUTH_TOKEN="your-secret-token" \
  -v $(pwd)/data:/data \
  mcp-registry

Конфигурация

Переменные окружения

Переменная По умолчанию Описание
DATA_DIR ./data Директория для хранения данных MCP-серверов
PORT 8080 Порт HTTP сервера
REGISTRY_AUTH_TOKEN - Токен для аутентификации операций публикации/удаления

Структура хранения данных

Сервер хранит данные в следующей структуре:

data/
├── com.example%2Fweather/
│   ├── 1.0.0/
│   │   └── server.json
│   └── 1.1.0/
│       └── server.json
└── io.modelcontextprotocol%2Ffilesystem/
    └── 2.0.0/
        └── server.json

API Endpoints

Получение серверов

# Список всех серверов
curl http://localhost:8080/v0/servers

# Поиск серверов
curl "http://localhost:8080/v0/servers?search=weather"

# Пагинация
curl "http://localhost:8080/v0/servers?limit=10&cursor=next-page-token"

# Список версий конкретного сервера
curl http://localhost:8080/v0/servers/com.example%2Fweather/versions

# Получение конкретной версии
curl http://localhost:8080/v0/servers/com.example%2Fweather/versions/1.0.0

# Получение последней версии
curl http://localhost:8080/v0/servers/com.example%2Fweather/versions/latest

Публикация серверов

curl -X POST http://localhost:8080/v0/publish \
  -H "Authorization: Bearer your-secret-token" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "com.example/weather",
    "description": "Weather data MCP server",
    "version": "1.0.0",
    "title": "Weather API",
    "repository": {
      "url": "https://github.com/example/weather-server",
      "source": "github"
    },
    "packages": [
      {
        "registryType": "npm",
        "identifier": "@example/weather-server",
        "version": "1.0.0",
        "transport": {
          "type": "stdio"
        }
      }
    ]
  }'

Удаление версий

curl -X DELETE http://localhost:8080/v0/servers/com.example%2Fweather/versions/1.0.0 \
  -H "Authorization: Bearer your-secret-token"

Пример MCP-сервера

{
  "name": "com.example/weather",
  "description": "MCP server providing weather data and forecasts",
  "title": "Weather API",
  "version": "1.0.0",
  "repository": {
    "url": "https://github.com/example/weather-server",
    "source": "github",
    "id": "123456789"
  },
  "websiteUrl": "https://example.com/weather-server",
  "packages": [
    {
      "registryType": "npm",
      "registryBaseUrl": "https://registry.npmjs.org",
      "identifier": "@example/weather-server",
      "version": "1.0.0",
      "transport": {
        "type": "stdio"
      }
    }
  ],
  "icons": [
    {
      "src": "https://example.com/icon.png",
      "mimeType": "image/png",
      "sizes": ["48x48", "96x96"]
    }
  ],
  "_meta": {
    "io.modelcontextprotocol.registry/publisher-provided": {
      "tool": "publisher-cli",
      "version": "1.0.0",
      "buildInfo": {
        "commit": "abc123def456",
        "timestamp": "2024-01-15T10:30:00Z"
      }
    }
  }
}

Лицензия

Этот проект распространяется под лицензией MIT. Подробнее см. в файле LICENSE.