MCP 서버 제출
MCP 서버 제출 (Server Submissions)
LiteLLM은 MCP 서버를 위한 제출·승인 워크플로를 지원해요. 팀 멤버가 MCP 서버를 관리자 검토용으로 제출하면, 관리자가 승인하거나 거부할 때까지 서버는 pending_review 상태로 유지돼요.
이를 통해 조직은 승인되지 않은 서버를 모든 사용자에게 즉시 노출하지 않으면서 팀 멤버에게 셀프서비스 MCP 등록을 제공할 수 있어요.
출처: 문서
본문
관련 문서:
- MCP Overview — MCP 서버 추가·관리
- MCP Permission Management — 키, 팀, 조직별 MCP 접근 제어
동작 방식 (How It Works)
Team member submits MCP server via API
↓
Server saved as "pending_review" (NOT loaded into registry)
↓
Admin reviews in the Submitted MCPs tab
↓
Approve → server goes "active" and is loaded into the registry
Reject → server stays out with optional review notes
사전 요구사항 (Prerequisites):
- 프록시 config에
store_model_in_db: true가 설정되어 있어야 함(MCP 서버 유지에 필요) - 제출하는 사용자는 팀 스코프 API 키를 사용해야 함(관리자 키는 워크플로를 우회하고
POST /v1/mcp/server를 직접 사용)
config.yaml:
general_settings:
store_model_in_db: true
사용자: MCP 서버 제출 (User: Submit an MCP Server)
팀 스코프 API 키를 사용하세요. 관리자 키는 이 엔드포인트에서 거부되며, 관리자는 POST /v1/mcp/server를 직접 사용해야 해요.
curl:
curl -X POST http://localhost:4000/v1/mcp/server/register \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ***" \
-d '{
"server_name": "github_mcp",
"url": "https://api.githubcopilot.com/mcp",
"transport": "sse",
"description": "GitHub MCP for code search and PR management"
}'
Python:
import requests
response = requests.post(
"http://localhost:4000/v1/mcp/server/register",
headers={
"Authorization": f"Bearer {team_api_key}",
"Content-Type": "application/json",
},
json={
"server_name": "github_mcp",
"url": "https://api.githubcopilot.com/mcp",
"transport": "sse",
"description": "GitHub MCP for code search and PR management",
},
)
print(response.json())
응답 (Response). 서버는 pending_review 상태로 생성돼요:
{
"server_id": "832d6abc-7a5c-457a-a9f6-cfe4ae05f776",
"server_name": "github_mcp",
"url": "https://api.githubcopilot.com/mcp",
"transport": "sse",
"approval_status": "pending_review",
"submitted_by": "7fd77c87-207b-4d6c-9d51-b72efb8962dc",
"submitted_at": "2026-04-29T18:50:34Z"
}
note — 서버는 아직 MCP 클라이언트가 접근할 수 없어요. 관리자가 승인한 후에만 활성화돼요.
관리자: 제출 검토 (Admin: Review Submissions)
UI로 (Via UI)
MCP Servers → Submitted MCPs 탭으로 가세요. 다음을 볼 수 있어요:
- 제출 수: 전체 제출, 대기 검토, 활성, 거부
- 각 제출 카드에는 서버 이름, 설명, URL, 전송 방식, 제출 날짜
- 각 카드의 Approve와 Reject 버튼
승인(Approving) 시 확인 대화상자가 뜨고, Approve를 클릭하면 활성 상태가 되어 MCP 레지스트리에 즉시 로드돼요.
승인 후 카드 배지가 Active로 바뀌고 카운터가 업데이트돼요.
거부(Rejecting) 시 선택적 검토 노트(review notes) 필드가 있는 대화상자가 열리며, 제출을 거절한 이유를 설명할 수 있어요.
API로 (Via API)
proxy_admin_viewer 역할이 필요해요.
모든 MCP 제출 목록:
curl http://localhost:4000/v1/mcp/server/submissions \
-H "Authorization: Bearer ***"
응답:
{
"total": 1,
"pending_review": 1,
"active": 0,
"rejected": 0,
"items": [
{
"server_id": "832d6abc-7a5c-457a-a9f6-cfe4ae05f776",
"server_name": "github_mcp",
"approval_status": "pending_review",
"submitted_by": "7fd77c87-207b-4d6c-9d51-b72efb8962dc",
"submitted_at": "2026-04-29T18:50:34Z"
}
]
}
제출된 MCP 서버 승인:
curl -X PUT http://localhost:4000/v1/mcp/server/{server_id}/approve \
-H "Authorization: Bearer ***"
서버 상태가 active로 바뀌고 MCP 런타임 레지스트리에 즉시 로드돼요.
제출된 MCP 서버 거부:
curl -X PUT http://localhost:4000/v1/mcp/server/{server_id}/reject \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ***" \
-d '{"review_notes": "This URL is not on the approved vendor list."}'
review_notes는 선택이에요. 서버는 레지스트리에서 제외된 채로 남아요.
승인 상태 값 (Approval Status Values)
| 상태 | 의미 |
|---|---|
pending_review |
제출됨, 관리자 검토 대기. MCP 클라이언트가 접근 불가. |
active |
승인됨. MCP 레지스트리에 로드되어 클라이언트가 사용 가능. |
rejected |
관리자가 거부함. 접근 불가. review_notes를 포함할 수 있음. |
FAQ
관리자가 거부된 서버를 다시 승인할 수 있나요?
네. PUT /v1/mcp/server/{id}/approve를 호출하면 됩니다. 엔드포인트는 pending_review와 rejected 상태 모두의 서버를 받아요.
이전에 활성 상태였던 서버를 거부하면 어떻게 되나요?
런타임 레지스트리에서 즉시 제거되므로 클라이언트가 더 이상 그 도구를 볼 수 없어요.
제출을 활성화하려면 특별한 config 플래그가 필요한가요?
아니오. store_model_in_db: true만 설정되어 있으면 제출 엔드포인트는 기본적으로 사용 가능해요. 추가 기능 플래그는 필요 없어요.