OpenDart MCP 서버 Official MCP Registry에 퍼블리싱하기
저자: 김찬우 · 작성일: 2026-02-11 00:00:00 · 분야: mcp
들어가며
기존에 블로그에서 다루었던 'OpenDart MCP 서버'를 'Official MCP Registry'에 등록을 끝마치게 되었습니다.
이 글에서는 MCP 서버를 오피셜 레지스트리에 등록하는 과정, 중간에 발생했던 문제와 해결법을 알려 드리고자 합니다.
Official MCP Registry란?
Official MCP Registry는 앤트로픽(Anthropic)이 구축한 공개 Model Context Protocol(모델 컨텍스트 프로토콜, MCP) 서버들의 중앙 저장소이자 디렉토리입니다. 쉽게 말하자면, AI 모델(Claude, GPT, Gemini 등)이 외부 데이터나 도구(API, DB, 파일 시스템 등)와 연동할 수 있도록 해주는 'MCP 서버'들을 한곳에 모아놓은 앱스토어 같은 역할을 합니다.
사유존에서는 개발한 'OpenDart MCP 서버'의 발견 가능성과 신뢰성 확보 등을 위해 오피셜 레지스트리에 등록 작업을 진행하였습니다.
Official MCP Registry 퍼블리싱 과정
1. MCP 서버 PyPI 패키지 게시
MCP 레지스트리는 메타데이터만 호스팅하고 아티팩트는 호스팅하지 않습니다. 그래서 서버를 MCP 레지스트리에 게시하기 전에 먼저 npm(node.js), pypi(python)에 패키지를 게시해야 합니다.
Github Actions Workflow를 이용하여 자동화하여 게시를 진행하였습니다. 과정은 다음과 같습니다.
- Repository Secret을 이용하여 발급받은 PyPI API 토큰을 Github 저장소와 연결하였습니다.
- pyproject.toml, publish-pypi.yml(Github Actions Workflow) 두 개의 Configuration 파일을 작성하였습니다.
name: Publish Python Packages to PyPI
on:
push:
tags:
- 'v*'
jobs:
build-and-publish:
name: Build and publish package from tag
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install build tools
run: |
python -m pip install --upgrade pip
pip install build
- name: Build package
run: python -m build
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
password: ${{ secrets.PYPI_API_TOKEN }}
- 다음과 같은 명령어로 Github 저장소에 푸시하면 Github Actions에서 자동으로 PyPI 패키지를 게시해줍니다.
git add .
git commit -m "commit message"
git tag [library version] (ex. v0.0.1)
git push origin main --tag
이 과정을 거치면 Github Actions에서 PyPI 패키지를 등록하는 워크플로우를 자동으로 실행합니다.
2. mcp-publisher 설치
미리 빌드된 바이너리 또는 Homebrew를 사용하여 mcp-publisher CLI 도구를 설치해야합니다.
이번 작업에서는 Homebrew를 이용하여 mcp-publisher를 설치했습니다.
brew install mcp-publisher
다음 명령어를 실행하여 mcp-publisher가 올바르게 설치되었는지 확인할 수 있습니다.
mcp-publisher --help
3. server.json작성
다음 명령어를 사용하면 프로젝트의 일부 정보를 포함하는 server.json 템플릿 파일을 생성할 수 있습니다.
mcp-publisher init
생성된 파일을 열면 server.json이 다음과 같은 내용으로 표시됩니다. (공식 문서에서 가져왔습니다.)
{
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"name": "io.github.my-username/weather",
"description": "An MCP server for weather information.",
"repository": {
"url": "https://github.com/my-username/mcp-weather-server",
"source": "github"
},
"version": "1.0.0",
"packages": [
{
"registryType": "npm",
"identifier": "@my-username/mcp-weather-server",
"version": "1.0.0",
"transport": {
"type": "stdio"
},
"environmentVariables": [
{
"description": "Your API key for the service",
"isRequired": true,
"format": "string",
"isSecret": true,
"name": "YOUR_API_KEY"
}
]
}
]
}
server.json은 프로젝트의 메타데이터를 MCP 레지스트리에 알리는 역할을 하기 때문에 정확하게 작성하는 것이 중요합니다. name은 GitHub 사용자명 기반의 고유 식별자로, packages에는 실제 PyPI에 게시한 패키지 정보와 환경변수(API 키 등)를 기입합니다.
4. server.json 검증
작성한 server.json에 오류가 없는지 퍼블리시 전에 검증할 수 있습니다. 다음 명령어를 실행하면 스키마에 맞게 올바르게 작성되었는지 확인해줍니다.
mcp-publisher validate
검증에 성공하면 다음과 같은 출력을 확인할 수 있습니다.
Validating server.json...
✓ Validation passed
만약 필수 필드 누락이나 형식 오류가 있을 경우 에러 메시지가 표시되므로, 해당 부분을 수정한 뒤 다시 검증을 진행하면 됩니다.
5. MCP Registry 인증
MCP 레지스트리에 퍼블리시하기 위해서는 먼저 인증 과정을 거쳐야 합니다. GitHub 기반 인증을 사용하며, 다음 명령어를 실행하여 인증을 시작할 수 있습니다.
mcp-publisher login github
명령어를 실행하면 다음과 같은 출력이 표시됩니다.
Logging in with github...
To authenticate, please:
1. Go to: https://github.com/login/device
2. Enter code: ABCD-1234
3. Authorize this application
Waiting for authorization...
출력에 표시된 링크(https://github.com/login/device)에 접속하여, 터미널에 표시된 인증 코드(예: ABCD-1234)를 입력하고 애플리케이션 권한을 승인합니다. 인증이 완료되면 터미널에서 다음과 같은 메시지를 확인할 수 있습니다.
Successfully authenticated!
✓ Successfully logged in
6. MCP Registry에 퍼블리시
모든 준비가 끝났으면 마지막으로 mcp-publisher publish 명령어를 실행하여 MCP 레지스트리에 서버를 퍼블리시합니다.
mcp-publisher publish
퍼블리시에 성공하면 다음과 같은 출력이 표시됩니다.
Publishing to https://registry.modelcontextprotocol.io...
✓ Successfully published
✓ Server io.github.my-username/weather version 1.0.1
정상적으로 퍼블리시가 완료되면 Official MCP Registry에서 등록된 서버를 확인할 수 있습니다.
마치며
이상으로 OpenDart MCP 서버를 Official MCP Registry에 퍼블리싱하는 전체 과정을 정리해보았습니다. PyPI 패키지 게시부터 mcp-publisher를 이용한 인증 및 퍼블리시까지, 전체 흐름을 한 번 경험하고 나면 이후 버전 업데이트 시에는 훨씬 수월하게 진행할 수 있습니다.
MCP 생태계가 점점 확장되고 있는 만큼, 직접 만든 MCP 서버를 오피셜 레지스트리에 등록하여 더 많은 사용자에게 공유해보시기 바랍니다.