MCP 서버 동적 등록
Teleport v18.9MCP 서버 동적 등록을 사용하면 Teleport 관리자는 Teleport Application Service 인스턴스가 읽는 정적 설정 파일을 업데이트하지 않고도 새 MCP 서버를 등록하거나 기존 MCP 서버를 업데이트/등록 해제할 수 있습니다.
MCP 서버 동적 등록을 사용하면 Teleport 관리자는 Teleport Application Service 인스턴스가 읽는 정적 설정 파일을 업데이트하지 않고도 새 MCP 서버를 등록하거나 기존 MCP 서버를 업데이트/등록 해제할 수 있습니다.
MCP 서버 리소스는 Teleport 백엔드에 app 리소스로 등록됩니다. Application
Service 인스턴스는 주기적으로 Teleport Auth Service에 app 리소스를
쿼리하며, 각 리소스에는 Application Service가 애플리케이션을 프록시하는 데
필요한 정보가 포함되어 있습니다.
필요한 권한#
동적으로 등록된 애플리케이션과 상호작용하려면, 사용자는 app 리소스를 관리할
권한이 있는 Teleport 역할을 가지고 있어야 합니다.
다음 예시에서 역할은 사용자가 app 리소스에 대해 가능한 모든 작업을 수행할 수
있도록 허용합니다:
allow:
rules:
- resources:
- app
verbs: [list, create, read, update, delete]
동적 등록 활성화#
동적 등록을 활성화하려면, 이 서비스가 등록을 위해 모니터링할 리소스
레이블 셀렉터 목록을 담은 resources 섹션을 Application Service 구성에
포함합니다:
app_service:
enabled: true
resources:
- labels:
"*": "*"
와일드카드 셀렉터를 사용하여 클러스터 내 모든 동적 애플리케이션 리소스를 Application Service에 등록하거나, 특정 레이블 집합을 지정하여 일부만 등록할 수 있습니다:
resources:
- labels:
"env": "prod"
- labels:
"env": "test"
MCP 서버 생성#
다음 예시는 docker를 통해 "Everything" MCP 서버를 실행하여 Teleport가 이를 프록시하도록 설정합니다.
kind: app
version: v3
metadata:
name: everything
description: The Everything MCP server
labels:
env: dev
spec:
mcp:
# Command to launch stdio-based MCP servers.
command: "docker"
# Args to execute with the command.
args: ["run", "-i", "--rm", "mcp/everything"]
# Name of the host user account under which the command will be
# executed. Required for stdio-based MCP servers.
run_as_host_user: "docker"
전체 리소스 스펙 참조를 확인하세요.
리소스를 생성하려면 다음을 실행하세요.
# Log in to your cluster with tsh so you can use tctl from your local machine.
# You can also run tctl on your Auth Service host without running "tsh login"
# first.
$ tsh login --proxy=teleport.example.com --user=myuser
$ tctl create mcp_server.yaml
리소스가 생성되면, 적어도 하나의 Application Service 인스턴스가 해당 라벨
셀렉터에 따라 이를 인식하는 한 사용 가능한 MCP 서버 목록(tsh mcp ls 또는
UI에서)에 나타납니다.
기존 애플리케이션 리소스를 업데이트하려면 다음을 실행하세요.
$ tctl create -f mcp_server.yaml
업데이트된 리소스의 라벨이 더 이상 특정 앱 에이전트와 일치하지 않으면 해당 에이전트는 등록을 해제하고 프록시를 중단합니다.
리소스를 삭제하려면 다음을 실행하세요.
$ tctl rm app/everything