
SentinelMCP는 MCP 서버로 전달되는 도구 호출을 검사하는 게이트웨이다. 프로젝트는 출처 검증, ID-JAG 토큰 확인, 도구 정책, 팀별 토큰 예산을 적용하며, 예산 초과 요청은 즉시 실패시키는 대신 사람의 승인을 기다리게 한다.
간단한 데모는 다음 명령으로 실행할 수 있다.
docker run --rm -it ghcr.io/asctttt/sentinel-mcp:demo
직접 설치하려면 저장소를 복제하고 의존성을 설치한 뒤 환경 변수를 설정한다.
git clone https://github.com/your-org/sentinelmcp.git
cd sentinelmcp
npm install
cp .env.example .env
필수 환경 변수는 여섯 가지다. MCP_UPSTREAM_URL은 요청을 전달할 MCP 서버 주소이고, JWKS_URI는 ID 제공자의 JWKS 엔드포인트다. ID_JAG_ISSUER, ID_JAG_AUDIENCE, ID_JAG_RESOURCE에는 각각 토큰의 예상 발급자·대상·게이트웨이 리소스 식별자를 지정한다. HMAC_SECRET은 재개 토큰 서명에 쓸 32자 이상의 임의 문자열이며, 여러 복제본을 운영한다면 모든 복제본에 같은 값을 설정해야 한다.
npm run build && npm start # production
# or, for local iteration:
npm run dev # tsx watch
프로젝트 설명에 따르면 모든 요청은 출처, 정책, 신원, 예산 검사를 차례로 거친다. 출처 검사는 기본적으로 루프백만 허용하고, 그 밖의 출처는 명시적 허용 목록으로 지정한다. 신원 확인은 JWKS 기반 JWT 검증을 사용하며 대칭 알고리즘은 허용하지 않는다. 토큰의 resource 값도 확인해 한 MCP 서버용 토큰이 다른 서버에서 재사용되지 않도록 한다.
토큰 예산은 JSON-RPC 요청 구조를 바탕으로 추정한다. 입력은 정확히 측정하고 출력은 도구별 최근 평균으로 예측한 뒤 실제 응답을 받은 후 조정한다. 팀별 예산은 168개의 시간 단위 버킷으로 구성된 7일 이동 창으로 관리하며, 누적 한도와 별도로 최근 사용량에 비해 급증하는 호출도 감지한다.
예산을 초과하면 호출을 오류로 끝내지 않고 InputRequiredResult를 반환한다. 응답에는 초과 예상치와 사용량 급증 정보, 요청에 묶인 HMAC 서명 resumeToken이 포함된다. 사람은 POST /mcp/resume에 승인 또는 거부 결정을 보내 호출을 재개할 수 있다. 승인은 해당 호출의 예산 제한만 우회하며, 재개할 때도 신원과 정책 검사는 다시 적용된다.
프로젝트는 요청·응답 경로를 무상태로 설계해 로드 밸런서 뒤에서 확장할 수 있다고 설명한다. 다만 SSE 세션 추적과 예산 원장은 메모리에 상태를 보관하므로, 복제본을 여러 개 운영할 때의 조건은 엔지니어링 문서를 확인해야 한다. 기본 게이트웨이는 MIT 라이선스로 제공된다. 유료 Pro 플랜은 월 199달러이며, 프로젝트 설명상 여러 복제본을 위한 예산 관리와 SIEM·Datadog 로그 내보내기, Slack·PagerDuty 알림, 우선 보안 패치와 지원을 제공한다.
SentinelMCP는 모델이 속거나 잘못된 도구 호출을 하는 것 자체를 막지는 못한다고 밝힌다. 프로젝트는 63개 테스트와 19개 테스트 스위트, Node 20·22에서의 CI를 제시하며, 자세한 검증 내용과 알려진 한계는 엔지니어링 문서에 공개했다. 라이선스
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요