MCP Server on Cloudflare Workers

베어러 인증이 있는 Cloudflare Workers의 MCP 서버

이 저장소는 간단한 베어러 토큰 인증을 사용하여 Cloudflare Workers에서 실행되는 MCP(Model Context Protocol) 서버의 개념 증명 구현을 보여줍니다.

개요

이 프로젝트에서는 다음 방법을 보여줍니다.

  • Cloudflare의 에지 네트워크에 MCP 서버 배포
  • 기본 베어러 토큰 인증 구현
  • 서버리스 아키텍처를 통해 MCP 도구를 생성하고 공개합니다.

지역 개발

지엑스피1

서버를 시작하면 http://localhost:8787 에서 사용할 수 있습니다.

입증

이 구현은 간단한 베어러 토큰 인증 체계를 사용합니다. 클라이언트는 요청과 함께 Authorization 헤더를 제공해야 합니다. 서버는 이 토큰을 MCP 도구에 전달하여 도구가 인증된 사용자를 기반으로 작업을 수행할 수 있도록 합니다.

MCP Inspector로 테스트

MCP Inspector를 사용하여 MCP 서버를 테스트할 수 있습니다.

  1. 검사기를 설치하고 시작합니다.
    npx @modelcontextprotocol/inspector
  2. 검사기 구성:
    • 전송 유형을 SSE 로 전환
    • MCP 서버의 URL을 입력하세요(로컬: http://localhost:8787/sse 또는 배포: https://your-worker.workers.dev/sse )
    • Authorization 필드에 Bearer 토큰을 추가합니다.
    • "연결"을 클릭하세요
  3. 기능을 테스트하세요:
    • 사용 가능한 도구를 보려면 "도구 목록"을 클릭하세요.
    • "getToken" 도구를 실행해 보세요. 그러면 인증 헤더가 반환됩니다.
    • 기본 기능을 테스트하려면 두 개의 숫자를 사용하여 "추가" 도구를 사용해 보세요.

Cloudflare에 배포

Cloudflare Workers에 MCP 서버를 배포하세요.

npm run deploy

배포 후 서버는 https://your-worker.workers.dev 에서 사용할 수 있습니다.

프로젝트 구조

  • src/index.ts - MCP 도구 정의를 사용한 메인 서버 구현
  • src/utils.ts - 웹 인터페이스 렌더링을 위한 도우미 유틸리티
  • wrangler.jsonc - Cloudflare Workers 구성

중요 참고 사항

이는 MCP가 서버리스 환경에서 어떻게 실행되는지 보여주기 위한 개념 증명 구현입니다. 프로덕션 환경에서는 다음을 구현해야 합니다.

  • 더욱 강력한 인증(OAuth, 토큰 검증 등)
  • 속도 제한 및 추가 보안 조치
  • 적절한 오류 처리 및 모니터링

문제 해결

문제가 발생하는 경우:

  1. Authorization 헤더에 베어러 토큰이 올바르게 포맷되어 있는지 확인하세요.
  2. Cloudflare 대시보드에서 작업자 로그를 확인하세요
  3. 로컬 개발 서버를 다시 시작해 보세요.

지속적인 인증 문제가 발생하는 경우 캐시된 자격 증명을 지워야 할 수도 있습니다.

rm -rf ~/.mcp-auth
-
security - not tested
-
license - not tested
-
quality - not tested

베어러 토큰 인증을 사용하여 Cloudflare의 엣지 네트워크에서 실행되는 모델 컨텍스트 프로토콜 서버의 개념 증명 구현을 통해 배포된 AI 모델이 서버리스 아키텍처를 통해 도구에 액세스할 수 있습니다.

  1. Overview
    1. Local Development
      1. Authentication
        1. Testing with MCP Inspector
          1. Deploying to Cloudflare
            1. Project Structure
              1. Important Notes
                1. Troubleshooting
                  ID: 40vqylshvd