콘텐츠로 이동

MCP 서버

SpacePost는 Model Context Protocol을 지원하므로 AI 어시스턴트가 사용자를 대신해 이메일을 보내고 도메인, API 키, 웹훅, 오디언스, 연락처, 브로드캐스트, 발송 제외 항목, 테넌트를 관리할 수 있습니다.

API 레퍼런스의 모든 엔드포인트가 MCP 도구입니다. 도구는 레퍼런스와 같은 OpenAPI 문서에서 생성되므로, API에 기능이 추가되면 MCP 서버도 자동으로 제공합니다. 따로 관리하거나 기다려야 하는 목록이 없습니다.

두 가지 방법으로 연결할 수 있습니다.

  • 호스팅(권장): https://api.spacepost.dev/mcp, Streamable HTTP, API 키로 인증합니다. 설치할 것이 없습니다.
  • 로컬: npx -y @spacepost/mcp, 내 컴퓨터에서 API를 호출하는 stdio 서버입니다. 도구 정의가 패키지에 포함되어 있어 오프라인에서도 시작됩니다.

API 키를 bearer 토큰으로 보내세요: Authorization: Bearer sp_live_....

터미널 창
claude mcp add --transport http spacepost https://api.spacepost.dev/mcp \
--header "Authorization: Bearer sp_live_YOUR_API_KEY"

claude mcp list로 확인합니다.

URL의 쿼리 매개변수로 도구 목록을 좁힐 수 있습니다. 예: https://api.spacepost.dev/mcp?read_only=true&toolsets=emails,domains.

호스팅 서버는 상태를 저장하지 않습니다. 각 요청은 독립적이므로 /mcp에 대한 GET과 DELETE는 405로 응답하며, 재개할 세션이 없습니다.

변수 필수 설명
SPACEPOST_API_KEY 예 API 키
SPACEPOST_BASE_URL 아니요 다른 API URL, 기본값 https://api.spacepost.dev
SPACEPOST_DEFAULT_FROM 아니요 어시스턴트가 from 없이 send_email을 호출할 때 사용하는 발신자, 예: Acme <hello@acme.com>
SPACEPOST_READ_ONLY 아니요 true는 --read-only와 같습니다
SPACEPOST_TOOLSETS 아니요 --toolsets와 같습니다, 예: emails,domains
SPACEPOST_PERMISSION 아니요 --permission과 같습니다. 키가 발송 전용이면 sending_access로 설정하세요
터미널 창
claude mcp add spacepost -e SPACEPOST_API_KEY=sp_live_YOUR_API_KEY -- npx -y @spacepost/mcp

기본 발신자를 설정하려면 -e SPACEPOST_DEFAULT_FROM="Acme <hello@acme.com>"를 추가하고, 플래그는 패키지 이름 뒤에 붙이세요. 예: npx -y @spacepost/mcp --read-only.

npx -y @spacepost/mcp --help는 옵션을 나열하고, --list-tools는 현재 설정에서 노출되는 도구를 출력합니다.

로컬 플래그 호스팅 쿼리 효과
--read-only read_only=true GET 엔드포인트용 도구만(list_*, get_*, get_broadcast_readiness)
--permission sending_access 키에 따라 자동 적용 sending_access 키가 사용할 수 있는 도구만
--toolsets emails,domains toolsets=emails,domains 지정한 API 영역의 도구만: emails, domains, apikeys, webhooks, audiences, contacts, broadcasts, suppressions, tenants(레퍼런스의 섹션이며, 대소문자, 공백, 대시는 무시되므로 api-keys도 동작합니다)

함께 사용할 수 있습니다.

  • 엔드포인트당 도구 하나이며, 이름은 엔드포인트의 operationId를 snake_case로 바꾼 것입니다. sendEmail은 send_email, getBroadcastReadiness는 get_broadcast_readiness, pauseTenant는 pause_tenant가 됩니다. 모든 필드는 API 레퍼런스에 설명되어 있습니다.
  • 인수는 하나의 평평한 객체입니다. 경로 매개변수(snake_case, 예: id, audience_id, ref), 쿼리 매개변수(limit, after, before), JSON 본문의 필드(from, to, subject, …)가 들어갑니다. 본문 필드가 매개변수와 이름이 같으면 body_<field>가 됩니다. send_batch_emails의 배열처럼 객체가 아닌 본문은 body로 전달합니다.
  • send_email과 send_batch_emails의 **idempotency_key**는 Idempotency-Key 헤더를 설정하므로, 재시도해도 두 번 발송되지 않습니다.
  • 결과는 API의 JSON 응답이며, 구조화된 콘텐츠로도 제공됩니다. 오류는 isError: true와 함께 REST API와 같은 { "statusCode", "name", "message" } 본문, 그리고 다음에 할 일에 대한 힌트로 반환됩니다.
  • 주석은 도구가 하는 일을 클라이언트에 알려 줍니다. 읽기 도구는 readOnlyHint, 삭제 도구와 cancel_email, pause_tenant는 destructiveHint, 이메일을 보내는 도구(send_email, send_batch_emails, send_broadcast)는 openWorldHint입니다. 클라이언트는 이를 보고 도구를 실행하기 전에 확인을 요청할지 결정합니다.
  • “onboarding@test.spacepost.dev에서 delivered@test.spacepost.dev로 인사 테스트 이메일을 보내 줘.”
  • “acme.com 도메인을 추가하고 어떤 DNS 레코드를 만들어야 하는지 알려 줘.”
  • “어제 ada@example.com으로 보낸 이메일이 전달됐어?”
  • “베타 목록으로 예약된 이메일을 취소해 줘.”
  • “반송과 스팸 신고에 대해 https://acme.com/hooks로 가는 웹훅을 만들어 줘.”
  • “내 Newsletter 오디언스에 보낼 브로드캐스트 초안을 만들고 전달률 문제가 있는지 확인해 줘. 아직 보내지는 마.”
  • “내 테넌트 중 일시 중지된 건 어떤 것이고 이유는 뭐야?”