
MCP 서버를 구축하고 배포하는 방법
요약
TypeScript와 MCP SDK를 사용하여 MCP 서버를 구축하고 npm, Anthropic Registry 등에 배포하는 실전 가이드를 제공합니다. REST API와 달리 AI 어시스턴트가 직접 도구를 발견하고 호출할 수 있는 MCP의 배포적 가치를 강조합니다.
핵심 포인트
- MCP는 AI 어시스턴트가 직접 호출하는 도구를 위한 배포 프리미티브임
- TypeScript와 @modelcontextprotocol/sdk를 활용한 서버 구현 방법
- npm, Anthropic Registry, Glama를 통한 배포 채널 활용법
- X(Twitter)의 공개 JSON 엔드포인트를 활용한 데이터 추출 팁
@modelcontextprotocol/sdk를 사용하여 약 600줄의 TypeScript로 MCP 서버를 구축하고, X syndication 엔드포인트 트릭을 활용하며, AI 도구의 발견 가능성을 극대화하기 위해 npm, Anthropic Registry, Glama에 배포하는 방법을 알아봅니다.
변화된 점 — 배포 채널로서의 MCP 서버
한 개발자가 약 600줄의 TypeScript 코드로 14개의 X (Twitter) 크리에이터 도구를 MCP 서버로 구현했습니다. 배포 2주 만에 npm 다운로드 수가 500회를 넘어섰습니다. 이는 동일한 기능을 REST API로 홍보하며 수개월 동안 AI 어시스턴트로부터 유입된 트래픽이 0이었던 것과 대조적입니다.
교훈: MCP는 단순한 프로토콜이 아닙니다. 이는 AI 어시스턴트가 직접 호출해야 하는 도구들을 위한 **배포 프리미티브 (distribution primitive)**입니다. Claude Code 사용자들에게 이는 여러분이 의존하는 모든 유용한 API나 데이터 소스가 MCP 서버로 래핑(wrapped)되어야 함을 의미합니다.
여러분에게 주는 의미 — AI 워크플로우를 위한 MCP vs REST API
- TypeScript +
@modelcontextprotocol/sdk - 로컬 Claude Code 사용을 위한 stdio transport
- 원격 클라이언트를 위한 Streamable HTTP transport
- 주요 배포 채널로서의 npm (
npx -y your-package)
도구 핸들러 패턴 (The Tool Handler Pattern)
각 도구는 20~40줄 정도의 순수 함수 (pure function)입니다:
server.tool(
'download_tweet',
{
...
데이터베이스, 세션 상태(session state), 인증(auth)이 없습니다 (기반이 되는 데이터 엔드포인트가 공개되어 있는 경우). 이를 통해 전체 시스템의 감사 가능성(auditable)과 배포 가능성(distributable)을 유지할 수 있습니다.
신디케이션 엔드포인트 트릭 (The Syndication Endpoint Trick)
가장 유용한 발견: X(구 Twitter)에는 인증이나 (실질적인) 속도 제한(rate limits) 없이 전체 트윗 데이터를 반환하는 공개 JSON 엔드포인트가 있습니다. cdn.syndication.twimg.com/tweet-result를 검색해 보세요.
다음 항목들을 얻을 수 있습니다:
- 엔티티(entities)가 포함된 전체 텍스트
- 첨부된 모든 미디어 (다양한 URL이 포함된 비디오, 원본 해상도의 이미지, MP4 형식의 GIF)
- 작성자 정보
- 참여 통계 (좋아요, 리트윗, 답글, 북마크, 인용)
- 스레드 탐색을 위한 답글 대상(Reply-to) 메타데이터
주의사항: 이는 문서화되지 않은 엔드포인트입니다. 응답을 캐싱(cache)하고 폴백(fallback) 계획을 마련해 두세요.
게시 (Publishing) — 실제 작업 (노력의 90%)
1. npm — 간단합니다. package.json에 mcpName을 포함하세요:
{
"mcpName": "io.github.youruser/your-mcp"
}
이것은 Anthropic MCP 레지스트리(Registry)를 위한 정식 ID입니다. 역도메인 네임(Reverse-DNS) 스타일을 따릅니다. 첫 게시 때 정확하게 설정하세요.
2. Anthropic MCP Registry — Go CLI인 mcp-publisher를 사용하세요 (npm이 아닌 GitHub releases에서 다운로드). server.json을 생성합니다:
{
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"name": "io.github.youruser/your-mcp",
...
그 다음:
mcp-publisher login github
mcp-publisher publish
검증(Validation)은 엄격합니다. 설명이 100자를 초과하면 거부되며, 스키마(Schema) URL이 틀려도 거부됩니다.
3. Glama — GitHub에서 자동으로 발견합니다. 테스트를 위해 Docker 이미지를 빌드합니다. 빌드에 실패하면 배지(badge)가 빨간색으로 유지됩니다. Dockerfile이 단독으로 잘 작동하는지 확인하세요.
4. awesome-mcp-servers — 풀 리퀘스트(PR)를 보냅니다. 설명을 간결하게 유지하세요.
Claude Code 사용자에게 이것이 중요한 이유
Claude Code의 강력함은 도구 사용 (tool use)에서 나옵니다. 설치하는 모든 MCP 서버는 Claude Code가 단 한 번의 턴 (single turn) 내에서 수행할 수 있는 능력을 확장합니다. X 툴킷 (toolkit) 사례는 기존 API를 MCP 서버로 래핑 (wrapping)하는 것이 비용이 저렴하며 (~600줄로 14개 도구 구현), 배포 채널 (npm + 레지스트리)이 REST API 문서보다 훨씬 더 효과적이라는 것을 보여줍니다.
만약 Claude Code와 함께 정기적으로 사용하는 데이터 소스나 API가 있다면, 오후 시간을 투자하여 이를 MCP 서버로 래핑해 보세요. MCP의 발견 가능성 (discoverability) 메커니즘은 여러분의 워크플로 (workflow)를 위한 승수 효과 (force multiplier)를 제공할 것입니다.
출처: dev.to
[14 Jul 업데이트, devto_mcp 제공]
MCP 생태계는 개별 툴킷을 훨씬 넘어 폭발적으로 성장했습니다. 2026년 5월 기준, npm과 GitHub에는 13,000개 이상의 MCP 서버가 있으며, 월간 SDK 다운로드 수는 9,700만 건에 달합니다. 이는 6개월 전보다 3배 증가한 수치입니다. 신규 서버 등록은 전년 대비 400% 성장하고 있으며, Anthropic의 공식 파일 시스템 (filesystem) 서버 하나만으로도 월 48,500건의 다운로스에 도달합니다 [dev.to 기준]. 이러한 성장은 X 툴킷 사례에서 설명된 배포상의 이점을 강조하는 동시에, 새로운 mcp-hub CLI와 같은 도구들이 해결하고자 하는 발견의 격차 (discovery gap)를 드러냅니다.
[15 Jul 업데이트, devto_mcp 제공]
MCP의 별도 메타데이터 계층 프라이버시 격차는 zk-SNARKs를 통해 보호된 에이전트 간 통신 (agent-to-agent communication)을 제공하는 BitcoinZ 블록체인 기반 메신저인 Z-TEXT에 의해 강조되었습니다. Z-TEXT는 MCP나 A2A를 대체하는 것이 아니라, 페이로드 (payload) 콘텐츠를 위한 프라이빗 전송 계층 (private transport)으로서 그 아래에 위치할 수 있습니다. 이는 블록 타임스탬프는 공개로 남겨두면서, 온체인 (on-chain) 상에서 발신자, 수신자 및 금액을 숨깁니다 [Z-TEXT 기준]. 이는 두 프로토콜 모두 해결하도록 설계되지 않았던 구조적 연결 불가능성 (unlinkability) 문제를 해결하며, 7,000개 이상의 공개 서버에서 200,000개의 MCP 인스턴스에 영향을 미친 최근의 OX Security RCE 취약점과는 별개의 문제입니다.
[15 Jul 업데이트, lovable_blog_gn 제공]
원문은 gentic.news에서 처음 게시되었습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기