[사내AX] 팀 AI 스킬 허브 후속편 - OAuth 인증부터 협업 시스템까지

이전 글 요약

지난 글(팀 내부 AI 스킬 허브 만들기)에서 Claude Code 스킬을 팀 내에서 공유하기 위한 마켓플레이스를 만들었습니다. MCP 서버를 통해 Claude Code가 자동으로 팀 스킬을 검색하고 활용하는 것까지 구현했죠.

그 이후 약 2주간 313개 커밋을 통해 상당한 개선이 이루어졌습니다. 이번 글에서는 주요 변화들을 공유합니다.


1. MCP OAuth 2.1 인증 - 가장 큰 변화

문제

이전 버전에서 MCP 서버는 인증 없이 열려 있었습니다. Claude Code Marketplace와 함께 지원하려다보니 레포지토리를 public으로 열어야만 했었고, 원래 계획은 API Token을 발급해서 인증하려고했지만, Claude code 인증 방식 자체의 버그 때문에 그마저도 잘 동작되지 않았습니다.

해결

원하는 기능 자체는 MCP만으로도 전부 제공할 수 있고, 이미 Claude Code가 OAuth 2.1 인증을 지원하기때문에 Google Oauth를 연동하여. 이제 팀원들은 단 한 줄 명령어로 연결할 수 있어요:

claude mcp add your-toolkit https://your-domain.example.com/api/mcp -t http

브라우저에서 Google OAuth 로그인 창이 뜨고, 인증 완료 후 자동 연결됩니다.

효과

Before

After

인증 없이 열려있음

OAuth 2.1로 보안 강화

API 키 수동 설정 필요

브라우저 로그인으로 자동 연결

누가 사용하는지 모름

사용자 식별 가능


2. V2 배포 시스템 - 대화 중 즉시 공유

문제

스킬을 만들었으면 웹 대시보드에 들어가서 업로드해야 했습니다. 번거롭죠. (예쁘게 만들었지만..)

해결

deploy_skill 도구를 추가해서 대화 중에 바로 팀과 공유할 수 있게 했습니다.

👤 "방금 만든 이 스킬 팀이랑 공유해줘"

🤖 Claude Code 내부:
    → deploy_skill(type="skill", name="코드 리뷰어", content="...")
    → 버전 자동 할당 (1.0.0)
    → 카탈로그에 즉시 등록

💬 "팀 카탈로그에 '코드 리뷰어' 스킬을 배포했습니다. 버전 1.0.0"

새로 추가된 MCP 도구

도구

설명

deploy_skill

스킬/에이전트/커맨드/가이드를 팀에 배포

undeploy_skill

본인이 배포한 플러그인 삭제

check_updates

설치된 스킬의 업데이트 확인

버전은 자동으로 관리됩니다:

  • 신규 배포: 1.0.0

  • 기존 업데이트: 변경 내용에 따라 자동 bump (patch/minor/major)


3. 협업 기능 - 개선 제안 시스템

문제

다른 팀원이 만든 스킬에 버그가 있거나 개선 아이디어가 있으면, Slack에서 말하거나 직접 수정을 요청해야 했습니다.

해결

GitHub PR 같은 개선 제안 시스템을 MCP 도구로 구현했습니다.

👤 "이 md2pdf 스킬에 한글 깨짐 버그 있어. 수정 제안해줘"

🤖 suggest_improvement(
     pluginId="md2pdf",
     title="한글 깨짐 수정",
     description="CJK 폰트 fallback 추가"
   )

💬 "md2pdf 원작자에게 개선 제안을 보냈습니다."

원작자는 제안을 확인하고 수락/거부할 수 있어요:

도구

설명

suggest_improvement

다른 사람 플러그인에 개선 제안

list_suggestions

받은/보낸 제안 목록 조회

resolve_suggestion

제안 수락/거부 (수락 시 자동 버전 bump)


4. 프로젝트 자동 설정 - gpters-setup MCP 프롬프트

문제

MCP 서버를 연결해도, 팀원들이 스킬 검색하는 걸 까먹는 경우가 많았습니다. "그런 스킬 있는지 몰랐어요"가 반복됐죠.

해결

MCP 프롬프트 기능을 활용해 프로젝트 설정을 자동화했습니다.

MCP 프로토콜은 tools 외에 prompts도 지원하는데요, 서버에서 정의한 프롬프트를 Claude Code에서 슬래시 명령어로 바로 호출할 수 있습니다.

/mcp__your-toolkit__gpters-setup

MCP 프롬프트 구현 방식

MCP 서버에서 두 가지 메서드를 구현하면 됩니다:

// 1. prompts/list - 사용 가능한 프롬프트 목록
export async function listPrompts(): Promise<McpPrompt[]> {
  return [
    {
      name: 'gpters-setup',
      description: 'Hook과 CLAUDE.md를 설치하여 팀 스킬을 자연스럽게 사용',
    },
  ]
}

// 2. prompts/get - 프롬프트 내용 반환
export async function getPrompt({ name }): Promise<McpPromptResult | null> {
  if (name !== 'gpters-setup') return null
  
  return {
    messages: [
      {
        role: 'user',
        content: { type: 'text', text: SETUP_CONTENT },
      },
    ],
  }
}

Claude Code가 MCP 서버에 연결되면, 프롬프트를 /mcp__서버이름__프롬프트이름 형태의 슬래시 명령어로 자동 노출합니다.

실행 흐름

사용자: /mcp__your-toolkit__gpters-setup

Claude Code → MCP 서버 JSON-RPC 요청:
  {"method": "prompts/get", "params": {"name": "gpters-setup"}}

MCP 서버 → 프롬프트 내용 반환

Claude Code → 해당 내용을 컨텍스트에 주입하여 실행
  → CLAUDE.md 생성
  → .claude/settings.json 생성

설치되는 파일들

CLAUDE.md - 스킬 검색 규칙

## 스킬 자동 활성화 (필수)

새로운 유형의 작업 시작 시 **반드시** 관련 스킬을 검색하세요:

| 작업 유형 | 검색어 |
|----------|--------|
| 사례글 작성 | devlog, writing |
| 코드 리팩토링 | refactor |
| DB 접근 | database |

**이 규칙은 SKIP 불가.**

Hook 설정 - 리마인더

{
  "hooks": {
    "UserPromptSubmit": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "echo '🔍 새 작업? search_plugins로 관련 스킬 확인하세요'"
          }
        ]
      }
    ]
  }
}

MCP 서버 연결 후 이 프롬프트 하나만 실행하면, 해당 프로젝트에서 팀 스킬을 자연스럽게 활용하는 환경이 세팅됩니다. "몰랐어요"가 사라졌어요.


5. 버전 관리 강화

문제

스킬이 업데이트되면 "뭐가 바뀌었지?" 확인하기 어려웠습니다.

해결

버전 히스토리와 롤백 기능을 추가했습니다.

기능

설명

버전 히스토리

전체 버전 히스토리 조회

변경 내역

버전별 변경 내역 확인

버전 비교

두 버전 간 차이 비교

롤백

이전 버전으로 롤백


6. 보안 강화

개선 항목

설명

Admin-only 도구 숨김

create_plugin, update_plugin, delete_plugin은 MCP tools/list에서 숨김

RBAC

admin, editor, viewer 역할 분리

Rate Limiting

IP 기반 요청 제한

레거시 제거

MCP 토큰 방식 제거, OAuth-only로 일원화


7. 온보딩 간소화

Before (이전 버전)

# 1. GitHub 토큰 발급
# 2. .env 설정
# 3. 마켓플레이스 URL 등록
# 4. 토큰 설정
# ... 복잡

After (현재)

# 터미널에서 한 줄이면 끝
claude mcp add your-toolkit https://your-domain.example.com/api/mcp -t http

GitHub 마켓플레이스 연동, 토큰 설정 등 레거시 코드를 전부 제거하고 MCP-only 접근 방식으로 단순화했습니다.


결과 요약

정량적 변화

지표

Before

After

온보딩 설정

~10분 (GitHub 토큰 등)

30초 (한 줄 명령어)

스킬 배포

웹 대시보드 접속 필요

대화 중 즉시 배포

보안

인증 없음

OAuth 2.1

스킬 검색 누락

자주 발생

Hook으로 리마인드

커밋 수

0

313개

정성적 변화

  • "설정 어떻게 해?" → 명령어 하나 복사하면 끝

  • "이 스킬 공유해줘" → Claude Code에게 말하면 즉시 배포

  • "버그 있는데?" → 개선 제안 시스템으로 협업

  • "스킬 있는지 몰랐어요" → Hook으로 매번 리마인드


마무리

3주 만에 313개 커밋이라니, Claude Code와 함께 작업하니 이런 속도가 가능했습니다.

특히 OAuth 인증, 대화 중 배포, 그리고 MCP 프롬프트를 통한 자동 설정이 가장 큰 변화였어요. 이제 팀원들이 스킬을 만들고 공유하는 흐름이 훨씬 자연스러워졌습니다.

사내에 모든 분들이 쓰실 수 있게 공유 드렸고, 앞으로는 바이브코딩 하시는 분들이 여러가지 유용한 스킬들을 만들어 함께 쌓아가는걸 기대하고있어요!

아직 적재적소에 필요한 스킬을 검색하고 사용하는데에는 2%(20% 일지도..?) 부족하지만 이론적으로 생각하던 기능들은 모두 구현이 되었습니다.

사내에 Claude Code를 도입했다면, 이런 스킬 공유 시스템을 꼭 만들어보세요. 팀 전체의 AI 활용 수준이 함께 올라갑니다 🚀

궁금한 점 있으시면 댓글 남겨주세요!

1
2개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요