rokadoc-mcp-server 1.1.1
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/LICENSE.md +21 -0
- package/README.md +218 -0
- package/dist/config.d.ts +19 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +49 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +34 -0
- package/dist/index.js.map +1 -0
- package/dist/server.d.ts +31 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +149 -0
- package/dist/server.js.map +1 -0
- package/dist/services/rokadoc-client.d.ts +97 -0
- package/dist/services/rokadoc-client.d.ts.map +1 -0
- package/dist/services/rokadoc-client.js +230 -0
- package/dist/services/rokadoc-client.js.map +1 -0
- package/dist/tools/convert-document.d.ts +32 -0
- package/dist/tools/convert-document.d.ts.map +1 -0
- package/dist/tools/convert-document.js +91 -0
- package/dist/tools/convert-document.js.map +1 -0
- package/dist/tools/get-conversion-result.d.ts +33 -0
- package/dist/tools/get-conversion-result.d.ts.map +1 -0
- package/dist/tools/get-conversion-result.js +84 -0
- package/dist/tools/get-conversion-result.js.map +1 -0
- package/dist/tools/list-conversions.d.ts +31 -0
- package/dist/tools/list-conversions.d.ts.map +1 -0
- package/dist/tools/list-conversions.js +68 -0
- package/dist/tools/list-conversions.js.map +1 -0
- package/dist/tools/search-documents.d.ts +39 -0
- package/dist/tools/search-documents.d.ts.map +1 -0
- package/dist/tools/search-documents.js +81 -0
- package/dist/tools/search-documents.js.map +1 -0
- package/dist/types.d.ts +208 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +24 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/error-handler.d.ts +40 -0
- package/dist/utils/error-handler.d.ts.map +1 -0
- package/dist/utils/error-handler.js +199 -0
- package/dist/utils/error-handler.js.map +1 -0
- package/dist/utils/url-validator.d.ts +33 -0
- package/dist/utils/url-validator.d.ts.map +1 -0
- package/dist/utils/url-validator.js +55 -0
- package/dist/utils/url-validator.js.map +1 -0
- package/package.json +58 -0
package/LICENSE.md
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Yuma Shintani
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
# rokadoc MCP Server
|
|
2
|
+
|
|
3
|
+
NTTドコモビジネスが提供するRAGサービス「[rokadoc](https://rokadoc.ntt.com)」の機能を、Model Context Protocol (MCP) を介してAIアシスタントから利用可能にするサーバーです。
|
|
4
|
+
|
|
5
|
+
VS Code、Kiro、Claude Desktop等のMCPクライアントから、ドキュメント変換やRAG検索をツールとして直接呼び出せます。
|
|
6
|
+
|
|
7
|
+
## クイックスタート
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
ROKADOC_API_KEY=<your-api-key> npx rokadoc-mcp-server
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
Windows (PowerShell) の場合:
|
|
14
|
+
|
|
15
|
+
```powershell
|
|
16
|
+
$env:ROKADOC_API_KEY="<your-api-key>"; npx rokadoc-mcp-server
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
MCPサーバーは標準入出力(stdio)でMCPクライアントと通信します。通常は手動で起動せず、後述の「MCPクライアント設定例」のとおりクライアント側に登録してください。
|
|
20
|
+
|
|
21
|
+
## バージョン指定
|
|
22
|
+
|
|
23
|
+
| 指定方法 | コマンド例 | 説明 |
|
|
24
|
+
| ------------------------------- | ----------------------------------- | -------------------------------- |
|
|
25
|
+
| 特定バージョン固定 | `npx rokadoc-mcp-server@1.0.7` | `@<version>` で固定 |
|
|
26
|
+
| 最新リリース | `npx rokadoc-mcp-server@latest` | 常に最新版を取得 |
|
|
27
|
+
| メジャーバージョン追従 (`^`) | `npx "rokadoc-mcp-server@^1.0.0"` | v1系の最新(破壊的変更を除外) |
|
|
28
|
+
| マイナーバージョン追従 (`~`) | `npx "rokadoc-mcp-server@~1.0.0"` | v1.0系の最新(パッチ更新のみ) |
|
|
29
|
+
|
|
30
|
+
安定運用にはメジャーバージョン追従(`^1.0.0`)の利用を推奨します。破壊的変更はメジャーバージョンアップ時のみ行われます。範囲指定(`^` / `~`)はシェルが解釈しないよう引用符で囲んでください。
|
|
31
|
+
|
|
32
|
+
## 前提条件
|
|
33
|
+
|
|
34
|
+
- **Node.js**: `>=22`(`node --version` で確認できます)
|
|
35
|
+
- **rokadoc API Key**: rokadocサービスへの認証に使用するAPIキー
|
|
36
|
+
|
|
37
|
+
Node.jsのバージョンが不足している場合、インストール時に `EBADENGINE` の警告が出力されます。
|
|
38
|
+
|
|
39
|
+
## 環境変数
|
|
40
|
+
|
|
41
|
+
| 環境変数 | 必須 | デフォルト値 | 説明 |
|
|
42
|
+
| ------------------ | ------ | ----------------------------- | ---------------------- |
|
|
43
|
+
| `ROKADOC_API_KEY` | はい | - | rokadoc APIの認証キー |
|
|
44
|
+
| `ROKADOC_BASE_URL` | いいえ | `https://api.rokadoc.ntt.com` | rokadoc APIのベースURL |
|
|
45
|
+
|
|
46
|
+
`ROKADOC_API_KEY` が未設定の場合、サーバーは標準エラー出力にエラーメッセージを出力して終了コード1で終了します。
|
|
47
|
+
|
|
48
|
+
オンプレミス環境のrokadocインスタンスに接続する場合は `ROKADOC_BASE_URL` を設定してください。URLは `https://` で始まる必要があり、`http://` は自動的に `https://` に変換され、末尾のスラッシュは除去されます。
|
|
49
|
+
|
|
50
|
+
## 提供ツール
|
|
51
|
+
|
|
52
|
+
| ツール | 説明 | 種別 |
|
|
53
|
+
| ----------------------- | ---------------------------------- | ------------ |
|
|
54
|
+
| `convert_document` | ドキュメントを構造化テキストに変換 | 書き込み |
|
|
55
|
+
| `list_conversions` | 変換ジョブ一覧を取得 | 読み取り専用 |
|
|
56
|
+
| `get_conversion_result` | 変換結果を取得 | 読み取り専用 |
|
|
57
|
+
| `search_documents` | RAG検索を実行 | 読み取り専用 |
|
|
58
|
+
|
|
59
|
+
全ツールで `space_id` または `space_name` によるスペース指定が可能です。
|
|
60
|
+
|
|
61
|
+
各ツールはMCP仕様のアノテーションヒント(`readOnlyHint` / `destructiveHint` / `idempotentHint` / `openWorldHint`)を宣言しており、MCPクライアントが実行前にユーザーへ影響範囲を提示できます。いずれのツールも既存データの削除・上書きは行いません。詳細は[GitHubのREADME](https://github.com/yuma-shin/rokadoc-mcp-server#ツールアノテーション)を参照してください。
|
|
62
|
+
|
|
63
|
+
## MCPクライアント設定例
|
|
64
|
+
|
|
65
|
+
### VS Code / Kiro
|
|
66
|
+
|
|
67
|
+
`.vscode/mcp.json` または `.kiro/settings/mcp.json` に以下をそのまま追加します。
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"inputs": [
|
|
72
|
+
{
|
|
73
|
+
"type": "promptString",
|
|
74
|
+
"id": "rokadoc-api-key",
|
|
75
|
+
"description": "rokadoc API Key",
|
|
76
|
+
"password": true
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
"servers": {
|
|
80
|
+
"rokadoc": {
|
|
81
|
+
"command": "npx",
|
|
82
|
+
"args": ["-y", "rokadoc-mcp-server"],
|
|
83
|
+
"env": {
|
|
84
|
+
"ROKADOC_API_KEY": "${input:rokadoc-api-key}"
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
バージョンを固定する場合は `args` を `["-y", "rokadoc-mcp-server@1.0.7"]` に置き換えてください。
|
|
92
|
+
|
|
93
|
+
### Claude Desktop
|
|
94
|
+
|
|
95
|
+
`claude_desktop_config.json` に以下をそのまま追加します(Claude Desktopは `mcpServers` キーを使用します)。
|
|
96
|
+
|
|
97
|
+
```json
|
|
98
|
+
{
|
|
99
|
+
"mcpServers": {
|
|
100
|
+
"rokadoc": {
|
|
101
|
+
"command": "npx",
|
|
102
|
+
"args": ["-y", "rokadoc-mcp-server"],
|
|
103
|
+
"env": {
|
|
104
|
+
"ROKADOC_API_KEY": "<your-api-key>"
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
オンプレミス環境に接続する場合は `env` に `ROKADOC_BASE_URL` を追加します。
|
|
112
|
+
|
|
113
|
+
```json
|
|
114
|
+
{
|
|
115
|
+
"mcpServers": {
|
|
116
|
+
"rokadoc": {
|
|
117
|
+
"command": "npx",
|
|
118
|
+
"args": ["-y", "rokadoc-mcp-server"],
|
|
119
|
+
"env": {
|
|
120
|
+
"ROKADOC_API_KEY": "<your-api-key>",
|
|
121
|
+
"ROKADOC_BASE_URL": "https://rokadoc.your-company.com"
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
`args` には必ず `-y` を含めてください。未インストール時に `npx` が確認プロンプトを表示すると、MCPのハンドシェイクが成立しません。
|
|
129
|
+
|
|
130
|
+
## ファイルパスの扱い
|
|
131
|
+
|
|
132
|
+
`convert_document` の `file_path` には、**ホストの絶対パスをそのまま**指定できます。パスの読み替えやボリュームマウントの設定は不要です。
|
|
133
|
+
|
|
134
|
+
Windows の例:
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
C:\Users\username\Documents\report.pdf
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
macOS / Linux の例:
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
/Users/username/Documents/report.pdf
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
MCPサーバーはクライアントと同じホスト上のプロセスとして動作するため、ファイルシステムはそのまま見えます。
|
|
147
|
+
|
|
148
|
+
## プロンプト例
|
|
149
|
+
|
|
150
|
+
MCPクライアント設定後、AIアシスタントのチャットに以下のように入力するだけで各ツールが呼び出されます。
|
|
151
|
+
|
|
152
|
+
### ドキュメントを変換する
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
C:\Users\username\Documents\提案書.pdf をrokadocで変換してください
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
スペースを指定する場合:
|
|
159
|
+
|
|
160
|
+
```
|
|
161
|
+
/Users/username/reports/月次報告.pdf を「営業部」スペースに変換してください
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
ページ範囲を指定する場合:
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
/Users/username/docs/仕様書.docx の1〜5ページを変換してください
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### 変換ジョブの状態を確認する
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
rokadocの変換ジョブ一覧を確認してください
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### 変換結果を取得する
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
変換が完了したジョブの結果を取得してください
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
### 社内ドキュメントを検索する
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
rokadocで「リモートワークの申請方法」について検索してください
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
タグで絞り込む場合:
|
|
189
|
+
|
|
190
|
+
```
|
|
191
|
+
タグ「人事」に絞って「有給休暇の取得条件」を検索してください
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
特定のスペースから検索する場合:
|
|
195
|
+
|
|
196
|
+
```
|
|
197
|
+
「総務部」スペースから「出張精算の手順」を検索してください
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### ドキュメント登録から検索までの一連の流れ
|
|
201
|
+
|
|
202
|
+
```
|
|
203
|
+
1. /Users/username/docs/新入社員ガイド.pdf を変換してください
|
|
204
|
+
2. ジョブの状態を確認してください
|
|
205
|
+
3. 完了したら「入社手続きに必要な書類」について検索してください
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
## 対応ファイル形式
|
|
209
|
+
|
|
210
|
+
PDF (.pdf), Word (.doc, .docx), Excel (.xls, .xlsx), PowerPoint (.ppt, .pptx)
|
|
211
|
+
|
|
212
|
+
## ソースコード
|
|
213
|
+
|
|
214
|
+
[GitHub](https://github.com/yuma-shin/rokadoc-mcp-server)
|
|
215
|
+
|
|
216
|
+
## ライセンス
|
|
217
|
+
|
|
218
|
+
MIT
|
package/dist/config.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 設定管理モジュール
|
|
3
|
+
*
|
|
4
|
+
* 環境変数からサーバー設定を読み込み、バリデーション・正規化を行う。
|
|
5
|
+
* バリデーション失敗時は標準エラー出力にメッセージを出力し process.exit(1) で終了する。
|
|
6
|
+
*/
|
|
7
|
+
import { ServerConfig } from "./types.js";
|
|
8
|
+
/**
|
|
9
|
+
* 環境変数からサーバー設定を読み込み、検証・正規化して返す。
|
|
10
|
+
*
|
|
11
|
+
* - ROKADOC_API_KEY: 必須。未設定・空文字列・空白のみは拒否
|
|
12
|
+
* - ROKADOC_BASE_URL: 任意。未設定・空文字列の場合はデフォルト値を使用
|
|
13
|
+
* - URL形式検証(http/https スキーム必須)
|
|
14
|
+
* - 末尾スラッシュ除去、http→https自動変換
|
|
15
|
+
*
|
|
16
|
+
* @returns 正規化済みのサーバー設定
|
|
17
|
+
*/
|
|
18
|
+
export declare function loadConfig(): ServerConfig;
|
|
19
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM1C;;;;;;;;;GASG;AACH,wBAAgB,UAAU,IAAI,YAAY,CAoCzC"}
|
package/dist/config.js
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 設定管理モジュール
|
|
3
|
+
*
|
|
4
|
+
* 環境変数からサーバー設定を読み込み、バリデーション・正規化を行う。
|
|
5
|
+
* バリデーション失敗時は標準エラー出力にメッセージを出力し process.exit(1) で終了する。
|
|
6
|
+
*/
|
|
7
|
+
import { normalizeBaseUrl, validateUrlFormat } from "./utils/url-validator.js";
|
|
8
|
+
/** デフォルトのrokadoc API Base URL */
|
|
9
|
+
const DEFAULT_BASE_URL = "https://api.rokadoc.ntt.com";
|
|
10
|
+
/**
|
|
11
|
+
* 環境変数からサーバー設定を読み込み、検証・正規化して返す。
|
|
12
|
+
*
|
|
13
|
+
* - ROKADOC_API_KEY: 必須。未設定・空文字列・空白のみは拒否
|
|
14
|
+
* - ROKADOC_BASE_URL: 任意。未設定・空文字列の場合はデフォルト値を使用
|
|
15
|
+
* - URL形式検証(http/https スキーム必須)
|
|
16
|
+
* - 末尾スラッシュ除去、http→https自動変換
|
|
17
|
+
*
|
|
18
|
+
* @returns 正規化済みのサーバー設定
|
|
19
|
+
*/
|
|
20
|
+
export function loadConfig() {
|
|
21
|
+
// 1. ROKADOC_API_KEY の読み込みと検証
|
|
22
|
+
const apiKey = process.env.ROKADOC_API_KEY;
|
|
23
|
+
if (!apiKey || apiKey.trim() === "") {
|
|
24
|
+
process.stderr.write("[設定エラー] 環境変数 ROKADOC_API_KEY が設定されていないか、空白のみです。有効なAPIキーを設定してください。\n");
|
|
25
|
+
process.exit(1);
|
|
26
|
+
}
|
|
27
|
+
// 2. ROKADOC_BASE_URL の読み込みと検証
|
|
28
|
+
const rawBaseUrl = process.env.ROKADOC_BASE_URL;
|
|
29
|
+
let baseUrl;
|
|
30
|
+
if (!rawBaseUrl || rawBaseUrl.trim() === "") {
|
|
31
|
+
// 未設定または空文字列の場合はデフォルト値を使用
|
|
32
|
+
baseUrl = DEFAULT_BASE_URL;
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
// URL形式検証
|
|
36
|
+
if (!validateUrlFormat(rawBaseUrl)) {
|
|
37
|
+
process.stderr.write(`[設定エラー] 環境変数 ROKADOC_BASE_URL の値が不正なURL形式です。"http://" または "https://" で始まるURLを指定してください。\n`);
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
// URL正規化(末尾スラッシュ除去、http→https変換)
|
|
41
|
+
baseUrl = normalizeBaseUrl(rawBaseUrl);
|
|
42
|
+
}
|
|
43
|
+
// 3. 正規化済み設定を返却
|
|
44
|
+
return {
|
|
45
|
+
baseUrl,
|
|
46
|
+
apiKey: apiKey.trim(),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE/E,iCAAiC;AACjC,MAAM,gBAAgB,GAAG,6BAA6B,CAAC;AAEvD;;;;;;;;;GASG;AACH,MAAM,UAAU,UAAU;IACxB,8BAA8B;IAC9B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAE3C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,qEAAqE,CACtE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,+BAA+B;IAC/B,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;IAChD,IAAI,OAAe,CAAC;IAEpB,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC5C,0BAA0B;QAC1B,OAAO,GAAG,gBAAgB,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,UAAU;QACV,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE,CAAC;YACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,0FAA0F,CAC3F,CAAC;YACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,iCAAiC;QACjC,OAAO,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAED,gBAAgB;IAChB,OAAO;QACL,OAAO;QACP,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;KACtB,CAAC;AACJ,CAAC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* rokadoc MCPサーバー エントリーポイント
|
|
4
|
+
*
|
|
5
|
+
* 設定読み込み、McpServerインスタンスの作成とツール登録、
|
|
6
|
+
* stdioトランスポート起動、シャットダウン処理を行う。
|
|
7
|
+
*/
|
|
8
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
9
|
+
import { loadConfig } from "./config.js";
|
|
10
|
+
import { RokadocApiClient } from "./services/rokadoc-client.js";
|
|
11
|
+
import { createServer } from "./server.js";
|
|
12
|
+
async function main() {
|
|
13
|
+
// 設定読み込みと検証(失敗時はプロセス終了)
|
|
14
|
+
const config = loadConfig();
|
|
15
|
+
// APIクライアント作成
|
|
16
|
+
const apiClient = new RokadocApiClient(config);
|
|
17
|
+
// MCPサーバーインスタンス作成(4つのツールを登録済み)
|
|
18
|
+
const server = createServer(apiClient);
|
|
19
|
+
// stdioトランスポートの作成とサーバー接続
|
|
20
|
+
const transport = new StdioServerTransport();
|
|
21
|
+
await server.connect(transport);
|
|
22
|
+
// グレースフルシャットダウン処理
|
|
23
|
+
const shutdown = async () => {
|
|
24
|
+
await server.close();
|
|
25
|
+
process.exit(0);
|
|
26
|
+
};
|
|
27
|
+
process.on("SIGTERM", shutdown);
|
|
28
|
+
process.on("SIGINT", shutdown);
|
|
29
|
+
}
|
|
30
|
+
main().catch((error) => {
|
|
31
|
+
process.stderr.write(`[起動エラー] MCPサーバーの起動に失敗しました: ${error}\n`);
|
|
32
|
+
process.exit(1);
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,KAAK,UAAU,IAAI;IACjB,wBAAwB;IACxB,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAE5B,cAAc;IACd,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAE/C,+BAA+B;IAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;IAEvC,yBAAyB;IACzB,MAAM,SAAS,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAEhC,kBAAkB;IAClB,MAAM,QAAQ,GAAG,KAAK,IAAI,EAAE;QAC1B,MAAM,MAAM,CAAC,KAAK,EAAE,CAAC;QACrB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC;IAEF,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACjC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,8BAA8B,KAAK,IAAI,CACxC,CAAC;IACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
|
package/dist/server.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCPサーバーのツール登録
|
|
3
|
+
*
|
|
4
|
+
* サーバー名・バージョンの定義と、4つのツール登録処理を提供する。
|
|
5
|
+
* index.ts とテストの両方から利用され、登録内容の重複定義を防ぐ。
|
|
6
|
+
*
|
|
7
|
+
* 各ツールには MCP 仕様の4つのアノテーションヒント
|
|
8
|
+
* (readOnlyHint / destructiveHint / idempotentHint / openWorldHint)を
|
|
9
|
+
* 明示的に指定し、ホストがユーザーに影響範囲を事前提示できるようにする。
|
|
10
|
+
*/
|
|
11
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
12
|
+
import { RokadocApiClient } from "./services/rokadoc-client.js";
|
|
13
|
+
/** MCPサーバー名 */
|
|
14
|
+
export declare const SERVER_NAME = "rokadoc-mcp-server";
|
|
15
|
+
/** MCPサーバーバージョン */
|
|
16
|
+
export declare const SERVER_VERSION = "1.0.0";
|
|
17
|
+
/**
|
|
18
|
+
* 4つのツールを MCPサーバーに登録する
|
|
19
|
+
*
|
|
20
|
+
* @param server - 登録先の McpServer インスタンス
|
|
21
|
+
* @param apiClient - rokadoc APIクライアント
|
|
22
|
+
*/
|
|
23
|
+
export declare function registerTools(server: McpServer, apiClient: RokadocApiClient): void;
|
|
24
|
+
/**
|
|
25
|
+
* ツール登録済みの MCPサーバーインスタンスを生成する
|
|
26
|
+
*
|
|
27
|
+
* @param apiClient - rokadoc APIクライアント
|
|
28
|
+
* @returns 4つのツールが登録された McpServer
|
|
29
|
+
*/
|
|
30
|
+
export declare function createServer(apiClient: RokadocApiClient): McpServer;
|
|
31
|
+
//# sourceMappingURL=server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAMhE,eAAe;AACf,eAAO,MAAM,WAAW,uBAAuB,CAAC;AAEhD,mBAAmB;AACnB,eAAO,MAAM,cAAc,UAAU,CAAC;AA8BtC;;;;;GAKG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,gBAAgB,GAC1B,IAAI,CAwGN;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,gBAAgB,GAAG,SAAS,CASnE"}
|
package/dist/server.js
ADDED
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCPサーバーのツール登録
|
|
3
|
+
*
|
|
4
|
+
* サーバー名・バージョンの定義と、4つのツール登録処理を提供する。
|
|
5
|
+
* index.ts とテストの両方から利用され、登録内容の重複定義を防ぐ。
|
|
6
|
+
*
|
|
7
|
+
* 各ツールには MCP 仕様の4つのアノテーションヒント
|
|
8
|
+
* (readOnlyHint / destructiveHint / idempotentHint / openWorldHint)を
|
|
9
|
+
* 明示的に指定し、ホストがユーザーに影響範囲を事前提示できるようにする。
|
|
10
|
+
*/
|
|
11
|
+
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
12
|
+
import { z } from "zod";
|
|
13
|
+
import { handleConvertDocument } from "./tools/convert-document.js";
|
|
14
|
+
import { handleListConversions } from "./tools/list-conversions.js";
|
|
15
|
+
import { handleGetConversionResult } from "./tools/get-conversion-result.js";
|
|
16
|
+
import { handleSearchDocuments } from "./tools/search-documents.js";
|
|
17
|
+
/** MCPサーバー名 */
|
|
18
|
+
export const SERVER_NAME = "rokadoc-mcp-server";
|
|
19
|
+
/** MCPサーバーバージョン */
|
|
20
|
+
export const SERVER_VERSION = "1.0.0";
|
|
21
|
+
/**
|
|
22
|
+
* スペース指定の共通パラメータ
|
|
23
|
+
*
|
|
24
|
+
* space_id が指定されている場合はそれを使用し、
|
|
25
|
+
* space_name のみが指定されている場合はスペース一覧APIでIDを解決する。
|
|
26
|
+
*/
|
|
27
|
+
const spaceParams = {
|
|
28
|
+
space_id: z.string().optional().describe("スペースID"),
|
|
29
|
+
space_name: z
|
|
30
|
+
.string()
|
|
31
|
+
.optional()
|
|
32
|
+
.describe("スペース名(space_id が指定されている場合は無視されます)"),
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* 読み取り専用ツール共通のアノテーション
|
|
36
|
+
*
|
|
37
|
+
* rokadoc APIに対してGETのみを行い、リモートの状態を変更しない。
|
|
38
|
+
* 同一入力での再実行は追加の副作用を持たない(べき等)。
|
|
39
|
+
* 外部サービス(rokadoc API)と通信するため openWorldHint は true。
|
|
40
|
+
*/
|
|
41
|
+
const READ_ONLY_ANNOTATIONS = {
|
|
42
|
+
readOnlyHint: true,
|
|
43
|
+
destructiveHint: false,
|
|
44
|
+
idempotentHint: true,
|
|
45
|
+
openWorldHint: true,
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* 4つのツールを MCPサーバーに登録する
|
|
49
|
+
*
|
|
50
|
+
* @param server - 登録先の McpServer インスタンス
|
|
51
|
+
* @param apiClient - rokadoc APIクライアント
|
|
52
|
+
*/
|
|
53
|
+
export function registerTools(server, apiClient) {
|
|
54
|
+
// convert_document: 変換ジョブを新規作成するため書き込み系
|
|
55
|
+
// 既存データの削除・上書きは行わないため destructiveHint は false
|
|
56
|
+
// 呼び出しごとに新しい conversion_id が払い出されるため冪等ではない
|
|
57
|
+
server.registerTool("convert_document", {
|
|
58
|
+
title: "ドキュメント変換",
|
|
59
|
+
description: "ドキュメントファイルをrokadocに送信して構造化テキストに変換する",
|
|
60
|
+
inputSchema: {
|
|
61
|
+
file_path: z.string().min(1).describe("変換対象のファイルパス"),
|
|
62
|
+
from_page: z
|
|
63
|
+
.number()
|
|
64
|
+
.int()
|
|
65
|
+
.positive()
|
|
66
|
+
.optional()
|
|
67
|
+
.describe("開始ページ(正の整数)"),
|
|
68
|
+
to_page: z
|
|
69
|
+
.number()
|
|
70
|
+
.int()
|
|
71
|
+
.positive()
|
|
72
|
+
.optional()
|
|
73
|
+
.describe("終了ページ(正の整数)"),
|
|
74
|
+
...spaceParams,
|
|
75
|
+
},
|
|
76
|
+
annotations: {
|
|
77
|
+
readOnlyHint: false,
|
|
78
|
+
destructiveHint: false,
|
|
79
|
+
idempotentHint: false,
|
|
80
|
+
openWorldHint: true,
|
|
81
|
+
},
|
|
82
|
+
}, async (args) => {
|
|
83
|
+
return handleConvertDocument(args, apiClient);
|
|
84
|
+
});
|
|
85
|
+
// list_conversions: ジョブ一覧をGETするのみ
|
|
86
|
+
server.registerTool("list_conversions", {
|
|
87
|
+
title: "変換ジョブ一覧",
|
|
88
|
+
description: "変換ジョブの一覧を取得する",
|
|
89
|
+
inputSchema: { ...spaceParams },
|
|
90
|
+
annotations: READ_ONLY_ANNOTATIONS,
|
|
91
|
+
}, async (args) => {
|
|
92
|
+
return handleListConversions(args, apiClient);
|
|
93
|
+
});
|
|
94
|
+
// get_conversion_result: 変換結果をGETするのみ
|
|
95
|
+
server.registerTool("get_conversion_result", {
|
|
96
|
+
title: "変換結果取得",
|
|
97
|
+
description: "指定された変換ジョブの結果を取得する",
|
|
98
|
+
inputSchema: {
|
|
99
|
+
conversion_id: z.string().min(1).describe("変換ジョブID"),
|
|
100
|
+
...spaceParams,
|
|
101
|
+
},
|
|
102
|
+
annotations: READ_ONLY_ANNOTATIONS,
|
|
103
|
+
}, async (args) => {
|
|
104
|
+
return handleGetConversionResult(args, apiClient);
|
|
105
|
+
});
|
|
106
|
+
// search_documents: RAG検索をGETするのみ
|
|
107
|
+
server.registerTool("search_documents", {
|
|
108
|
+
title: "ドキュメント検索",
|
|
109
|
+
description: "rokadocに登録されたドキュメントに対してRAG検索を実行する",
|
|
110
|
+
inputSchema: {
|
|
111
|
+
query: z
|
|
112
|
+
.string()
|
|
113
|
+
.min(1)
|
|
114
|
+
.max(1000)
|
|
115
|
+
.describe("検索クエリ(1〜1000文字)"),
|
|
116
|
+
tags: z
|
|
117
|
+
.array(z.string())
|
|
118
|
+
.optional()
|
|
119
|
+
.describe("タグフィルタ(AND条件)"),
|
|
120
|
+
max_results: z
|
|
121
|
+
.number()
|
|
122
|
+
.int()
|
|
123
|
+
.positive()
|
|
124
|
+
.max(5)
|
|
125
|
+
.default(3)
|
|
126
|
+
.optional()
|
|
127
|
+
.describe("最大取得件数(デフォルト: 3、最大: 5)"),
|
|
128
|
+
...spaceParams,
|
|
129
|
+
},
|
|
130
|
+
annotations: READ_ONLY_ANNOTATIONS,
|
|
131
|
+
}, async (args) => {
|
|
132
|
+
return handleSearchDocuments(args, apiClient);
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* ツール登録済みの MCPサーバーインスタンスを生成する
|
|
137
|
+
*
|
|
138
|
+
* @param apiClient - rokadoc APIクライアント
|
|
139
|
+
* @returns 4つのツールが登録された McpServer
|
|
140
|
+
*/
|
|
141
|
+
export function createServer(apiClient) {
|
|
142
|
+
const server = new McpServer({
|
|
143
|
+
name: SERVER_NAME,
|
|
144
|
+
version: SERVER_VERSION,
|
|
145
|
+
});
|
|
146
|
+
registerTools(server, apiClient);
|
|
147
|
+
return server;
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* rokadoc API HTTPクライアント
|
|
3
|
+
*
|
|
4
|
+
* rokadoc APIとの全通信を担当する。
|
|
5
|
+
* - 全リクエストに `api-key` ヘッダーを付与
|
|
6
|
+
* - 送信先をBase URLのホストのみに制限
|
|
7
|
+
* - 30秒タイムアウト設定(AbortController使用)
|
|
8
|
+
* - リトライロジック(5xx/ネットワークエラー: 最大3回、2秒間隔。4xxはリトライなし)
|
|
9
|
+
*/
|
|
10
|
+
import { ServerConfig, ConversionJob, SearchResult, GetConversionResultResponse, Space } from "../types.js";
|
|
11
|
+
/** ページ範囲指定オプション */
|
|
12
|
+
interface PageRange {
|
|
13
|
+
from_page?: number;
|
|
14
|
+
to_page?: number;
|
|
15
|
+
space_id?: string;
|
|
16
|
+
}
|
|
17
|
+
/** 検索オプション */
|
|
18
|
+
interface SearchOptions {
|
|
19
|
+
tags?: string[];
|
|
20
|
+
max_results?: number;
|
|
21
|
+
tags_filter_include?: boolean;
|
|
22
|
+
space_id?: string;
|
|
23
|
+
}
|
|
24
|
+
/** 変換リクエストレスポンス */
|
|
25
|
+
interface ConversionResponse {
|
|
26
|
+
code: number;
|
|
27
|
+
status: string;
|
|
28
|
+
conversion_id: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* rokadoc APIクライアント
|
|
32
|
+
*
|
|
33
|
+
* コンストラクタで ServerConfig を受け取り、全APIメソッドで共通の
|
|
34
|
+
* ヘッダー付与・ホスト検証・タイムアウト・リトライ処理を適用する。
|
|
35
|
+
*/
|
|
36
|
+
export declare class RokadocApiClient {
|
|
37
|
+
private config;
|
|
38
|
+
constructor(config: ServerConfig);
|
|
39
|
+
/**
|
|
40
|
+
* 共通リクエストメソッド
|
|
41
|
+
*
|
|
42
|
+
* - ホスト検証: Base URLのホスト以外へのリクエストを拒否
|
|
43
|
+
* - api-key ヘッダー付与
|
|
44
|
+
* - 30秒タイムアウト(AbortController)
|
|
45
|
+
* - リトライ: 5xx/ネットワークエラーは最大3回・2秒間隔、4xxはリトライなし
|
|
46
|
+
*/
|
|
47
|
+
private request;
|
|
48
|
+
/**
|
|
49
|
+
* ドキュメント変換リクエスト
|
|
50
|
+
*
|
|
51
|
+
* POST /v1/api/conversions (multipart/form-data)
|
|
52
|
+
*
|
|
53
|
+
* @param filePath - 変換対象のファイルパス
|
|
54
|
+
* @param options - ページ範囲指定(任意)
|
|
55
|
+
* @returns 変換ジョブIDとステータス
|
|
56
|
+
*/
|
|
57
|
+
createConversion(filePath: string, options?: PageRange): Promise<ConversionResponse>;
|
|
58
|
+
/**
|
|
59
|
+
* 変換ジョブ一覧取得
|
|
60
|
+
*
|
|
61
|
+
* GET /v1/user/conversions
|
|
62
|
+
*
|
|
63
|
+
* @param spaceId - スペースID(任意)
|
|
64
|
+
* @returns 変換ジョブの配列
|
|
65
|
+
*/
|
|
66
|
+
listConversions(spaceId?: string): Promise<ConversionJob[]>;
|
|
67
|
+
/**
|
|
68
|
+
* 変換結果取得
|
|
69
|
+
*
|
|
70
|
+
* GET /v1/user/conversions/{id}/document
|
|
71
|
+
*
|
|
72
|
+
* @param conversionId - 変換ジョブID
|
|
73
|
+
* @param spaceId - スペースID(任意)
|
|
74
|
+
* @returns 変換結果レスポンス(status, roka_response等を含む)
|
|
75
|
+
*/
|
|
76
|
+
getConversionResult(conversionId: string, spaceId?: string): Promise<GetConversionResultResponse>;
|
|
77
|
+
/**
|
|
78
|
+
* ユーザーがアクセス可能なスペース一覧を取得
|
|
79
|
+
*
|
|
80
|
+
* GET /v1/user/spaces/join
|
|
81
|
+
*
|
|
82
|
+
* @returns スペース情報の配列(space_id, space_name)
|
|
83
|
+
*/
|
|
84
|
+
listSpaces(): Promise<Space[]>;
|
|
85
|
+
/**
|
|
86
|
+
* RAGドキュメント検索
|
|
87
|
+
*
|
|
88
|
+
* GET /v1/api/search
|
|
89
|
+
*
|
|
90
|
+
* @param query - 検索クエリ(message パラメータとして送信)
|
|
91
|
+
* @param options - 検索オプション(タグフィルタ、最大件数、スペースID)
|
|
92
|
+
* @returns 検索結果の配列
|
|
93
|
+
*/
|
|
94
|
+
searchDocuments(query: string, options?: SearchOptions): Promise<SearchResult[]>;
|
|
95
|
+
}
|
|
96
|
+
export {};
|
|
97
|
+
//# sourceMappingURL=rokadoc-client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rokadoc-client.d.ts","sourceRoot":"","sources":["../../src/services/rokadoc-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,OAAO,EACL,YAAY,EACZ,aAAa,EACb,YAAY,EAGZ,2BAA2B,EAC3B,KAAK,EAGN,MAAM,aAAa,CAAC;AAGrB,mBAAmB;AACnB,UAAU,SAAS;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,cAAc;AACd,UAAU,aAAa;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,mBAAmB;AACnB,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;CACvB;AAQD;;;;;GAKG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAe;IAE7B,YAAY,MAAM,EAAE,YAAY,EAE/B;IAED;;;;;;;OAOG;YACW,OAAO;IAsGrB;;;;;;;;OAQG;IACG,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,SAAS,GAClB,OAAO,CAAC,kBAAkB,CAAC,CA2B7B;IAED;;;;;;;OAOG;IACG,eAAe,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAWhE;IAED;;;;;;;;OAQG;IACG,mBAAmB,CACvB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,2BAA2B,CAAC,CAStC;IAED;;;;;;OAMG;IACG,UAAU,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC,CAQnC;IAED;;;;;;;;OAQG;IACG,eAAe,CACnB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,YAAY,EAAE,CAAC,CA2BzB;CACF"}
|