{"_id":"@channel.io/commerce-token-mcp","_rev":"3-0ffc1c17a7db58844ecda75b32e2d1a3","name":"@channel.io/commerce-token-mcp","dist-tags":{"latest":"3.0.0"},"versions":{"2.0.0":{"name":"@channel.io/commerce-token-mcp","version":"2.0.0","_id":"@channel.io/commerce-token-mcp@2.0.0","maintainers":[{"name":"zoyi","email":"eng@channel.io"},{"name":"quino0627","email":"dongwook627@gmail.com"},{"name":"sungik.dev","email":"sungik.dev@gmail.com"}],"dist":{"shasum":"ed1959c0d9cf36167462dc8f3368d77b638937b6","tarball":"https://registry.npmjs.org/@channel.io/commerce-token-mcp/-/commerce-token-mcp-2.0.0.tgz","fileCount":12,"integrity":"sha512-pf6Dmtsnzv+zpC+eZS4C65ZBkjP/1eAf8FC58Q8hpE6VuXN+F7Eo0A/5Tbs2HwP5u/2xB22cR5Gwx6NzXd8mZw==","signatures":[{"sig":"MEUCIGkZmHX9+/J0VQ+u/kOz528O/UneJpIkRI9dYCQJnho0AiEA8p1NN8BkIeE9EfHoGI/ZlpbZzf4HoMPRGjQTmkASZXU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":21057},"main":"src/index.ts","type":"module","_from":"file:channel.io-commerce-token-mcp-2.0.0.tgz","scripts":{"dev":"ts-node src/index.ts","build":"tsc","start":"node dist/index.js"},"_npmUser":{"name":"zoyi","email":"eng@channel.io"},"_resolved":"/tmp/6d5ab7bb2416c3b1449a63a15534db7e/channel.io-commerce-token-mcp-2.0.0.tgz","_integrity":"sha512-pf6Dmtsnzv+zpC+eZS4C65ZBkjP/1eAf8FC58Q8hpE6VuXN+F7Eo0A/5Tbs2HwP5u/2xB22cR5Gwx6NzXd8mZw==","_npmVersion":"10.2.4","description":"이 MCP 서버는 커머스 채널의 accessToken을 안전하게 조회해주는 서비스입니다. 외부망 API 호출 없이 Redash를 통해 DB에서 직접 accessToken을 조회합니다.","directories":{},"_nodeVersion":"20.11.0","dependencies":{"zod":"^3.25.28","axios":"^1.6.7","@modelcontextprotocol/sdk":"*"},"_hasShrinkwrap":false,"devDependencies":{"ts-node":"^10.9.1","tsup-node":"^0.1.0","typescript":"^5.0.0","@types/node":"^22.15.21"},"_npmOperationalInternal":{"tmp":"tmp/commerce-token-mcp_2.0.0_1748853280945_0.1489505033319225","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@channel.io/commerce-token-mcp","version":"3.0.0","_id":"@channel.io/commerce-token-mcp@3.0.0","maintainers":[{"name":"zoyi","email":"eng@channel.io"},{"name":"quino0627","email":"dongwook627@gmail.com"},{"name":"sungik.dev","email":"sungik.dev@gmail.com"}],"bin":{"commerce-token-mcp":"dist/index.js"},"dist":{"shasum":"9dcfbdd2d2be9700f108ef84b8530521f14f2beb","tarball":"https://registry.npmjs.org/@channel.io/commerce-token-mcp/-/commerce-token-mcp-3.0.0.tgz","fileCount":6,"integrity":"sha512-ZS0j+BAw8UyJXG9rcdXjZ7m+R5ff9b/2pjrD4wcuuhry26g+s853IACMVgj6hb5GpRDW8sgJGuHyxv4xHezWcA==","signatures":[{"sig":"MEQCIBCpGWBqQxUySfxKzaFFbyD3oeURCTUJ1djkHU0lZ/qeAiBJS0GKh2WlbL7LLkuVjOLclMvj26iz3b/QBQ4STSWj5Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11905},"main":"dist/index.js","type":"module","_from":"file:channel.io-commerce-token-mcp-3.0.0.tgz","engines":{"node":">=18.0.0"},"scripts":{"dev":"ts-node src/index.ts","lint":"eslint src/**/*.ts","build":"tsc && shx chmod +x dist/index.js","start":"node dist/index.js","lint:fix":"eslint src/**/*.ts --fix","typecheck":"tsc --noEmit"},"_npmUser":{"name":"zoyi","email":"eng@channel.io"},"_resolved":"/tmp/ace4773f155fe4e22fe1290048c765b3/channel.io-commerce-token-mcp-3.0.0.tgz","_integrity":"sha512-ZS0j+BAw8UyJXG9rcdXjZ7m+R5ff9b/2pjrD4wcuuhry26g+s853IACMVgj6hb5GpRDW8sgJGuHyxv4xHezWcA==","_npmVersion":"10.2.4","description":"Commerce Token MCP","directories":{},"_nodeVersion":"20.11.0","dependencies":{"zod":"^3.25.28","axios":"^1.6.7","@modelcontextprotocol/sdk":"*"},"_hasShrinkwrap":false,"devDependencies":{"shx":"^0.3.4","ts-node":"^10.9.1","tsup-node":"^0.1.0","typescript":"^5.0.0","@types/node":"^22.15.21"},"_npmOperationalInternal":{"tmp":"tmp/commerce-token-mcp_3.0.0_1748857590002_0.16335009968543535","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2025-06-02T08:34:40.863Z","modified":"2026-01-26T12:56:50.872Z","2.0.0":"2025-06-02T08:34:41.124Z","3.0.0":"2025-06-02T09:46:30.266Z"},"description":"Commerce Token MCP","maintainers":[{"email":"polar@channel.io","name":"polarshin"},{"email":"eng@channel.io","name":"zoyi"},{"email":"dongwook627@gmail.com","name":"quino0627"},{"email":"sungik.dev@gmail.com","name":"sungik.dev"}],"readme":"# Commerce Token MCP\n\n이 MCP 서버는 커머스 채널의 accessToken을 안전하게 조회해주는 서비스입니다. 외부망 API 호출 없이 Redash를 통해 DB에서 직접 accessToken을 조회합니다.\n\n## 주요 특징\n\n- **Redash 기반**: 외부망 API가 아닌 내부 DB를 Redash로 직접 조회\n- **파라미터 최소화**: `channelId`, `env`만 입력하면 됨\n- **자동 타입 분기**: `channel.channels` 테이블에서 `app_commerce_type`을 조회하여 shopify/shopby 등 자동 분기\n- **확장성**: 새로운 커머스 타입 추가 시 분기만 추가하면 됨\n\n---\n\n## 환경 변수\n\n아래 환경변수들이 반드시 필요합니다:\n\n| 변수명                       | 설명                                             |\n| ---------------------------- | ------------------------------------------------ |\n| `REDASH_API_KEY`             | Redash API Key                                   |\n| `REDASH_BASE_URL`            | Redash 서버 URL (예: https://redash.example.com) |\n| `REDASH_DATA_SOURCE_ID_PSQL` | Redash에서 사용하는 데이터소스 ID (숫자)         |\n\n`.env` 예시:\n\n```env\nREDASH_API_KEY=your_redash_api_key\nREDASH_BASE_URL=https://redash.example.com\nREDASH_DATA_SOURCE_ID_PSQL=1\n```\n\n---\n\n## 사용 방법\n\n1. MCP 서버 실행 (빌드 후):\n\n   ```sh\n   pnpm build\n   node dist/index.js\n   ```\n\n2. MCP Tool 호출 시 파라미터 예시:\n\n   ```json\n   {\n     \"channelId\": \"your_channel_id\",\n     \"env\": \"exp\" // 또는 \"prod\"\n   }\n   ```\n\n3. 동작 방식:\n   - `channelId`, `env`를 입력받음\n   - 내부적으로 `channel.channels`(또는 `channel_exp.channels`)에서 `app_commerce_type`을 조회\n   - 타입이 `appShopify`면 shopify 테이블에서, `appShopby`면 shopby 테이블에서 accessToken을 조회\n   - accessToken을 반환\n\n---\n\n## 예시 쿼리 구조\n\n- **app_commerce_type 조회**\n\n  ```sql\n  SELECT app_commerce_type FROM channel.channels WHERE id = '{channelId}';\n  ```\n\n  (env가 exp면 `channel_exp.channels`)\n\n- **accessToken 조회**\n  - Shopify:\n    ```sql\n    SELECT access_token FROM channel.app_shopifies WHERE channel_id = '{channelId}';\n    ```\n    (env가 exp면 `channel_exp.app_shopifies`)\n  - Shopby:\n    ```sql\n    SELECT access_token FROM app_commerce.app_shopbies WHERE channel_id = '{channelId}';\n    ```\n    (env가 exp면 `app_commerce_exp.app_shopbies`)\n\n---\n\n## 확장/유지보수\n\n- 새로운 커머스 타입이 추가될 경우, `tokenService.ts`에 분기만 추가하면 됩니다.\n- 환경변수 및 DB 구조가 바뀌면 `utils/config.ts`와 쿼리 로직만 수정하면 됩니다.\n\n---\n\n## 개발 및 테스트\n\n- 타입 안정성을 위해 `EnvType`(`\"exp\" | \"prod\"`)을 사용합니다.\n- 모든 주요 로직은 `src/services/tokenService.ts`에 구현되어 있습니다.\n- Redash 쿼리 실행 유틸은 `src/services/redash.service.ts`에 위치합니다.\n\n---\n\n## 문의/기여\n\n- Channel 팀 내부 MCP 도구로, 외부 공개용이 아닙니다.\n- 개선/문의는 Channel 플랫폼팀에 문의하세요.\n","readmeFilename":"README.md"}