microcms-mcp-server 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +142 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +112 -25
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +117 -28
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +293 -48
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +24 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +146 -2
- package/dist/config.js.map +1 -1
- package/dist/index.js +31 -2
- package/dist/index.js.map +1 -1
- package/dist/server.d.ts +8 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +183 -153
- package/dist/server.js.map +1 -1
- package/dist/tools/create-content-draft.d.ts +2 -2
- package/dist/tools/create-content-draft.d.ts.map +1 -1
- package/dist/tools/create-content-draft.js +7 -3
- package/dist/tools/create-content-draft.js.map +1 -1
- package/dist/tools/create-content-published.d.ts +2 -2
- package/dist/tools/create-content-published.d.ts.map +1 -1
- package/dist/tools/create-content-published.js +7 -3
- package/dist/tools/create-content-published.js.map +1 -1
- package/dist/tools/create-contents-bulk.d.ts +4 -4
- package/dist/tools/create-contents-bulk.d.ts.map +1 -1
- package/dist/tools/create-contents-bulk.js +14 -6
- package/dist/tools/create-contents-bulk.js.map +1 -1
- package/dist/tools/delete-content.d.ts +2 -2
- package/dist/tools/delete-content.d.ts.map +1 -1
- package/dist/tools/delete-content.js +6 -2
- package/dist/tools/delete-content.js.map +1 -1
- package/dist/tools/delete-media.d.ts +2 -2
- package/dist/tools/delete-media.d.ts.map +1 -1
- package/dist/tools/delete-media.js +6 -2
- package/dist/tools/delete-media.js.map +1 -1
- package/dist/tools/get-api-info.d.ts +2 -2
- package/dist/tools/get-api-info.d.ts.map +1 -1
- package/dist/tools/get-api-info.js +6 -2
- package/dist/tools/get-api-info.js.map +1 -1
- package/dist/tools/get-apis-list.d.ts +2 -2
- package/dist/tools/get-apis-list.d.ts.map +1 -1
- package/dist/tools/get-apis-list.js +9 -4
- package/dist/tools/get-apis-list.js.map +1 -1
- package/dist/tools/get-content-meta.d.ts +2 -2
- package/dist/tools/get-content-meta.d.ts.map +1 -1
- package/dist/tools/get-content-meta.js +6 -2
- package/dist/tools/get-content-meta.js.map +1 -1
- package/dist/tools/get-content.d.ts +2 -2
- package/dist/tools/get-content.d.ts.map +1 -1
- package/dist/tools/get-content.js +6 -2
- package/dist/tools/get-content.js.map +1 -1
- package/dist/tools/get-list-meta.d.ts +2 -2
- package/dist/tools/get-list-meta.d.ts.map +1 -1
- package/dist/tools/get-list-meta.js +6 -2
- package/dist/tools/get-list-meta.js.map +1 -1
- package/dist/tools/get-list.d.ts +2 -2
- package/dist/tools/get-list.d.ts.map +1 -1
- package/dist/tools/get-list.js +6 -2
- package/dist/tools/get-list.js.map +1 -1
- package/dist/tools/get-media.d.ts +2 -2
- package/dist/tools/get-media.d.ts.map +1 -1
- package/dist/tools/get-media.js +9 -4
- package/dist/tools/get-media.js.map +1 -1
- package/dist/tools/get-member.d.ts +2 -2
- package/dist/tools/get-member.d.ts.map +1 -1
- package/dist/tools/get-member.js +6 -2
- package/dist/tools/get-member.js.map +1 -1
- package/dist/tools/get-services.d.ts +19 -0
- package/dist/tools/get-services.d.ts.map +1 -0
- package/dist/tools/get-services.js +48 -0
- package/dist/tools/get-services.js.map +1 -0
- package/dist/tools/patch-content-created-by.d.ts +2 -2
- package/dist/tools/patch-content-created-by.d.ts.map +1 -1
- package/dist/tools/patch-content-created-by.js +10 -3
- package/dist/tools/patch-content-created-by.js.map +1 -1
- package/dist/tools/patch-content-status.d.ts +2 -2
- package/dist/tools/patch-content-status.d.ts.map +1 -1
- package/dist/tools/patch-content-status.js +6 -2
- package/dist/tools/patch-content-status.js.map +1 -1
- package/dist/tools/patch-content.d.ts +2 -2
- package/dist/tools/patch-content.d.ts.map +1 -1
- package/dist/tools/patch-content.js +8 -3
- package/dist/tools/patch-content.js.map +1 -1
- package/dist/tools/update-content-draft.d.ts +2 -2
- package/dist/tools/update-content-draft.d.ts.map +1 -1
- package/dist/tools/update-content-draft.js +7 -3
- package/dist/tools/update-content-draft.js.map +1 -1
- package/dist/tools/update-content-published.d.ts +2 -2
- package/dist/tools/update-content-published.d.ts.map +1 -1
- package/dist/tools/update-content-published.js +7 -3
- package/dist/tools/update-content-published.js.map +1 -1
- package/dist/tools/upload-media.d.ts +2 -2
- package/dist/tools/upload-media.d.ts.map +1 -1
- package/dist/tools/upload-media.js +12 -6
- package/dist/tools/upload-media.js.map +1 -1
- package/dist/transport/http.d.ts +4 -0
- package/dist/transport/http.d.ts.map +1 -0
- package/dist/transport/http.js +63 -0
- package/dist/transport/http.js.map +1 -0
- package/dist/transport/index.d.ts +4 -0
- package/dist/transport/index.d.ts.map +1 -0
- package/dist/transport/index.js +12 -0
- package/dist/transport/index.js.map +1 -0
- package/dist/transport/stdio.d.ts +3 -0
- package/dist/transport/stdio.d.ts.map +1 -0
- package/dist/transport/stdio.js +6 -0
- package/dist/transport/stdio.js.map +1 -0
- package/dist/types.d.ts +78 -2
- package/dist/types.d.ts.map +1 -1
- package/package.json +11 -8
- package/dist/tools/get-contents-list-management.d.ts +0 -5
- package/dist/tools/get-contents-list-management.d.ts.map +0 -1
- package/dist/tools/get-contents-list-management.js +0 -39
- package/dist/tools/get-contents-list-management.js.map +0 -1
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@ Claude Desktopに導入する場合、mcpbファイルを使って簡単にイ
|
|
|
17
17
|
2. ダウンロードしたmcpbファイルをダブルクリックで開く
|
|
18
18
|
3. サービスIDとAPIキーを設定する
|
|
19
19
|
|
|
20
|
-
### 方法2: npx
|
|
20
|
+
### 方法2: npx をつかう(単一サービス)
|
|
21
21
|
|
|
22
22
|
```json
|
|
23
23
|
{
|
|
@@ -38,6 +38,43 @@ Claude Desktopに導入する場合、mcpbファイルを使って簡単にイ
|
|
|
38
38
|
|
|
39
39
|
設定更新後はクライアントを再起動してください。
|
|
40
40
|
|
|
41
|
+
### 方法3: 複数サービスを使う
|
|
42
|
+
|
|
43
|
+
複数のmicroCMSサービスに接続する場合は、`MICROCMS_SERVICES` 環境変数にJSON形式でサービス情報を設定します。
|
|
44
|
+
|
|
45
|
+
```json
|
|
46
|
+
{
|
|
47
|
+
"mcpServers": {
|
|
48
|
+
"microcms-multi": {
|
|
49
|
+
"command": "npx",
|
|
50
|
+
"args": ["-y", "microcms-mcp-server@latest"],
|
|
51
|
+
"env": {
|
|
52
|
+
"MICROCMS_SERVICES": "[{\"id\":\"blog\",\"apiKey\":\"xxx-api-key\"},{\"id\":\"shop\",\"apiKey\":\"yyy-api-key\"}]"
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
#### 複数サービスモードの動作
|
|
60
|
+
|
|
61
|
+
複数サービスモードでは、各ツールに `serviceId` パラメータが必須になります。
|
|
62
|
+
|
|
63
|
+
- ツール名は単一サービスモードと同じ `microcms_*` 形式です
|
|
64
|
+
- 各ツール呼び出し時に `serviceId` を指定してサービスを選択します
|
|
65
|
+
- 設定済みサービスの一覧は `microcms_get_services` ツールで確認できます
|
|
66
|
+
- MCPリソース `microcms://services` からも同様の情報を取得できます
|
|
67
|
+
|
|
68
|
+
#### 後方互換性
|
|
69
|
+
|
|
70
|
+
| 設定方法 | モード | serviceIdパラメータ |
|
|
71
|
+
|---------|-------|-------------------|
|
|
72
|
+
| `MICROCMS_SERVICE_ID` + `MICROCMS_API_KEY` | 単一サービス | 省略可(自動でデフォルトサービスを使用) |
|
|
73
|
+
| `MICROCMS_SERVICES` (JSON) | 複数サービス | 必須 |
|
|
74
|
+
|
|
75
|
+
- 従来の環境変数設定をそのまま使う場合、serviceIdを指定せずに今まで通り動作します
|
|
76
|
+
- 両方の設定が存在する場合、`MICROCMS_SERVICES` が優先されます
|
|
77
|
+
|
|
41
78
|
## 利用方法
|
|
42
79
|
|
|
43
80
|
microCMSのコンテンツを確認する
|
|
@@ -68,6 +105,110 @@ microCMSのメディア一覧に画像をアップロードする
|
|
|
68
105
|
- https://example.com/sample-image-3.png
|
|
69
106
|
```
|
|
70
107
|
|
|
108
|
+
### 複数サービスモードでの使用例
|
|
109
|
+
|
|
110
|
+
複数サービスモードでは、サービスIDを指定して各サービスを操作できます。
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
blogサービスの記事一覧を取得して
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
shopサービスに新しい商品を追加して
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
```
|
|
121
|
+
blogの最新記事をshopの商品説明にコピーして
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
#### サービス一覧の確認
|
|
125
|
+
|
|
126
|
+
`microcms://services` リソースを読み取ることで、設定済みサービスと各サービスのAPI(エンドポイント)一覧を確認できます。AIエージェントはこの情報を使って、指定されたendpointがどのサービスに属するか判断できます。
|
|
127
|
+
|
|
128
|
+
```json
|
|
129
|
+
{
|
|
130
|
+
"mode": "multi",
|
|
131
|
+
"description": "Multi service mode - serviceId parameter is required for all tools. Use the serviceId that contains the endpoint you need.",
|
|
132
|
+
"services": [
|
|
133
|
+
{
|
|
134
|
+
"id": "blog",
|
|
135
|
+
"apis": [
|
|
136
|
+
{ "name": "ブログ記事", "endpoint": "blogs", "type": "list" },
|
|
137
|
+
{ "name": "カテゴリー", "endpoint": "categories", "type": "list" }
|
|
138
|
+
]
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"id": "shop",
|
|
142
|
+
"apis": [
|
|
143
|
+
{ "name": "商品", "endpoint": "products", "type": "list" },
|
|
144
|
+
{ "name": "注文", "endpoint": "orders", "type": "list" }
|
|
145
|
+
]
|
|
146
|
+
}
|
|
147
|
+
]
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### 方法4: リモートMCPサーバー(HTTP)として使う
|
|
152
|
+
|
|
153
|
+
HTTPトランスポートを使って、リモートMCPサーバーとして起動できます。チームメンバーや外部ツールから共有利用する場合に便利です。
|
|
154
|
+
|
|
155
|
+
#### サーバー側の起動
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
# 単一サービス
|
|
159
|
+
MICROCMS_SERVICE_ID=my-blog \
|
|
160
|
+
MICROCMS_API_KEY=your-api-key \
|
|
161
|
+
MCP_TRANSPORT=http \
|
|
162
|
+
MCP_AUTH_TOKEN=my-shared-secret \
|
|
163
|
+
npx microcms-mcp-server
|
|
164
|
+
|
|
165
|
+
# 複数サービス
|
|
166
|
+
MICROCMS_SERVICES='[{"id":"blog","apiKey":"key1"},{"id":"shop","apiKey":"key2"}]' \
|
|
167
|
+
MCP_TRANSPORT=http \
|
|
168
|
+
MCP_AUTH_TOKEN=my-shared-secret \
|
|
169
|
+
npx microcms-mcp-server
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
#### クライアント側の設定(mcp-remote経由)
|
|
173
|
+
|
|
174
|
+
```json
|
|
175
|
+
{
|
|
176
|
+
"mcpServers": {
|
|
177
|
+
"microcms-remote": {
|
|
178
|
+
"command": "npx",
|
|
179
|
+
"args": [
|
|
180
|
+
"-y", "mcp-remote",
|
|
181
|
+
"http://your-server:3000/mcp",
|
|
182
|
+
"--header", "Authorization:Bearer my-shared-secret"
|
|
183
|
+
]
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
#### Dockerで起動
|
|
190
|
+
|
|
191
|
+
```bash
|
|
192
|
+
# ビルド
|
|
193
|
+
docker build -t microcms-mcp .
|
|
194
|
+
|
|
195
|
+
# 起動
|
|
196
|
+
MCP_AUTH_TOKEN=my-secret \
|
|
197
|
+
MICROCMS_SERVICES='[{"id":"blog","apiKey":"key1"}]' \
|
|
198
|
+
docker compose up -d
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
> 📖 Docker を使ったセットアップ、クライアント別の接続設定、トラブルシューティングの詳細は [DOCKER.md](./DOCKER.md) を参照してください。
|
|
202
|
+
|
|
203
|
+
#### CLIオプション
|
|
204
|
+
|
|
205
|
+
| オプション | 環境変数 | デフォルト | 説明 |
|
|
206
|
+
|-----------|---------|-----------|------|
|
|
207
|
+
| `--transport` | `MCP_TRANSPORT` | `stdio` | トランスポートモード(`stdio` または `http`) |
|
|
208
|
+
| `--port` | `MCP_HTTP_PORT` | `3000` | HTTPサーバーのポート番号 |
|
|
209
|
+
| `--host` | `MCP_HTTP_HOST` | `0.0.0.0` | HTTPサーバーのホスト |
|
|
210
|
+
| - | `MCP_AUTH_TOKEN` | - | Bearer認証トークン(設定時のみ認証が有効) |
|
|
211
|
+
|
|
71
212
|
### より詳しい使い方
|
|
72
213
|
|
|
73
214
|
以下の記事でより詳しい使い方を紹介しています。
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAOA,wBAAgB,QAAQ,SA0FvB;AAED,wBAAsB,MAAM,kBAuG3B"}
|
package/dist/cli.js
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
import { readFileSync } from 'node:fs';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
2
5
|
import { parseArgs } from 'node:util';
|
|
3
6
|
export function showHelp() {
|
|
4
7
|
console.log(`
|
|
@@ -10,33 +13,81 @@ Usage:
|
|
|
10
13
|
npx microcms-mcp-server [options]
|
|
11
14
|
|
|
12
15
|
Options:
|
|
13
|
-
--service-id <service-id> microCMS service ID (
|
|
14
|
-
--api-key <key> microCMS API key (
|
|
16
|
+
--service-id <service-id> microCMS service ID (for single service mode)
|
|
17
|
+
--api-key <key> microCMS API key (for single service mode)
|
|
18
|
+
--transport <mode> Transport mode: "stdio" (default) or "http"
|
|
19
|
+
--port <port> HTTP server port (default: 3000)
|
|
20
|
+
--host <host> HTTP server host (default: 0.0.0.0)
|
|
15
21
|
--help Show this help message
|
|
16
22
|
--version Show version information
|
|
17
23
|
|
|
18
24
|
Environment Variables:
|
|
19
|
-
|
|
20
|
-
|
|
25
|
+
Single service mode:
|
|
26
|
+
MICROCMS_SERVICE_ID Service ID
|
|
27
|
+
MICROCMS_API_KEY API key
|
|
28
|
+
|
|
29
|
+
Multi service mode:
|
|
30
|
+
MICROCMS_SERVICES JSON array of services
|
|
31
|
+
Example: '[{"id":"blog","apiKey":"xxx"},{"id":"shop","apiKey":"yyy"}]'
|
|
32
|
+
|
|
33
|
+
Transport:
|
|
34
|
+
MCP_TRANSPORT Transport mode: "stdio" or "http"
|
|
35
|
+
MCP_HTTP_PORT HTTP server port
|
|
36
|
+
MCP_HTTP_HOST HTTP server host
|
|
37
|
+
|
|
38
|
+
Authentication (HTTP mode):
|
|
39
|
+
MCP_AUTH_TOKEN Bearer token for HTTP authentication
|
|
21
40
|
|
|
22
41
|
Examples:
|
|
42
|
+
# Local single service (stdio, default)
|
|
23
43
|
npx microcms-mcp-server --service-id my-blog --api-key your-key
|
|
24
|
-
|
|
25
|
-
#
|
|
26
|
-
export
|
|
27
|
-
export MICROCMS_API_KEY=your-key
|
|
44
|
+
|
|
45
|
+
# Local multi service (stdio)
|
|
46
|
+
export MICROCMS_SERVICES='[{"id":"blog","apiKey":"xxx"},{"id":"shop","apiKey":"yyy"}]'
|
|
28
47
|
npx microcms-mcp-server
|
|
29
48
|
|
|
30
|
-
|
|
49
|
+
# Remote single service (HTTP)
|
|
50
|
+
npx microcms-mcp-server --service-id my-blog --api-key xxx --transport http --port 3000
|
|
51
|
+
|
|
52
|
+
# Remote multi service (HTTP with auth)
|
|
53
|
+
MCP_AUTH_TOKEN=my-secret npx microcms-mcp-server --transport http
|
|
54
|
+
|
|
55
|
+
Claude Desktop Configuration (Single Service, stdio):
|
|
56
|
+
{
|
|
57
|
+
"mcpServers": {
|
|
58
|
+
"microcms": {
|
|
59
|
+
"command": "npx",
|
|
60
|
+
"args": ["-y", "microcms-mcp-server"],
|
|
61
|
+
"env": {
|
|
62
|
+
"MICROCMS_SERVICE_ID": "your-service-id",
|
|
63
|
+
"MICROCMS_API_KEY": "your-api-key"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
Claude Desktop Configuration (Multi Service, stdio):
|
|
31
70
|
{
|
|
32
71
|
"mcpServers": {
|
|
33
72
|
"microcms": {
|
|
73
|
+
"command": "npx",
|
|
74
|
+
"args": ["-y", "microcms-mcp-server"],
|
|
75
|
+
"env": {
|
|
76
|
+
"MICROCMS_SERVICES": "[{\\"id\\":\\"blog\\",\\"apiKey\\":\\"xxx\\"},{\\"id\\":\\"shop\\",\\"apiKey\\":\\"yyy\\"}]"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
Claude Desktop Configuration (Remote via mcp-remote):
|
|
83
|
+
{
|
|
84
|
+
"mcpServers": {
|
|
85
|
+
"microcms-remote": {
|
|
34
86
|
"command": "npx",
|
|
35
87
|
"args": [
|
|
36
|
-
"-y",
|
|
37
|
-
"
|
|
38
|
-
"--
|
|
39
|
-
"--api-key", "your-api-key"
|
|
88
|
+
"-y", "mcp-remote",
|
|
89
|
+
"http://your-server:3000/mcp",
|
|
90
|
+
"--header", "Authorization:Bearer my-shared-secret"
|
|
40
91
|
]
|
|
41
92
|
}
|
|
42
93
|
}
|
|
@@ -45,7 +96,7 @@ Claude Desktop Configuration:
|
|
|
45
96
|
}
|
|
46
97
|
export async function runCli() {
|
|
47
98
|
try {
|
|
48
|
-
const { values
|
|
99
|
+
const { values } = parseArgs({
|
|
49
100
|
args: process.argv.slice(2),
|
|
50
101
|
options: {
|
|
51
102
|
'service-id': {
|
|
@@ -56,10 +107,25 @@ export async function runCli() {
|
|
|
56
107
|
type: 'string',
|
|
57
108
|
short: 'k',
|
|
58
109
|
},
|
|
59
|
-
|
|
110
|
+
transport: {
|
|
111
|
+
type: 'string',
|
|
112
|
+
short: 't',
|
|
113
|
+
},
|
|
114
|
+
port: {
|
|
115
|
+
type: 'string',
|
|
116
|
+
short: 'p',
|
|
117
|
+
},
|
|
118
|
+
host: {
|
|
119
|
+
type: 'string',
|
|
120
|
+
},
|
|
121
|
+
help: {
|
|
60
122
|
type: 'boolean',
|
|
61
123
|
short: 'h',
|
|
62
|
-
}
|
|
124
|
+
},
|
|
125
|
+
version: {
|
|
126
|
+
type: 'boolean',
|
|
127
|
+
short: 'v',
|
|
128
|
+
},
|
|
63
129
|
},
|
|
64
130
|
allowPositionals: true,
|
|
65
131
|
});
|
|
@@ -67,27 +133,48 @@ export async function runCli() {
|
|
|
67
133
|
showHelp();
|
|
68
134
|
process.exit(0);
|
|
69
135
|
}
|
|
70
|
-
|
|
136
|
+
if (values.version) {
|
|
137
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
138
|
+
const pkg = JSON.parse(readFileSync(join(__dirname, '..', 'package.json'), 'utf-8'));
|
|
139
|
+
console.log(`microcms-mcp-server v${pkg.version}`);
|
|
140
|
+
process.exit(0);
|
|
141
|
+
}
|
|
142
|
+
// Set CLI args as env vars (for config.ts to consume)
|
|
71
143
|
if (values['service-id']) {
|
|
72
144
|
process.env.MICROCMS_SERVICE_ID = values['service-id'];
|
|
73
145
|
}
|
|
74
146
|
if (values['api-key']) {
|
|
75
147
|
process.env.MICROCMS_API_KEY = values['api-key'];
|
|
76
148
|
}
|
|
77
|
-
|
|
78
|
-
|
|
149
|
+
if (values.transport) {
|
|
150
|
+
process.env.MCP_TRANSPORT = values.transport;
|
|
151
|
+
}
|
|
152
|
+
if (values.port) {
|
|
153
|
+
process.env.MCP_HTTP_PORT = values.port;
|
|
154
|
+
}
|
|
155
|
+
if (values.host) {
|
|
156
|
+
process.env.MCP_HTTP_HOST = values.host;
|
|
157
|
+
}
|
|
158
|
+
// Validate service configuration
|
|
159
|
+
const hasMultiServiceConfig = !!process.env.MICROCMS_SERVICES;
|
|
160
|
+
const hasSingleServiceConfig = !!(process.env.MICROCMS_SERVICE_ID && process.env.MICROCMS_API_KEY);
|
|
161
|
+
if (!hasMultiServiceConfig && !hasSingleServiceConfig) {
|
|
79
162
|
console.error('Error: microCMS credentials are required.');
|
|
80
163
|
console.error('');
|
|
81
164
|
console.error('Provide them via:');
|
|
82
|
-
console.error('
|
|
83
|
-
console.error('
|
|
165
|
+
console.error(' Single service mode:');
|
|
166
|
+
console.error(' --service-id <service-id> --api-key <key>');
|
|
167
|
+
console.error(' or environment variables MICROCMS_SERVICE_ID and MICROCMS_API_KEY');
|
|
168
|
+
console.error('');
|
|
169
|
+
console.error(' Multi service mode:');
|
|
170
|
+
console.error(' environment variable MICROCMS_SERVICES (JSON array)');
|
|
171
|
+
console.error(' Example: MICROCMS_SERVICES=\'[{"id":"blog","apiKey":"xxx"}]\'');
|
|
84
172
|
console.error('');
|
|
85
173
|
console.error('Run with --help for more information.');
|
|
86
174
|
process.exit(1);
|
|
87
175
|
}
|
|
88
|
-
//
|
|
89
|
-
|
|
90
|
-
await startServer();
|
|
176
|
+
// Import index.ts which auto-runs main()
|
|
177
|
+
await import('./index.js');
|
|
91
178
|
}
|
|
92
179
|
catch (error) {
|
|
93
180
|
if (error instanceof Error) {
|
|
@@ -99,7 +186,7 @@ export async function runCli() {
|
|
|
99
186
|
process.exit(1);
|
|
100
187
|
}
|
|
101
188
|
}
|
|
102
|
-
//
|
|
189
|
+
// Run if executed directly
|
|
103
190
|
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
104
191
|
runCli();
|
|
105
192
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -1,57 +1,146 @@
|
|
|
1
|
-
import { MicroCMSQueries } from 'microcms-js-sdk';
|
|
2
|
-
import type { MicroCMSContent, MicroCMSListResponse } from './types.js';
|
|
1
|
+
import { createClient, createManagementClient, type MicroCMSQueries } from 'microcms-js-sdk';
|
|
2
|
+
import type { ApiInfo, ApiListResponse, AppConfig, ContentMeta, ContentMetaListResponse, MediaListResponse, MediaUploadResponse, MemberInfo, MicroCMSContent, MicroCMSListResponse, ServiceInfo } from './types.js';
|
|
3
|
+
type ContentClient = ReturnType<typeof createClient>;
|
|
4
|
+
type ManagementClient = ReturnType<typeof createManagementClient>;
|
|
5
|
+
interface ServiceClients {
|
|
6
|
+
client: ContentClient;
|
|
7
|
+
managementClient: ManagementClient;
|
|
8
|
+
serviceDomain: string;
|
|
9
|
+
apiKey: string;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Initialize clients based on configuration.
|
|
13
|
+
* Call this once at server startup.
|
|
14
|
+
*/
|
|
15
|
+
export declare function initializeClients(): AppConfig;
|
|
16
|
+
/**
|
|
17
|
+
* Get current app configuration
|
|
18
|
+
*/
|
|
19
|
+
export declare function getAppConfig(): AppConfig;
|
|
20
|
+
/**
|
|
21
|
+
* Get all registered service IDs
|
|
22
|
+
*/
|
|
23
|
+
export declare function getServiceIds(): string[];
|
|
24
|
+
/**
|
|
25
|
+
* Check if a service is registered
|
|
26
|
+
*/
|
|
27
|
+
export declare function hasService(serviceId: string): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Get clients for a specific service.
|
|
30
|
+
* In single-service mode, serviceId is optional and defaults to the configured service.
|
|
31
|
+
* In multi-service mode, serviceId is required.
|
|
32
|
+
* Automatically initializes clients if not already done (lazy initialization).
|
|
33
|
+
*/
|
|
34
|
+
export declare function getClientsForService(serviceId?: string): ServiceClients;
|
|
3
35
|
export declare const microCMSClient: {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
36
|
+
getList: <T = MicroCMSContent>(params: {
|
|
37
|
+
endpoint: string;
|
|
38
|
+
queries?: MicroCMSQueries;
|
|
39
|
+
}) => Promise<import("microcms-js-sdk").MicroCMSListResponse<T>>;
|
|
40
|
+
getListDetail: <T = MicroCMSContent>(params: {
|
|
41
|
+
endpoint: string;
|
|
42
|
+
contentId: string;
|
|
43
|
+
queries?: MicroCMSQueries;
|
|
44
|
+
}) => Promise<T & import("microcms-js-sdk").MicroCMSContentId & import("microcms-js-sdk").MicroCMSDate>;
|
|
45
|
+
create: (params: {
|
|
46
|
+
endpoint: string;
|
|
47
|
+
content: Record<string, unknown>;
|
|
48
|
+
contentId?: string;
|
|
49
|
+
isDraft?: boolean;
|
|
50
|
+
}) => Promise<import("microcms-js-sdk").WriteApiRequestResult>;
|
|
51
|
+
update: (params: {
|
|
52
|
+
endpoint: string;
|
|
53
|
+
contentId: string;
|
|
54
|
+
content: Record<string, unknown>;
|
|
55
|
+
isDraft?: boolean;
|
|
56
|
+
}) => Promise<import("microcms-js-sdk").WriteApiRequestResult>;
|
|
57
|
+
delete: (params: {
|
|
58
|
+
endpoint: string;
|
|
59
|
+
contentId: string;
|
|
60
|
+
}) => Promise<void>;
|
|
13
61
|
};
|
|
14
62
|
export declare const microCMSManagementClient: {
|
|
15
|
-
uploadMedia: (
|
|
63
|
+
uploadMedia: (params: {
|
|
64
|
+
data: File | Blob;
|
|
65
|
+
} | {
|
|
66
|
+
url: string;
|
|
67
|
+
fileName?: string;
|
|
68
|
+
customRequestHeaders?: Record<string, string>;
|
|
69
|
+
}) => Promise<{
|
|
16
70
|
url: string;
|
|
17
71
|
}>;
|
|
18
72
|
};
|
|
19
73
|
export declare const microCMSConfig: {
|
|
20
|
-
serviceDomain: string;
|
|
21
|
-
apiKey: string;
|
|
74
|
+
readonly serviceDomain: string;
|
|
75
|
+
readonly apiKey: string;
|
|
22
76
|
};
|
|
23
|
-
|
|
24
|
-
|
|
77
|
+
/**
|
|
78
|
+
* Get service information (name, id) from the microCMS Management API.
|
|
79
|
+
* Requires the GET /api/v1/service endpoint (PR #21694).
|
|
80
|
+
* Falls back gracefully if the endpoint is not available.
|
|
81
|
+
*/
|
|
82
|
+
export declare function getServiceInfo(serviceId?: string): Promise<ServiceInfo>;
|
|
83
|
+
/**
|
|
84
|
+
* Attempt to fetch service info for all configured services.
|
|
85
|
+
* Failures do not block server startup.
|
|
86
|
+
*/
|
|
87
|
+
export declare function fetchAllServiceInfo(): Promise<Map<string, ServiceInfo>>;
|
|
88
|
+
export declare function getList<T = MicroCMSContent>(endpoint: string, queries?: MicroCMSQueries, serviceId?: string): Promise<MicroCMSListResponse<T>>;
|
|
89
|
+
export declare function getListDetail<T = MicroCMSContent>(endpoint: string, contentId: string, queries?: MicroCMSQueries, serviceId?: string): Promise<T>;
|
|
25
90
|
export declare function create<T = MicroCMSContent>(endpoint: string, content: Omit<T, 'id' | 'createdAt' | 'updatedAt' | 'publishedAt' | 'revisedAt'>, options?: {
|
|
26
91
|
isDraft?: boolean;
|
|
27
92
|
contentId?: string;
|
|
28
|
-
}): Promise<{
|
|
93
|
+
}, serviceId?: string): Promise<{
|
|
29
94
|
id: string;
|
|
30
95
|
}>;
|
|
31
96
|
export declare function update<T = MicroCMSContent>(endpoint: string, contentId: string, content: Omit<T, 'id' | 'createdAt' | 'updatedAt' | 'publishedAt' | 'revisedAt'>, options?: {
|
|
32
97
|
isDraft?: boolean;
|
|
33
|
-
}): Promise<{
|
|
98
|
+
}, serviceId?: string): Promise<{
|
|
34
99
|
id: string;
|
|
35
100
|
}>;
|
|
36
101
|
export declare function patch<T = MicroCMSContent>(endpoint: string, contentId: string, content: Partial<Omit<T, 'id' | 'createdAt' | 'updatedAt' | 'publishedAt' | 'revisedAt'>>, options?: {
|
|
37
102
|
isDraft?: boolean;
|
|
38
|
-
}): Promise<{
|
|
103
|
+
}, serviceId?: string): Promise<{
|
|
39
104
|
id: string;
|
|
40
105
|
}>;
|
|
41
|
-
export declare function deleteContent(endpoint: string, contentId: string): Promise<void>;
|
|
42
|
-
export declare function getApiInfo(endpoint: string): Promise<
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
106
|
+
export declare function deleteContent(endpoint: string, contentId: string, serviceId?: string): Promise<void>;
|
|
107
|
+
export declare function getApiInfo(endpoint: string, serviceId?: string): Promise<ApiInfo>;
|
|
108
|
+
/**
|
|
109
|
+
* Fetch formatted API list for a service (name, endpoint, type).
|
|
110
|
+
* Returns empty array on failure.
|
|
111
|
+
*/
|
|
112
|
+
export declare function fetchApisForService(serviceId: string): Promise<{
|
|
113
|
+
name: string;
|
|
114
|
+
endpoint: string;
|
|
115
|
+
type: string;
|
|
116
|
+
}[]>;
|
|
117
|
+
export declare function getApiList(serviceId?: string): Promise<ApiListResponse>;
|
|
118
|
+
export declare function getMember(memberId: string, serviceId?: string): Promise<MemberInfo>;
|
|
119
|
+
export declare function deleteMedia(mediaUrl: string, serviceId?: string): Promise<{
|
|
46
120
|
id: string;
|
|
47
121
|
}>;
|
|
48
|
-
export declare function patchContentStatus(endpoint: string, contentId: string, status: 'PUBLISH' | 'DRAFT'): Promise<void>;
|
|
49
|
-
export declare function patchContentCreatedBy(endpoint: string, contentId: string, memberId: string): Promise<{
|
|
122
|
+
export declare function patchContentStatus(endpoint: string, contentId: string, status: 'PUBLISH' | 'DRAFT', serviceId?: string): Promise<void>;
|
|
123
|
+
export declare function patchContentCreatedBy(endpoint: string, contentId: string, memberId: string, serviceId?: string): Promise<{
|
|
50
124
|
id: string;
|
|
51
125
|
}>;
|
|
52
126
|
export declare function getListMeta(endpoint: string, options?: {
|
|
53
127
|
limit?: number;
|
|
54
128
|
offset?: number;
|
|
55
|
-
}): Promise<
|
|
56
|
-
export declare function getContentManagement(endpoint: string, contentId: string): Promise<
|
|
129
|
+
}, serviceId?: string): Promise<ContentMetaListResponse>;
|
|
130
|
+
export declare function getContentManagement(endpoint: string, contentId: string, serviceId?: string): Promise<ContentMeta>;
|
|
131
|
+
export declare function getMedia(params?: {
|
|
132
|
+
limit?: number;
|
|
133
|
+
imageOnly?: boolean;
|
|
134
|
+
fileName?: string;
|
|
135
|
+
token?: string;
|
|
136
|
+
}, serviceId?: string): Promise<MediaListResponse>;
|
|
137
|
+
export declare function uploadMedia(params: {
|
|
138
|
+
data: File | Blob;
|
|
139
|
+
name?: string;
|
|
140
|
+
} | {
|
|
141
|
+
url: string;
|
|
142
|
+
fileName?: string;
|
|
143
|
+
customRequestHeaders?: Record<string, string>;
|
|
144
|
+
}, serviceId?: string): Promise<MediaUploadResponse>;
|
|
145
|
+
export {};
|
|
57
146
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|