Skip to main content
Glama
MSPbotsAI

mspbots-fleet-mcp

Official
by MSPbotsAI

mspbots-fleet-mcp

MSPbots Fleet Platform API용 MCP 서버 — fleetdm을 기반으로 하는 멀티 테넌트 콘솔로, 호스트 인벤토리, 온디맨드 스크립트, 저장된 osquery 쿼리를 MCP 클라이언트에 노출합니다.

형제 서비스인 mspbots-agent-mcp와 동일한 설계를 따릅니다: 무상태(stateless), 저장된 자격 증명 없음, Model Context Protocol(Streamable HTTP/SSE 전송)을 통한 요청별 헤더 인증.

언제 사용하나요

이 MCP는 내부 MSPbots 제품(디바이스 플릿 관리)을 래핑하며, 타사 통합이 아닙니다. 일반적인 사용 사례:

  • "이 테넌트에는 어떤 호스트가 있고, 어떤 것이 오프라인인가요?" → mspbotsfleet_list_hosts

  • "이 노트북을 Production으로 태그" → mspbotsfleet_set_host_labels

  • "이 머신이 오래된 것 같으니 새로 고침" → mspbotsfleet_refetch_host

  • "그 서버에서 로그 수집 스크립트 실행" → mspbotsfleet_run_script

  • "지금 모든 Windows 호스트의 디스크 사용량은?" → mspbotsfleet_create_query로 저장된 쿼리를 만든 다음 mspbotsfleet_run_query 실행

  • "새 노트북 배치가 등록되었으니 선언한 호스트를 클레임" → mspbotsfleet_claim_hosts

  • "이 디바이스는 오프보딩하므로 우리 것으로 추적 중지(Fleet에는 남김)" → mspbotsfleet_release_host

Related MCP server: Rancher MCP Server

도구

모든 도구의 자격 증명은 요청 헤더(X-MSP-Token / X-MSP-Tenant-Id / X-MSP-Host)에서 가져오며, 도구 매개변수에 토큰을 전달할 필요가 없습니다.

호스트

호스트는 API로 생성할 수 없습니다. 머신에 fleetd를 설치하고 등록하면 자동으로 나타나며, 이 테넌트에서 선언한 식별자(호스트 이름/시리얼/UUID)로 소유권을 클레임합니다. mspbotsfleet_claim_hosts를 참고하세요.

도구

설명

매개변수

mspbotsfleet_list_hosts

현재 테넌트의 호스트 나열 (퍼지 검색+상태 필터+페이지네이션)

search, status(online/offline/new/missing), page(기본 0), per_page(기본 25, 최대 200)

mspbotsfleet_get_host

호스트 상세 정보+수동 라벨 조회

host_id(필수)

mspbotsfleet_list_host_scripts

해당 호스트에서 실행 가능한 스크립트 나열

host_id(필수)

mspbotsfleet_set_host_labels

호스트의 수동 라벨 전체 교체

host_id(필수), labels(필수, 전체 교체)

mspbotsfleet_refetch_host

호스트가 다음 체크인 시 속성을 새로 고치도록 요청 (비동기)

host_id(필수)

mspbotsfleet_delete_host

Fleet에서 호스트를 제거하고 소유권 정리 (fleetd를 제거하지 않으면 다시 등록됨)

host_id(필수)

mspbotsfleet_claim_hosts

식별자를 선언하고 일치하는 무소유 호스트 인수 (멱등, 일치하지 않은 항목 재시도 가능)

identifiers(선택, 호스트 이름/시리얼/UUID 목록, 최대 500개, 생략/빈 배열=이전에 선언한 항목만 재시도)

mspbotsfleet_release_host

이 테넌트의 호스트 소유권 포기, 호스트 자체는 삭제하지 않음 (멱등)

host_id(필수)

호스트 목록은 전체를 가져온 뒤 메모리에서 필터/정렬/페이지네이션합니다. Fleet 쪽 데이터는 15초 캐시되며, 소유권 정보는 캐시하지 않고 실시간으로 DB를 조회합니다. claim_hosts{claimed, waiting, rejected}를 반환합니다. waiting은 선언은 되었지만 아직 Fleet에 나타나지 않은 호스트이고, rejected는 식별자가 다른 테넌트에 의해 이미 선언된 경우입니다.

스크립트

도구

설명

매개변수

mspbotsfleet_list_scripts

이 테넌트의 스크립트 나열

page, per_page

mspbotsfleet_get_script

스크립트 상세 정보 조회 (본문 포함)

script_id(필수)

mspbotsfleet_create_script

새 스크립트 생성 (파일 이름은 .sh/.ps1로 끝나야 함). 비멱등 — 반복 호출 시 여러 개 생성됨

name(필수), contents(필수, ≤500KB)

mspbotsfleet_update_script

스크립트 본문 교체 (파일 이름은 변경 불가)

script_id(필수), contents(필수)

mspbotsfleet_delete_script

스크립트 삭제 (모든 호스트에 적용)

script_id(필수)

mspbotsfleet_run_script

호스트에서 스크립트 실행

script_id(필수), host_id(필수), sync(기본 false, true면 ≤60초 대기 후 결과 반환)

mspbotsfleet_get_script_result

실행 결과 조회 (exit_code가 null이면 아직 회신되지 않음)

execution_id(필수)

create_script/update_script{id, name}만 반환하므로, 타임스탬프 등 나머지 필드는 mspbotsfleet_get_script/mspbotsfleet_list_scripts로 다시 조회해야 합니다.

저장된 쿼리

도구

설명

매개변수

mspbotsfleet_list_queries

이 테넌트의 쿼리 나열

page, per_page

mspbotsfleet_get_query

쿼리 상세 조회 (SQL 포함)

query_id(필수)

mspbotsfleet_create_query

새 저장 쿼리 생성 (단일 SELECT / WITH…SELECT만 허용). 비멱등 — 반복 호출 시 여러 개 생성됨

name(필수), sql(필수), description, platform(darwin/windows/linux)

mspbotsfleet_update_query

쿼리 업데이트 (부분 업데이트, 변경할 필드만 전달)

query_id(필수), name, sql, description, platform

mspbotsfleet_delete_query

쿼리 및 해당 리포트 데이터 삭제

query_id(필수)

mspbotsfleet_run_query

호스트에서 쿼리를 실시간 실행하고 결과 대기 (≤45초)

query_id(필수), host_ids(선택, ≤50대, 생략 시 이 테넌트의 상위 50대 기본 선택)

SQL 검증 규칙: 단일 SELECT 또는 WITH … SELECT만 허용하며, 끝의 세미콜론은 자동 제거되고 본문에 ;가 있으면 거부됩니다. 이 검증은 백엔드에서 수행되며, 이 서비스는 중복 검증하지 않습니다.

빠른 시작

Docker (권장)

docker compose up --build

서버는 http://localhost:8080에서 시작됩니다.

로컬 (uv)

uv sync
python -m mspbots_fleet_mcp

헬스 체크

curl http://localhost:8080/health
# {"status": "ok"}

헬스 엔드포인트에는 자격 증명이 필요하지 않습니다.

인증 매개변수 (Authentication)

/mcp에 대한 모든 요청에는 다음 HTTP 헤더가 포함되어야 합니다 (MCP 호출자가 제공 — mspbots-agent-mcp / ticketqa-mcp와 일관성 유지):

Header

유형

필수 여부

설명

예시

X-MSP-Token

string

필수

Fleet Platform에서 발급한 액세스 자격 증명 (JWT bearer token). 이 서비스는 그대로 다운스트림 요청의 Authorization: Bearer <token>으로 전달합니다.

X-MSP-Token: <jwt-bearer-token>

X-MSP-Tenant-Id

string

필수

테넌트 식별자. 다운스트림 API로 전달할 때 X_Tenant_ID 헤더로 이름이 바뀝니다 (테넌트는 JWT에도 포함됨).

X-MSP-Tenant-Id: <tenant-id>

X-MSP-Host

string

필수

Fleet API가 있는 호스트.

X-MSP-Host: https://agent.mspbots.ai

세 헤더 중 하나라도 없으면 401 Unauthorized를 반환합니다.

다운스트림 Fleet API는 인증 실패(토큰 누락/서명 오류/역할 부족) 시 403을 반환합니다. 401이 아닙니다. 401은 이 서비스 계층(게이트웨이 헤더 누락)에서만 발생합니다.

환경 변수

변수

기본값

설명

MCP_HTTP_PORT

8080

수신 포트

MCP_HTTP_HOST

0.0.0.0

수신 호스트

MCP 엔드포인트

POST http://localhost:8080/mcp

다음으로 MCP 클라이언트를 연결하세요:

  • 전송: http (Streamable HTTP / SSE)

  • 헤더: X-MSP-Token, X-MSP-Tenant-Id, X-MSP-Host (모두 필수)

테스트 예시 (Test Example)

curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "X-MSP-Token: <token>" \
  -H "X-MSP-Tenant-Id: <tenant-id>" \
  -H "X-MSP-Host: https://agent.mspbots.ai" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": { "name": "mspbotsfleet_list_hosts", "arguments": { "status": "online", "per_page": 10 } }
  }'

⚠️ 이 저장소는 공개 저장소이므로 실제 token / tenant id 등 민감한 정보를 커밋된 파일에 넣지 마세요. 위의 <token> / <tenant-id>는 단지 자리 표시자입니다.

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • MCP server for interacting with the Supabase platform

  • MCP server wrapping the Tesla Fleet API and TeslaMate API

  • MCP (Model Context Protocol) server for Appwrite

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MSPbotsAI/mspbots-fleet-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server