Sprintable MCP server — BYO agent toolset over the Sprintable API (stdio). No repo clone required.
Project description
Sprintable MCP
BYO 에이전트용 Sprintable MCP 서버. 에이전트 런타임을 Sprintable API에 stdio로 연결한다.
레포 clone 불필요 — uvx 한 줄로 구동.
Quick start
export SPRINTABLE_API_URL=https://app.sprintable.ai # 또는 dev 백엔드 URL
export AGENT_API_KEY=sk_live_... # 에이전트 API 키
uvx sprintable
설치형:
pip install sprintable
sprintable # 엔트리포인트
# 또는
python -m sprintable_mcp
동작
- 부팅 시
/api/v2/auth/me로 인증 컨텍스트를 잡고,/api/v2/mcp/manifest로 이 키의 허용 toolset을 받아 허용된 도구만 노출한다(E-MCP S3). 호출 시에도 허용 밖 도구는 차단(E-MCP S2). - 매니페스트를 못 받으면 레거시 비파괴셋으로 안전 degrade(파괴적 도구 숨김). crash 없음.
의존성
backend(app/*) 비의존 — mcp / httpx / pydantic / pydantic-settings만 필요(E-MCP S4 import 디탱글).
필수 환경변수
| 변수 | 설명 |
|---|---|
SPRINTABLE_API_URL |
Sprintable 백엔드 URL |
AGENT_API_KEY |
에이전트 API 키(sk_live_...). http 모드는 per-request bearer 가 실인증이라 never-hit fallback |
MCP_TRANSPORT |
stdio(기본·로컬) | http(Cloud Run 호스팅) |
MCP_ALLOWED_HOSTS |
http 모드 DNS-rebinding 보호 호스트 화이트리스트(comma·exact). 비우면 보호 OFF(bearer+TLS 가 실보안) |
Cloud Run 호스팅 배포
| 환경 | 스크립트 | 서비스 | MCP_ALLOWED_HOSTS |
|---|---|---|---|
| dev | scripts/deploy_mcp_dev.sh |
sprintable-mcp-dev |
(비움·보호 OFF) |
| prod | scripts/deploy_mcp_prod.sh |
sprintable-mcp-prod |
sprintable-mcp-prod-787818285179.asia-northeast3.run.app,mcp.sprintable.ai(exact·보호 ON·다중) |
- 동일 backend 이미지를
python -m sprintable_mcpcommand override 로 구동(별 빌드 0). - gcloud 배포 실행은 PO 전담(인프라 lane). 스크립트는 PR 리뷰 대상.
- prod
AGENT_API_KEY는 Secret Manager 참조(AGENT_API_KEY_SECRET=<secret-name>)·값 노출 0. 미지정 시 per-request-bearer placeholder 로 폴백(http 모드 실인증=per-request bearer). - 온보딩 config: prod 백엔드에
MCP_PUBLIC_URL(=https://mcp.sprintable.ai/mcp깔끔 도메인) 설정 시 온보딩 응답mcp_config가 streamable-http(type:"http"+Bearer)로 생성(미설정=dev localhost SSE).
고객 facing 깔끔 도메인(mcp.sprintable.ai)
raw Cloud Run URL 대신 고객엔 https://mcp.sprintable.ai/mcp 노출. CF route/Worker proxy 패턴(app.sprintable.ai
와 동일·Cloud Run domain-mapping 미사용·cf-ray 확認). additive — raw run.app origin 유지하며 깔끔 도메인 추가.
- MCP_ALLOWED_HOSTS additive: run.app(오리진) +
mcp.sprintable.ai(CF 가 원본 Host 전달 시 421 방지·S2 DNS-rebinding).--set-env-vars가 comma 로 항목 구분하므로 다중 host 값은^##^커스텀 구분자로 escape. - PO 마무리: ①CF zone DNS(mcp 서브도메인 → run.app origin·가능하면 origin Host=run.app override) ②게이트웨이
재배포 또는
gcloud run services update sprintable-mcp-prod --update-env-vars="^##^MCP_ALLOWED_HOSTS=run.app,mcp.sprintable.ai"③prod 백엔드MCP_PUBLIC_URL=https://mcp.sprintable.ai/mcp--update-env-vars.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sprintable-0.1.0.tar.gz.
File metadata
- Download URL: sprintable-0.1.0.tar.gz
- Upload date:
- Size: 38.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d50d1cd3796226a8dffdf640c5faeba332dac4b2006a67c9288dc6da69e4e48b
|
|
| MD5 |
eecdb86f38e956b40aa06935db2fcd3f
|
|
| BLAKE2b-256 |
a48f60ccf2d86937dabeef68c3f6786350977ece0be61e94ee245197994a489e
|
Provenance
The following attestation bundles were made for sprintable-0.1.0.tar.gz:
Publisher:
publish-mcp.yml on moonklabs/sprintable
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sprintable-0.1.0.tar.gz -
Subject digest:
d50d1cd3796226a8dffdf640c5faeba332dac4b2006a67c9288dc6da69e4e48b - Sigstore transparency entry: 2098483614
- Sigstore integration time:
-
Permalink:
moonklabs/sprintable@9602d73b328e09cb299b805351e6ca4f0fbdd422 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/moonklabs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-mcp.yml@9602d73b328e09cb299b805351e6ca4f0fbdd422 -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file sprintable-0.1.0-py3-none-any.whl.
File metadata
- Download URL: sprintable-0.1.0-py3-none-any.whl
- Upload date:
- Size: 55.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7471ac3699c519547354547f59d9b38b3eaf488a6b280d509fd4a1fec36b4561
|
|
| MD5 |
b055557048bf6e0a92daad11331e3d18
|
|
| BLAKE2b-256 |
c570b6b5ef8d42fca6bc04d505a05552793a4bce61274fd304eef8d04d531f07
|
Provenance
The following attestation bundles were made for sprintable-0.1.0-py3-none-any.whl:
Publisher:
publish-mcp.yml on moonklabs/sprintable
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
sprintable-0.1.0-py3-none-any.whl -
Subject digest:
7471ac3699c519547354547f59d9b38b3eaf488a6b280d509fd4a1fec36b4561 - Sigstore transparency entry: 2098483907
- Sigstore integration time:
-
Permalink:
moonklabs/sprintable@9602d73b328e09cb299b805351e6ca4f0fbdd422 -
Branch / Tag:
refs/heads/main - Owner: https://github.com/moonklabs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish-mcp.yml@9602d73b328e09cb299b805351e6ca4f0fbdd422 -
Trigger Event:
workflow_dispatch
-
Statement type: