Borrowing it
Nothing to install: this file belongs to whchoi98/seoul-opendata-mcp. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/whchoi98/seoul-opendata-mcp/main/.claude/commands/deploy.mdgit clone --depth 1 https://github.com/whchoi98/seoul-opendata-mcpWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/commands/whchoi98/seoul-opendata-mcp/deploy)<a href="https://agentmods.dev/commands/whchoi98/seoul-opendata-mcp/deploy"><img src="https://agentmods.dev/badge/commands/whchoi98/seoul-opendata-mcp/deploy/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/commands/whchoi98/seoul-opendata-mcp/deploy"><img src="https://agentmods.dev/badge/commands/whchoi98/seoul-opendata-mcp/deploy.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00020 | $0.01086 |
| Opus 5 | $0.00010 | $0.00543 |
| Sonnet 5 | $0.00004 | $0.00217 |
| Haiku 4.5 | $0.00002 | $0.00109 |
Grade A, and why
deploy scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 122 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Deploy
애플리케이션을 빌드하고 배포합니다.
Step 1: 배포 전 체크
- 워킹 트리가 깨끗한지 확인:
git status - 현재 브랜치 확인 (main이 아니면 경고)
- 모든 테스트 통과 확인:
npm test - 배포 runbook 확인:
ls docs/runbooks/deploy-*.md
Step 2: 배포 전 준비 (seoul-opendata-mcp 특화)
버전 동기화 확인
배포 전 3곳 버전이 일치해야 합니다:
- package.json의 version 필드
- manifest.json의 version 필드
- README.md / README.ko.md의 버전 참조
Live 테스트 실행 (권장)
RUN_LIVE=true npm test
실제 Seoul Open Data API 응답으로 엔드투엔드 검증합니다.
API 키 마스킹 확인
배포되는 코드에 다음이 없는지 확인:
- 하드코딩된 SEOUL_API_KEY 또는 SEOUL_SUBWAY_API_KEY
- .env 파일 커밋
- 테스트 출력에서의 실제 키
Step 3: 빌드 및 번들
npm run build
npm run bundle
빌드 결과 확인:
dist/디렉토리 생성seoul-opendata-mcp.mcpb파일 생성 (MCPB 번들)
번들 실행 스모크 (필수 — 파일 존재 확인만으로는 부족): 번들을 임시 디렉토리에 언팩한 뒤 실제로 실행해 tools/list가 19개를 반환하는지 확인한다. v0.2.0에서 .mcpbignore의 비앵커 src/ 패턴이 의존성 내부 node_modules/*/src/까지 제거해, 파일 검사는 통과했지만 실행 즉시 죽는 번들이 배포된 사례가 있다(ignore 패턴은 반드시 /src/처럼 루트 앵커로 쓸 것).
npx @anthropic-ai/mcpb unpack seoul-opendata-mcp.mcpb /tmp/bundle-smoke
cd /tmp/bundle-smoke && printf '%s\n' \
'{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"smoke","version":"0"}}}' \
'{"jsonrpc":"2.0","method":"notifications/initialized"}' \
'{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
| node dist/index.js | tail -1 | grep -o '"name"' | wc -l # 19이어야 함
Step 4: npm에 발행
npm publish
발행이 성공하면:
- npm 레지스트리에 패키지 업로드
- git 태그 푸시 (리포지토리 관리자가 수행)
Step 5: 검증
배포 후:
- npm 페이지 확인:
https://www.npmjs.com/package/seoul-opendata-mcp - MCPB 번들 크기 확인 (이상적: <5MB)
- 설치 테스트:
npm install -g seoul-opendata-mcp
Step 6: 요약
표시합니다:
- 배포된 것과 장소
- 사용된 배포 방법
- 검증 결과
- 배포 runbook이 없으면 생성을 제안
Error Recovery
Step 1 배포 전 체크 실패 시
git stash -u # 커밋되지 않은 변경사항 임시 저장
git checkout main # main 브랜치로 전환
Step 2 버전 동기화 오류 시
# 현재 버전 확인
npm pkg get version
# 모든 파일이 같은 버전을 가지도록 수정
# package.json, manifest.json, README.md, README.ko.md
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 9d ago First seen · 122 lines · 20 tokens per session scan A 0e0ca265792b
deploy is a command published in the GitHub repository whchoi98/seoul-opendata-mcp (1 stars, last pushed 24d ago), licensed MIT. It adds 20 tokens to every session and 1,086 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other commands, from other repositories
cost-optimize
You are a cloud cost optimization expert specializing in reducing infrastructure expenses while maintaining performance and reliability. Analyze cloud spending, identify savings opportunities, and implement cost-effective architectures across AWS, Azure, GCP, and OCI. Where provider-specific code appears below, adapt…
deploy
Deploy a frontend (React, Next.js, or static HTML) to a live URL on Butterbase.
integrate
Set up third-party service integrations.
env
Manage Vercel environment variables. Commands include list, pull, add, remove, and diff. Use to sync environment variables between Vercel and your local development environment.
scan
Scan AWS account for cost optimization.
finops-feedback
Step 5 (Feedback Loop & Celebration) — measure realized against projected savings, compute a labelled Cloud Entropy proxy, close the opportunity, and emit at least one new idea or policy update so the loop actually closes. Applies the double-loop gate. Mutates on the closure path.