rokadoc MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@rokadoc MCP ServerConvert /workspace/contract.pdf and search for 'liability clause'."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
rokadoc MCP Server
NTTドコモビジネスが提供するRAGサービス「rokadoc」の機能を、Model Context Protocol (MCP) を介してAIアシスタントから利用可能にするサーバーです。
VS Code、Kiro、Claude Desktop等のMCPクライアントから、ドキュメント変換やRAG検索をツールとして直接呼び出せます。
配布形態の選択
DockerイメージとNPMパッケージの2形態で配布しています。どちらもMCPサーバーとしての機能は同一です。
観点 | Dockerイメージ | NPMパッケージ |
前提条件 | Docker | Node.js |
共通の前提条件 | rokadoc API Key | rokadoc API Key |
起動方法 |
|
|
| コンテナ内パス( | ホストの絶対パスをそのまま指定(マウント不要) |
環境変数の渡し方 |
| MCPクライアント設定の |
更新方法 | イメージの再取得( | バージョン指定の変更、または |
配布ページ |
ローカルファイルを頻繁に変換する場合は、パスの読み替えが不要なNPMパッケージが扱いやすいです
実行環境をコンテナに隔離したい場合や、Node.jsを用意したくない場合はDockerイメージを選択してください
npmレジストリのパッケージページ向けの説明(npx中心の導入手順のみを記載)は NPM.md にあります。
Related MCP server: RAG MCP Server
前提条件
Dockerイメージを利用する場合:
Docker: コンテナの実行に必要
rokadoc API Key: rokadocサービスへの認証に使用するAPIキー
NPMパッケージを利用する場合:
Node.js:
>=22(node --versionで確認できます)rokadoc API Key: rokadocサービスへの認証に使用するAPIキー
イメージの取得
Docker Hub または GitHub Container Registry のどちらからでも利用可能です。
Docker Hub
イメージのページは Docker Hub にあります。
docker pull snackpans/rokadoc-mcp-serverGitHub Container Registry (GHCR)
docker pull ghcr.io/yuma-shin/rokadoc-mcp-server:latestタグ一覧
タグ | 説明 |
| 最新リリース |
| v1系の最新(メジャーバージョン追従) |
| v1.0系の最新(マイナーバージョン追従) |
| 特定バージョン固定 |
安定運用にはメジャーバージョンタグ(例: 1)の利用を推奨します。
ソースからビルドする場合
docker build -t rokadoc-mcp-server .コンテナの起動
Docker Hub のイメージを使用する場合:
docker run -i --rm -e ROKADOC_API_KEY=<your-api-key> snackpans/rokadoc-mcp-serverGHCR のイメージを使用する場合:
docker run -i --rm -e ROKADOC_API_KEY=<your-api-key> ghcr.io/yuma-shin/rokadoc-mcp-server環境変数
環境変数 | 必須 | デフォルト値 | 説明 |
| はい | - | rokadoc APIの認証キー |
| いいえ |
| rokadoc APIのベースURL |
オンプレミス環境でのBase URL変更
オンプレミス環境のrokadocインスタンスに接続する場合は、ROKADOC_BASE_URL を設定してください。
docker run -i --rm \
-e ROKADOC_API_KEY=<your-api-key> \
-e ROKADOC_BASE_URL=https://rokadoc.your-company.com \
snackpans/rokadoc-mcp-server注意事項:
URLは
https://で始まる必要がありますhttp://を指定した場合、自動的にhttps://に変換されます(警告メッセージが出力されます)末尾のスラッシュは自動的に除去されます
MCPクライアント設定
VS Code / Kiro
.vscode/mcp.json または .kiro/settings/mcp.json に以下を追加します。
convert_document でローカルファイルを変換する場合は、-v オプションでホストのディレクトリをコンテナにマウントしてください。以下の例ではホストのホームディレクトリ全体を /workspace にマウントしています:
{
"inputs": [
{
"type": "promptString",
"id": "rokadoc-api-key",
"description": "rokadoc API Key",
"password": true
}
],
"servers": {
"rokadoc": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ROKADOC_API_KEY",
"-v",
"${userHome}:/workspace",
"snackpans/rokadoc-mcp-server"
],
"env": {
"ROKADOC_API_KEY": "${input:rokadoc-api-key}"
}
}
}
}GHCRを使う場合は "snackpans/rokadoc-mcp-server" を "ghcr.io/yuma-shin/rokadoc-mcp-server" に置き換えてください。
この設定では、ホスト上の ~/Documents/report.pdf をコンテナ内で /workspace/Documents/report.pdf としてアクセスできます。convert_document ツールには コンテナ内のパス を指定してください。
例:
ホスト:
C:\Users\username\Documents\report.pdfコンテナ内(ツールに渡すパス):
/workspace/Documents/report.pdf
ファイル変換が不要でRAG検索のみ利用する場合はボリュームマウントなしで動作します:
{
"inputs": [
{
"type": "promptString",
"id": "rokadoc-api-key",
"description": "rokadoc API Key",
"password": true
}
],
"servers": {
"rokadoc": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ROKADOC_API_KEY",
"snackpans/rokadoc-mcp-server"
],
"env": {
"ROKADOC_API_KEY": "${input:rokadoc-api-key}"
}
}
}
}Claude Desktop
claude_desktop_config.json に以下を追加します(Claude Desktopは mcpServers キーを使用します):
{
"mcpServers": {
"rokadoc": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ROKADOC_API_KEY=<your-api-key>",
"-v",
"C:\\Users\\<username>:/workspace",
"snackpans/rokadoc-mcp-server"
]
}
}
}オンプレミス環境の場合
Base URLを変更する場合は args に環境変数を追加します:
{
"servers": {
"rokadoc": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"ROKADOC_API_KEY",
"-e",
"ROKADOC_BASE_URL=https://rokadoc.your-company.com",
"-v",
"${userHome}:/workspace",
"snackpans/rokadoc-mcp-server"
],
"env": {
"ROKADOC_API_KEY": "${input:rokadoc-api-key}"
}
}
}
}NPMパッケージで利用する
Node.js >=22 があれば、Dockerなしで npx から直接起動できます。パッケージ名は rokadoc-mcp-server です。パッケージのページは npm にあります。
ROKADOC_API_KEY=<your-api-key> npx -y rokadoc-mcp-serverWindows (PowerShell) の場合:
$env:ROKADOC_API_KEY="<your-api-key>"; npx -y rokadoc-mcp-serverMCPサーバーは標準入出力(stdio)でMCPクライアントと通信します。通常は手動起動せず、後述の設定例のとおりMCPクライアントに登録してください。
バージョンの指定
指定方法 | コマンド例 | 説明 |
特定バージョン固定 |
|
|
最新リリース |
| 常に最新版を取得 |
メジャーバージョン追従 |
| v1系の最新(破壊的変更を除外) |
マイナーバージョン追従 |
| v1.0系の最新(パッチ更新のみ) |
安定運用にはメジャーバージョン追従(^1.0.0)を推奨します。範囲指定(^ / ~)はシェルが解釈しないよう引用符で囲んでください。
環境変数
Dockerイメージ経由の場合と同じ環境変数を使用します。
環境変数 | 必須 | デフォルト値 | 説明 |
| はい | - | rokadoc APIの認証キー |
| いいえ |
| rokadoc APIのベースURL |
ROKADOC_API_KEY はシェルの環境変数として渡すか、MCPクライアント設定の env に指定します。ROKADOC_BASE_URL は未設定の場合に既定値 https://api.rokadoc.ntt.com が適用されます。オンプレミス環境に接続する場合のみ設定してください。
MCPクライアント設定(VS Code / Kiro)
.vscode/mcp.json または .kiro/settings/mcp.json に以下をそのまま追加します。
{
"inputs": [
{
"type": "promptString",
"id": "rokadoc-api-key",
"description": "rokadoc API Key",
"password": true
}
],
"servers": {
"rokadoc": {
"command": "npx",
"args": ["-y", "rokadoc-mcp-server"],
"env": {
"ROKADOC_API_KEY": "${input:rokadoc-api-key}"
}
}
}
}バージョンを固定する場合は args を ["-y", "rokadoc-mcp-server@1.0.7"] に置き換えてください。
MCPクライアント設定(Claude Desktop)
claude_desktop_config.json に以下をそのまま追加します(Claude Desktopは mcpServers キーを使用します)。
{
"mcpServers": {
"rokadoc": {
"command": "npx",
"args": ["-y", "rokadoc-mcp-server"],
"env": {
"ROKADOC_API_KEY": "<your-api-key>"
}
}
}
}オンプレミス環境に接続する場合は env に ROKADOC_BASE_URL を追加します。
{
"mcpServers": {
"rokadoc": {
"command": "npx",
"args": ["-y", "rokadoc-mcp-server"],
"env": {
"ROKADOC_API_KEY": "<your-api-key>",
"ROKADOC_BASE_URL": "https://rokadoc.your-company.com"
}
}
}
}args には必ず -y を含めてください。未インストール時に npx が確認プロンプトを表示すると、MCPのハンドシェイクが成立しません。
ファイルパスの扱い
NPMパッケージ経由の場合、MCPサーバーはMCPクライアントと同じホスト上のプロセスとして動作します。convert_document の file_path には ホストの絶対パスをそのまま 指定でき、Dockerイメージ経由で必要となるボリュームマウント(-v)とコンテナ内パスへの読み替えは不要です。
Windows の例:
C:\Users\username\Documents\report.pdfmacOS / Linux の例:
/Users/username/Documents/report.pdfGitHub Packagesから取得する
公開npmレジストリと同一の内容を、GitHub Packagesにも @yuma-shin/rokadoc-mcp-server として公開しています。GitHub認証のみでパッケージを取得したい場合はこちらを利用してください。
スコープの参照先をGitHub Packagesに向けます。プロジェクトルート(またはホームディレクトリ)の
.npmrcに以下を記述します。@yuma-shin:registry=https://npm.pkg.github.comGitHub Packagesの認証情報(
read:packagesスコープを持つPersonal Access Token)を設定します。トークンは.npmrcに直接書かず、環境変数を参照させることを推奨します。@yuma-shin:registry=https://npm.pkg.github.com //npm.pkg.github.com/:_authToken=${GITHUB_TOKEN}export GITHUB_TOKEN=<your-personal-access-token>npm login --scope=@yuma-shin --registry=https://npm.pkg.github.comで対話的に認証情報を保存することもできます。スコープ付きパッケージ名を指定してインストールします。
npm install @yuma-shin/rokadoc-mcp-server
インストール後は npx @yuma-shin/rokadoc-mcp-server で起動できます。.npmrc と認証情報の設定が必要なため、MCPクライアント設定例のように npx から直接取得する用途では、公開npmレジストリの rokadoc-mcp-server を利用してください。
提供ツール
全ツールは space_id または space_name パラメータを受け付けます。スペースを指定するとそのスペース内に限定して操作を行います。未指定時は全スペースが対象です。space_name を指定した場合、内部でスペース一覧API(GET /v1/user/spaces/join)を呼び出し、対応する space_id を自動的に解決します。
ツールアノテーション
各ツールにはMCP仕様のアノテーションヒントを宣言しています。MCPクライアントはこの情報をもとに、実行前の確認ダイアログ表示などの判断を行います。
ツール | readOnlyHint | destructiveHint | idempotentHint | openWorldHint |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
convert_documentは変換ジョブを新規作成するため書き込み系です。既存データの削除・上書きは行いませんが、呼び出しごとに新しいconversion_idが払い出されるため冪等ではありません他の3ツールはrokadoc APIに対して参照のみを行い、状態を変更しません
全ツールが外部サービス(rokadoc API)と通信するため
openWorldHintはtrueです
convert_document
ドキュメントファイルをrokadocに送信し、構造化テキストへの変換を開始します。
パラメータ:
パラメータ | 型 | 必須 | 説明 |
| string | はい | 変換対象のファイルパス |
| number | いいえ | 変換開始ページ(正の整数) |
| number | いいえ | 変換終了ページ(正の整数) |
| string | いいえ | スペースID |
| string | いいえ | スペース名(space_id未指定時に名前で解決) |
対応ファイル形式: PDF (.pdf), Word (.doc, .docx), Excel (.xls, .xlsx), PowerPoint (.ppt, .pptx)
使用例:
convert_document でファイル /path/to/document.pdf を変換してくださいconvert_document で /path/to/report.docx の1〜5ページを「営業部」スペースに変換してくださいレスポンス例:
{
"code": 202,
"status": "Pending",
"conversion_id": "xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}list_conversions
変換ジョブの一覧を取得します。
パラメータ:
パラメータ | 型 | 必須 | 説明 |
| string | いいえ | スペースID |
| string | いいえ | スペース名(space_id未指定時に名前で解決) |
使用例:
list_conversions で変換ジョブの状態を確認してくださいlist_conversions で「営業部」スペースのジョブ一覧を確認してくださいレスポンス例:
{
"conversions": [
{
"conversion_id": "xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"status": "Succeeded",
"document_name": "sample.pdf",
"created_date": "202501151030",
"updated_date": "202501151031"
}
]
}get_conversion_result
完了した変換ジョブの結果ドキュメントを取得します。
パラメータ:
パラメータ | 型 | 必須 | 説明 |
| string | はい | 変換ジョブID |
| string | いいえ | スペースID |
| string | いいえ | スペース名(space_id未指定時に名前で解決) |
使用例:
get_conversion_result で conversion_id "xxxx" の結果を取得してくださいレスポンス例:
{
"conversion_id": "xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"document_name": "sample.pdf",
"status": "Succeeded",
"roka_response": {
"meta": { "separate_method": "page" },
"document_summary": "",
"units": [
{
"unit": 1,
"elements": [
{
"type": "text",
"text": "変換されたテキスト内容...",
"page": 1,
"reading_order": 1
}
],
"description": "変換されたテキスト内容..."
}
]
}
}search_documents
rokadocに登録されたドキュメントに対してRAG検索を実行します。
パラメータ:
パラメータ | 型 | 必須 | 説明 |
| string | はい | 検索クエリ(1〜1000文字) |
| string[] | いいえ | タグフィルタ(AND条件) |
| number | いいえ | 最大取得件数(デフォルト: 3、最大: 5) |
| string | いいえ | スペースID |
| string | いいえ | スペース名(space_id未指定時に名前で解決) |
使用例:
search_documents で「セキュリティポリシー」について検索してくださいsearch_documents で「営業部」スペースから「売上報告」を検索してくださいレスポンス例:
{
"results": [
{
"document_name": "セキュリティガイドライン.pdf",
"context": "パスワードは最低12文字以上とし、英大文字・小文字・数字・記号を含める...",
"page_number": 3,
"conversion_id": "xxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"tags": ["セキュリティ"]
}
]
}トラブルシューティング
認証エラー(HTTP 401/403)
[認証エラー] rokadoc APIへの認証に失敗しました。対処法:
環境変数
ROKADOC_API_KEYに正しいAPIキーが設定されているか確認APIキーの有効期限が切れていないか確認
APIキー前後に不要な空白が含まれていないか確認
接続エラー
[接続エラー] rokadoc APIに接続できません。対処法:
ネットワーク接続が正常か確認
ROKADOC_BASE_URLが正しいURLを指しているか確認ファイアウォールやプロキシの設定を確認
DNSが正しく解決できているか確認
タイムアウト
[タイムアウト] rokadoc APIからの応答がありません。対処法:
rokadocサービスが稼働中か確認
ネットワークの遅延が大きくないか確認
大きなファイルの変換の場合は時間がかかることがあります
リクエストは自動的に最大3回リトライされます
コンテナ起動エラー
APIキー未設定:
Error: 環境変数 ROKADOC_API_KEY が設定されていません。→ -e ROKADOC_API_KEY=<your-api-key> を docker run コマンドに追加してください。
不正なBase URL:
Error: ROKADOC_BASE_URL の形式が不正です。http:// または https:// で始まるURLを指定してください。→ ROKADOC_BASE_URL に有効なURL(https:// で始まる)を設定してください。
NPMパッケージ起動エラー
APIキー未設定(ROKADOC_API_KEY):
npx -y rokadoc-mcp-server の標準エラー出力に次のメッセージが出力され、MCPハンドシェイクを開始せずに終了コード1で終了します。
[設定エラー] 環境変数 ROKADOC_API_KEY が設定されていないか、空白のみです。有効なAPIキーを設定してください。MCPクライアント経由の場合は、サーバーが起動直後に終了するため「接続できない」「サーバーが終了した」旨の表示になります。詳細はクライアントのMCPサーバーログ(標準エラー出力)で確認してください。
対処法:
MCPクライアント設定の
envにROKADOC_API_KEYを指定する(前述の設定例を参照)手動起動時は
ROKADOC_API_KEY=<your-api-key> npx -y rokadoc-mcp-serverのように環境変数を渡す空文字列や空白のみの値を設定していないか確認する(前後の空白は自動的に除去されます)
Node.jsのバージョン不足(EBADENGINE):
Node.js 22 未満の環境では、パッケージ取得時に標準エラー出力へ次のような警告が出力されます。
npm warn EBADENGINE Unsupported engine {
npm warn EBADENGINE package: 'rokadoc-mcp-server@1.0.7',
npm warn EBADENGINE required: { node: '>=22' },
npm warn EBADENGINE current: { node: 'v20.11.0', npm: '10.2.4' }
npm warn EBADENGINE }警告のまま起動を試みても、実行時に構文エラーやAPI未定義エラーで異常終了する場合があります。
対処法:
node --versionで実行中のバージョンを確認するNode.js
22以降へ更新する(nvm等のバージョン管理ツールを利用している場合は、MCPクライアントが参照するNode.jsも切り替わっているか確認する)Node.jsを更新できない場合は、Dockerイメージでの利用を検討する
npm向けREADME
npmレジストリのパッケージページに掲載しているnpx中心の導入手順は NPM.md を参照してください。環境変数(ROKADOC_API_KEY / ROKADOC_BASE_URL)、ROKADOC_BASE_URL の既定値、Node.js最小バージョン >=22 は本ドキュメントと同一の値です。
ライセンス
MIT
Available Tools
4 toolsconvert_documentドキュメント変換B
ドキュメントファイルをrokadocに送信して構造化テキストに変換する
| Name | Required | Description | Default |
|---|---|---|---|
| to_page | No | 終了ページ(正の整数) | |
| space_id | No | スペースID | |
| file_path | Yes | 変換対象のファイルパス | |
| from_page | No | 開始ページ(正の整数) | |
| space_name | No | スペース名(space_id が指定されている場合は無視されます) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, openWorldHint=true, idempotentHint=false, and destructiveHint=false, so the agent knows it is a non-destructive external write. The description adds that files are sent to rokadoc and converted to structured text, but omits critical behavior such as whether the operation is asynchronous and requires polling via get_conversion_result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded with the core action and resource, with no redundant wording. It is appropriately sized for the essential information it conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a conversion tool with five parameters, no output schema, and siblings for listing conversions and retrieving results, the description is missing crucial workflow context. It does not explain that the conversion may be asynchronous or that results are fetched via get_conversion_result, leaving the agent without enough information to invoke it correctly in a pipeline.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters (file_path, from_page, to_page, space_id, space_name) are already documented in the input schema. The description adds no extra meaning about page ranges, space selection, or precedence rules.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (変換する) and resource (ドキュメントファイル) and names the external service (rokadoc), so an agent can tell what the tool does. It does not distinguish this from siblings like get_conversion_result or list_conversions, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives (e.g., list_conversions, get_conversion_result). It implies a conversion context but offers no explicit conditions, prerequisites, or workflow routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_conversion_result変換結果取得CRead-onlyIdempotent
指定された変換ジョブの結果を取得する
| Name | Required | Description | Default |
|---|---|---|---|
| space_id | No | スペースID | |
| space_name | No | スペース名(space_id が指定されている場合は無視されます) | |
| conversion_id | Yes | 変換ジョブID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, covering the safety profile. The description adds nothing behavioral — it does not say what happens if the conversion is still running, whether it blocks or polls, or what the retrieved result contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero waste, appropriate for a simple retrieval tool. It is efficient, though the brevity contributes to the gaps noted in other dimensions.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining the return value — job status, artifacts, or error states when a job is incomplete or failed — and says none of that. For a result-retrieval tool this is a meaningful omission, though the annotations do cover the safety profile.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so space_id, space_name and conversion_id are already documented in the schema, including the precedence rule for space_id. The description adds no syntax, format, or ID-source detail beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (取得) and resource (変換ジョブの結果) with clear scope — the result of one conversion job. It does not, however, explicitly distinguish itself from siblings such as list_conversions or convert_document, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus convert_document (to start a conversion) or list_conversions (to enumerate jobs). The agent must infer the workflow position from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_conversions変換ジョブ一覧CRead-onlyIdempotent
変換ジョブの一覧を取得する
| Name | Required | Description | Default |
|---|---|---|---|
| space_id | No | スペースID | |
| space_name | No | スペース名(space_id が指定されている場合は無視されます) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
アノテーションが readOnlyHint=true、idempotentHint=true、destructiveHint=false、openWorldHint=true を宣言しており、安全性プロファイルは既にカバーされている。説明文はそれを超える情報(ページネーション、返却件数、認可要件など)を一切追加しておらず、付加価値が乏しい。
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
一文のみで無駄な表現はないが、簡潔さというよりは情報不足に近い。前置きもなく端的ではあるが、その短さが有益な文脈を犠牲にしている。
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
読み取り専用の一覧取得ツールでアノテーションが安全性をカバーしているものの、出力スキーマが存在しないため、返却される内容(ジョブの状態や形式)を説明する必要がある。説明文はそれに応えておらず、エージェントが呼び出し結果を正しく解釈するための情報が不足している。
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
スキーマ記述カバレッジが 100% であり、space_id / space_name の意味や「space_id 指定時は space_name を無視」という優先順位はスキーマ側で完全に説明されている。説明文はパラメータに言及しておらず、スキーマ以上の意味を追加していないため、ベースラインの 3 が妥当。
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
「変換ジョブの一覧を取得する」は明確な動詞(取得する)とリソース(変換ジョブの一覧)を示しており、何をするかは即座に分かる。ただし、get_conversion_result や convert_document といった兄弟ツールとの違いには一切触れておらず、差別化はされていない。
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
いつ使うべきか、いつ使うべきでないか、あるいは代替ツール(get_conversion_result など)との使い分けについての言及が一切ない。リスト取得という用途は名前から推測できるが、説明文による誘導は存在しない。
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_documentsドキュメント検索BRead-onlyIdempotent
rokadocに登録されたドキュメントに対してRAG検索を実行する
| Name | Required | Description | Default |
|---|---|---|---|
| tags | No | タグフィルタ(AND条件) | |
| query | Yes | 検索クエリ(1〜1000文字) | |
| space_id | No | スペースID | |
| space_name | No | スペース名(space_id が指定されている場合は無視されます) | |
| max_results | No | 最大取得件数(デフォルト: 3、最大: 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=true). The description adds that the search is RAG-based, which gives useful context about retrieval semantics, but it does not disclose result format, ranking behavior, or other operational constraints beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. While extremely concise, it is arguably undersized for a tool with five parameters and no output schema, but the sentence itself earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should ideally explain what RAG search returns (e.g., document passages or ranked results), but it does not. It also lacks usage context relative to sibling conversion tools, leaving meaningful gaps for an agent trying to select and interpret the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all five parameters including query, tags, space_id, space_name, and max_results. The description adds no additional parameter semantics beyond what the schema provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: execute RAG search against documents registered in rokadoc. The resource 'documents' differentiates it from the conversion-oriented siblings. However, it does not explicitly contrast itself with alternatives such as convert_document or list_conversions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives, nor on prerequisites or exclusions. The only implied usage is that it searches documents, which is already evident from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v1.1.2- First observed
convert_document - First observed
get_conversion_result - First observed
list_conversions - First observed
search_documents
TDQS
Scored across 4 tools
Each tool targets a distinct action on a distinct resource: submitting a conversion, listing jobs, fetching a job result, and RAG-searching documents. There is no meaningful overlap between the submission and retrieval tools, and search_documents is clearly separate.
All four tools follow a consistent snake_case verb_noun pattern (list_conversions, get_conversion_result, search_documents, convert_document). No deviations in style or convention.
Four tools is a reasonable, focused surface for a document conversion + RAG service, though it leans slightly thin. Each tool earns its place without redundancy.
The core workflow (submit conversion, list jobs, fetch result, search) is covered, but there is no way to delete or cancel a conversion/document or fetch document metadata. These gaps limit lifecycle management.
Maintenance
Related MCP Connectors
DocBase MCP server for AI agents
Document-to-Markdown MCP server — convert PDF, Office and HTML into LLM-ready Markdown.
Convert PDF documents to Markdown for AI agents through an authenticated remote MCP server.
Agentic search over your Dewey document collections from any MCP-compatible client.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides semantic search over markdown documentation using RAG, allowing natural language queries and integration with MCP clients.1MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server for Retrieval-Augmented Generation (RAG) operations. It provides tools for building and querying vector-based knowledge bases from document collections, enabling semantic search and document retrieval capabilities.3MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables any MCP-compatible application to perform advanced multi-modal document processing and retrieval using RAG-Anything.MIT
- FlicenseNot gradedqualityDmaintenanceA RAG service based on FastMCP that enables document indexing and retrieval (keyword/vector search) through the MCP protocol.-