mcpField
A
ASTra

ASTra

ローカル
attentionform.com生産性01 日前に更新

ASTra について

ASTraは、コーディングアシスタントやカスタムLLMエージェント向けのWord文書MCPサーバーです。.docxの確認、検索、編集、書き出しに対応し、トランザクション編集、保存時のXMLスキーマ検証、ディレクトリのサンドボックス化を備えています。

主な機能

  1. 01文書内容の確認と検索
  2. 02文書編集操作の一括実行
  3. 03.docxファイルの作成と書き出し
  4. 04保存時のXMLスキーマ検証
  5. 05許可ディレクトリ内へのアクセス制限

活用シーン

  1. 01文書内の特定テキストの検索
  2. 02Word文書の内容を一括変更
  3. 03レポート、メモ、空白文書の作成
  4. 04保存前の文書変更の検証

MCP 対応

ASTraはstdio経由で19個のツールを公開し、MCPクライアントによるWord文書の確認、検索、編集、書き出しを可能にします。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"com-attentionform-astra": {
"command": "npx",
"args": [
"-y",
"@attentionform/astra-mcp-server"
]
}
}
}
起動コマンドnpx -y @attentionform/astra-mcp-server

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@attentionform/astra-mcp-server0.4.1

ツール

19

掲載時のツール一覧 · 1 日前に更新

パラメーター型必須説明
pathstringはい
authorstringいいえ
sessionIdanyいいえ非推奨:セッション ID はサーバーが生成します(sess_<uuid>)。sessionId は省略し、返された ID を使用してください。クライアント指定の値は E_VALIDATION で拒否されます(決定的 ID は --allow-client-session-ids によるテスト専用です)。
allowMacrosbooleanいいえ
stripMacrosbooleanいいえ
summaryOnlybooleanいいえ
validationTimeoutMsintegerいいえ

詳細

@attentionform/astra-mcp-server

ASTra ドキュメントエンジン向けの公式 Model Context Protocol(MCP)サーバーです。

@attentionform/astra-mcp-server は、標準入出力(stdio)を介して、19 種類の包括的なエージェントインターフェースを提供します。Claude Desktop、Cursor、Windsurf、Cline などの AI コーディングアシスタントや、カスタム LLM エージェントが、トランザクションの整合性を保ち、スキーマを破損させることなく、Microsoft Word(.docx)ドキュメントを検査、検索、変更、エクスポートできるようになります。


クイックスタート

npx で実行(推奨)

インストールは不要です。--allowed-dir でドキュメントのディレクトリを指定します。

npx -y @attentionform/astra-mcp-server --allowed-dir /path/to/your/documents

セキュリティに関する注意: ASTra は厳格なディレクトリのサンドボックス化を適用します。サーバーが読み書きするのは、--allowed-dir(または ASTRA_EXTRA_DOC_ROOTS 環境変数)で明示的に指定したディレクトリ内のファイルだけです。パスは絶対パスで、ディスク上に存在している必要があります。指定したフォルダーがアクセス可能な範囲全体であり、システムの一時フォルダーは追加されません。指定したフォルダーと同じ階層またはそれより上にあるシンボリックリンクはたどりますが、フォルダー配下にある、フォルダー外を指すリンクは拒否されます。

検証。 open_document はファイルを検証し、valid、invalid、timed-out、skipped のいずれかを報告します。ファイルを開くこと自体は拒否しません。保存は、そのファイルに元々あったエラーを超える検証エラーが追加されない場合に許可されます。サーバーフラグ:--strict-validation(ASTRA_STRICT_VALIDATION=1 も指定可能)はすべてのエラーを拒否します。--open-validation-timeout <ms>(ASTRA_OPEN_VALIDATION_TIMEOUT_MS も指定可能)は、開くときの待ち時間を設定します。デフォルトは 5000 です。

マクロとサイズ制限。 open_document は allowMacros(マクロ関連のパーツを保持)または stripMacros(パーツとそれらへの参照をすべて削除)を指定できます。ZIP 爆弾の上限は、環境変数から読み込む ASTRA_MAX_RATIO(デフォルトは 100)と ASTRA_MAX_UNCOMPRESSED_BYTES です。

グローバルインストール
npm install -g @attentionform/astra-mcp-server
astra-mcp-server --allowed-dir /path/to/your/documents

クライアントとの連携

簡単な JSON スニペットで、ASTra を AI エージェントに追加できます。

1. Claude Desktop

Claude Desktop の設定ファイルに ASTra を追加します。

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "astra": {
      "command": "npx",
      "args": [
        "-y",
        "@attentionform/astra-mcp-server",
        "--allowed-dir",
        "/absolute/path/to/your/documents"
      ],
      "env": {
        "NODE_ENV": "production"
      }
    }
  }
}
2. Cursor IDE

プロジェクトのルートにある .cursor/mcp.json を作成または編集します。

{
  "mcpServers": {
    "astra": {
      "command": "npx",
      "args": [
        "-y",
        "@attentionform/astra-mcp-server",
        "--allowed-dir",
        "${workspaceFolder}"
      ]
    }
  }
}
3. Windsurf

Windsurf の MCP 設定(~/.codeium/windsurf/mcp_config.json)に追加します。

{
  "mcpServers": {
    "astra": {
      "command": "npx",
      "args": [
        "-y",
        "@attentionform/astra-mcp-server",
        "--allowed-dir",
        "/absolute/path/to/your/documents"
      ]
    }
  }
}
4. Cline(VS Code 拡張機能)

Cline の MCP 設定タブで、以下を設定します。

  • サーバー名: astra
  • コマンド: npx
  • 引数: ["-y", "@attentionform/astra-mcp-server", "--allowed-dir", "${workspaceFolder}"]
スキーマの最新状態(ツールの変更時)

提供される各ツールには、バージョンスタンプ付きの JSON コピーが schemas/mcp/ に含まれます(x-generated-from にサーバービルドが記載されています)。クライアントはこれらのスキーマをキャッシュします。

  • メモリーキャッシュ(アプリの実行期間中は Claude Desktop、セッションごとは Cursor と Zed):新しいツールを反映するには、ホストアプリを再起動します。
  • ディスクキャッシュ(JSON コピーを同梱するファイルベースの設定):ダンプを再実行し、クライアントに新しいディレクトリを指定します。
npx -y @attentionform/astra-mcp-server --dump-schemas ./fresh-schemas
npx -y @attentionform/astra-mcp-server --check-schemas ./fresh-schemas

--check-schemas は、すべてのスタンプがインストール済みサーバーと一致する場合は 0 で終了します。一致しない場合は、古いファイルがあることを警告して 1 で終了します。CI はプッシュのたびに schemas/mcp/ を再生成して差分を確認するため、コピーを更新せずにスキーマを変更するとビルドが失敗します。


19 種類の MCP ツール

ASTra は、機能別に整理された 19 種類のツール一式を提供します。サーバーは tools/list を介して 19 種類すべてのツールを返します。

open_document

.docx ファイルを、分離されたインメモリ編集セッションで開きます。

パラメーター:

パラメーター型必須説明
pathstringはい許可されたディレクトリ内にある .docx ファイルの絶対パスです。
sessionIdstringいいえサーバーが発行するセッション ID です(指定は非推奨。テスト専用)。
summaryOnlybooleanいいえ省略または true の場合は簡潔な概要を返します。false の場合は、完全な構造概要とスタイル XML を含めます。
allowMacrosbooleanいいえマクロの構成要素をバイト単位でそのまま保持します。
stripMacrosbooleanいいえ読み込み時にマクロの構成要素を削除します。
authorstringいいえこのセッションで、作成者が指定されていない変更履歴とコメントに使用する既定の作成者です(サーバーの ASTRA_AUTHOR、次に ASTra にフォールバックします)。操作自体の author が優先されます。
validationTimeoutMsintegerいいえファイルを開く際にバリデーターを待つ時間(ミリ秒)です。0 の場合、チェックをスキップします。既定値は 5000 です。サーバーフラグ --open-validation-timeout または ASTRA_OPEN_VALIDATION_TIMEOUT_MS でも指定できます。

戻り値: { ok: true, sessionId, revision, summary, evicted, validation }。validation は、{ status: "valid" }、ファイルに既存のバリデーターエラーがある場合は { status: "invalid", preExistingErrors, messages, baselineComparable, note }、または { status: "timed-out" }、{ status: "skipped" } です。


inspect_document

Token-Optimized Outline Notation(TOON)を使用して、ドキュメントの構造を調べます。

パラメーター:

パラメーター型必須説明
sessionIdstringはいアクティブなセッション識別子です。
fidelitystringいいえ"compact"(既定値)、"standard"、または "full" です。
sectionIdstringいいえ指定したセクションにアウトラインを限定します。
maxTextLengthnumberいいえ文字数の上限で、ランのテキストを切り詰めます。
offsetnumberいいえドキュメントノードのみを対象とするページネーションの開始行です(既定値:0)。最後のノードを超えるオフセットは拒否されます。
limitnumberいいえ返すノード行の最大数です(既定値:50、最大値:200)。
aroundNodestringいいえ検査ウィンドウの中心にするノード ID です。
windownumberいいえaroundNode の前後に表示する行数です(既定値:5)。
maxTokensnumberいいえ行の区切り位置で適用するトークン予算の上限です(200~8000)。
includearrayいいえ含めるレビュー記録です(任意):["comments"]、["revisions"]、または両方です。
reviewOffsetnumberいいえinclude リストの開始記録です(既定値:0)。ノードウィンドウを移動せずに、コメントと変更履歴をページ分割します。
reviewLimitnumberいいえinclude リストごとの記録数です(既定値:50。50 を超える値は 50 に制限されます)。
commentIdnumberいいえ検査する特定のコメント ID です。include:["comments"] が必要です。
revisionIdnumberいいえ検査する特定の変更履歴 ID です。include:["revisions"] が必要です。

戻り値: { ok: true, sessionId, revision, fidelity, palette, toonText, rowCount }


search_content

一致する安定したノード ID とテキストスニペットを返す高速なテキスト検索です。

パラメーター:

パラメーター型必須説明
sessionIdstringはいアクティブなセッション識別子です。
querystringはい検索クエリ文字列です(1~500 文字)。
regexbooleanいいえクエリを正規表現として扱います(既定値:false)。
scopestringいいえ検索範囲です:"body"(既定値)、"comments"、または "all"。

戻り値: { ok: true, sessionId, matches: [{ id, preview, cells? }], truncated? }。一致結果は最大 50 件返されます。それ以上の結果がある場合は truncated: true になります。表に一致した場合は cells が表示されます。最大 5 件のセルアドレス(例:t_001:r3c1)が含まれ、replace、style、namedStyle、clearFormat、hyperlink、bookmark、comment の target として渡せます。セルアドレスは、inspect_document がグリッドを表示する形式に従って <tableId>:r<row>c<col> となり、行と列の番号は 1 から始まります。複数の段落があるセルの場合は :p<n> を追加します。


execute_batch

スキーマ検証とロールバック保証を備えた、型付き操作のアトミックな配列を実行します。

パラメーター:

パラメーター型必須説明
sessionIdstringはいアクティブなセッション識別子です。
operationsarrayはい1~500 個の型付き操作オブジェクトの配列です。
sequentialbooleanいいえ操作を順番に適用します(デフォルト:true)。
rollbackOnErrorbooleanいいえいずれかの操作が失敗した場合、バッチ全体をロールバックします(デフォルト:true)。
maxStepsnumberいいえ中止するまでの最大実行ステップ数です。
allowedDirstringいいえ画像の filePath の読み取りを許可する隔離ディレクトリです。
styleGuidestringいいえバッチごとのスタイルガイドの上書き指定(名前または .md パス)です。

戻り値: { ok: true, sessionId, appliedCount, revision, createdNodeIds, revisionsPending, revisionsUnresolved?, revisionsRemedy?, revisionResolution? }。revisionsPending は、残されたすべての変更履歴要素の数を示します(移動の場合は各マーカーを個別に数えます)。trackedChange の後に解決できなかった変更履歴が残った場合、revisionsUnresolved はその数を示し、revisionsRemedy は acceptAll を繰り返す代わりに、種類、ノード、理由を一覧表示します。削除された段落にブックマーク、コメント、または古いリンクが含まれていた場合、revisionResolution にも removedBookmarks、removedComments、staleLinks が一覧表示されます。


save_document

変更されたすべての XML パーツを ECMA-376 スキーマに照らして検証し、変更をディスクにコミットします。

パラメーター:

パラメーター型必須説明
sessionIdstringはいアクティブなセッション識別子です。
outPathstringいいえ保存先のパス(デフォルトは元のセッションパス)です。
messagestringいいえドキュメント履歴に記録するコミットログメッセージです。
authorstringいいえドキュメント履歴に記録する作成者名です。
allowMacrosbooleanいいえ保存時にマクロを保持することを明示するマクロポリシーです。
stripMacrosbooleanいいえ保存時にマクロを除去することを明示するマクロポリシーです。
strictbooleanいいえファイルを開いた時点ですでに存在していたエラーも含め、バリデーターのすべてのエラーを拒否します。また、w14:paraId を共有する段落も拒否します(通常の保存では段落の ID が再割り当てされます)。デフォルト:オフ。または、サーバーフラグ --strict-validation / ASTRA_STRICT_VALIDATION=1 で有効になります。

戻り値: { ok: true, sessionId, path, revision, commitOid, validation }。ファイルにバリデーターエラーがすでに存在し、編集によって新たなエラーが追加されなかった場合、validation は { ok: false, tolerated: true, preExistingErrors, introducedErrors: 0, messages } になります。それ以外の場合は { ok: true } です。


close_document

アクティブなセッションを閉じ、メモリ内のすべてのリソースを解放します。

パラメーター:

パラメーター型必須説明
sessionIdstringはいアクティブなセッション識別子です。

戻り値: { ok: true, sessionId }


new_document

エグゼクティブ向けテンプレートから新しい .docx ファイルを作成し、セッションに読み込みます。

パラメーター:

パラメーター型必須説明
outPathstringはい許可されたディレクトリ内の保存先ファイルパスです。
templatestringいいえテンプレートの種類:「"report"」、「"memo"」、または「"blank"」(デフォルト:「"blank"」)です。
forcebooleanいいえファイルがすでに存在する場合に上書きします(デフォルト:false)。
styleGuidestringいいえ添付する、同梱されたガイドの名前またはガイドの .md パスです。
authorstringいいえこのセッションでの変更履歴とコメントについて、作成者が指定されていない場合に使われるデフォルトの作成者です(サーバーの ASTRA_AUTHOR、次に ASTra を使用します)。操作自体に author が指定されている場合は、そちらが優先されます。
sessionIdstringいいえサーバーが発行するセッション ID です(指定は非推奨です。テスト専用)。

戻り値: { ok: true, path, sessionId, revision, template, bytes }


compose_document

Markdown 文字列を OOXML 構造にコンパイルし、ドキュメントに適切に適用します。

パラメーター:

パラメーター型必須説明
sessionIdstringはいアクティブなセッション識別子です。
markdownstringはいコンパイルして適用する Markdown ソーステキストです。
allowedDirstringいいえ相対画像およびグラフを解決するための制限ディレクトリです。
templatestringいいえ"report"、"memo"、または "blank" のシードコンテンツを置き換えます。セッションでの初回の compose のみ指定できます。
styleGuidestringいいえ構成にスタイルを適用するための、同梱ガイド名またはガイド .md パスです。
dollarMathbooleanいいえ$...$ 構文をインライン数式として扱います(デフォルト:false)。
anchorstringいいえブロックの挿入先です。ノード ID、"start"、または "end" を指定します(デフォルト:最後のノードの後)。
positionstringいいえanchor の "before" または "after"(デフォルト)を指定します。

戻り値: { ok: true, sessionId, appliedCount, revision, createdNodeIds, persistentIds? }。createdNodeIds(セッションの初回の compose では md_0001…、次回は md2_0001… のように続きます)はセッション全体で有効です。persistentIds は、保存ファイルを再度開いた後に参照できるよう、作成された各段落を保存ファイル内の ID に対応付けます(表は位置に基づいて番号が振り直されるため、一覧には含まれません)。


現在のセッションで作成された変更されていない組み込みテンプレートは、compose の際にサンプルコンテンツが置き換えられます。テンプレートが編集されている場合、外部テンプレートから読み込まれた場合、または後のセッションで再度開かれた場合、compose は既存のコンテンツを保持し、新しいコンテンツを追加します。

import_document

ディスク上の Markdown ファイルを、ディレクトリのサンドボックス内で開いているセッションに取り込みます。

パラメーター:

パラメーター型必須説明
sessionIdstringはいアクティブなセッション識別子です。
pathstringはい許可されたディレクトリ内にある、ディスク上の Markdown ファイルのパスです。
allowedDirstringいいえ相対画像およびグラフを解決するための制限ディレクトリです。
templatestringいいえテンプレートのシードの扱い("report"、"memo"、"blank")を確認します。
styleGuidestringいいえスタイルガイドを適用します(同梱名またはガイド .md パス)。
dollarMathbooleanいいえ$...$ 構文をインライン数式として扱います(デフォルト:false)。

戻り値: { ok: true, sessionId, appliedCount, revision }


export_document

現在のメモリ内の状態を PDF、HTML、または Markdown にレンダリングします。

パラメーター:

パラメーター型必須説明
sessionIdstringはいアクティブなセッション識別子です。
formatstringはいエクスポート形式です。"pdf"、"html"、または "markdown" を指定します。
outPathstringいいえ許可されたディレクトリ内の出力先ファイルパスです。
tagged_pdfbooleanいいえPDF のみ:タグ付き(アクセシブル)レンダリングを行います(デフォルト:true)。
taggedbooleanいいえtagged_pdf の別名です。
strictbooleanいいえPDF のみ:事前チェックでブロッカーが検出された場合、処理を失敗させます(デフォルト:false)。
imageModestringいいえMarkdown のみ:"file"(outPath が必要です。画像をアセットディレクトリ内の一意の生成先に抽出します。outPath が指定された場合のデフォルトです)または "embed"(base64 データ URI)を指定します。
assetPrefixstringいいえMarkdown のみ:imageMode が "file" の場合に使用するアセットディレクトリ名/プレフィックスを指定します。

戻り値: { ok: true, format, path, bytes, content }


visual_inspect

2D 空間レイアウトのテレメトリと、オプションでヘッドレスページレンダリングを生成します。

パラメーター:

パラメーター型必須説明
sessionIdstringはいアクティブなセッション識別子。
pagesarrayいいえ検査/レンダリングする1始まりのページ番号(最大4)。
withVisualbooleanいいえヘッドレスでレンダリングした画像を生成します(デフォルト:false)。
formatstringいいえ画像形式:"png"(デフォルト)または "jpeg"。
jpegQualitynumberいいえJPEG 品質係数(1~100)。
dpinumberいいえレンダリング解像度(72~300、デフォルト:150)。
outputDirstringいいえwithVisual を指定した場合、クライアントがサーバーの一時フォルダーを読み取れないときに備え、画像を <document>-page-<n>.png としてこのフォルダーに書き込みます(フォルダーがない場合は作成します)。ドキュメントのパスと同様に、許可されたフォルダー内である必要があります。デフォルト:サーバーの一時アーティファクトフォルダー。

戻り値: { ok: true, sessionId, telemetry, images: [{ page, path }], outDir }

telemetry のワイヤーフレームでは、ヘッダー行と最初の行を含む [TABLE: n cols]、リストマーカー - と 1.、および網掛けされた1セルの表を表す [CALLOUT] が表示されます。


get_document_history

ドキュメントの過去のコミット済みバージョンを取得します。

パラメーター:

パラメーター型必須説明
sessionIdstringはいアクティブなセッション識別子。
limitnumberいいえ取得するコミットエントリの最大数(デフォルト:20、最大:100)。
offsetnumberいいえコミットログのページネーションオフセット。

戻り値: { ok: true, history: [{ oid, message, author, timestamp }] }


preview_revert

変更を適用せずにロールバックをシミュレートします。

パラメーター:

パラメーター型必須説明
sessionIdstringはいアクティブなセッション識別子。
stepsnumberいいえロールバックするコミット数。
commitOidstringいいえ差し戻しをプレビューする対象の特定のコミットハッシュ。

戻り値: { ok: true, targetOid, affectedFiles, dirty }


revert_document

ドキュメントの状態を以前のコミットにロールバックし、追記専用の復元コミットを作成します。

パラメーター:

パラメーター型必須説明
sessionIdstringはいアクティブなセッション識別子。
stepsnumberいいえロールバックするコミット数。
commitOidstringいいえ復元対象の特定のコミットハッシュ。
discardUnsavedbooleanいいえコミットされていない変更を破棄します(デフォルト:false)。
messagestringいいえ差し戻しコミットのメッセージ(≤ 500 chars)。
authorstringいいえ差し戻しコミットの作成者識別子(≤ 100 chars)。
reasonstringいいえ差し戻しログの監査理由文字列(≤ 500 chars)。

戻り値: { ok: true, sessionId, path, revertedToCommit, revision }


redo_document

最後の差し戻しによって取り消されたバージョンを再適用します。

パラメーター:

パラメーター型必須説明
sessionIdstringはいアクティブなセッション識別子。
messagestringいいえやり直しコミットのメッセージ(≤ 500 chars)。
authorstringいいえやり直しコミットの作成者識別子(≤ 100 chars)。
reasonstringいいえやり直しログの監査理由文字列(≤ 500 chars)。

戻り値: { ok: true, sessionId, revision, commitOid }


validate_document

変更をコミットする前にセッションの OOXML スキーマを読み取り専用で事前監査します。

パラメーター:

パラメーター型必須説明
sessionIdstringはいアクティブなセッション識別子。

戻り値: { ok: true, sessionId, revision, dirty, validation: { valid, errorCount, errors } }

検証に関するアドバイス:validate_document が無効なドキュメントを報告した場合、normalizeHint では normalize_document を試してから再度検証することが提案されます。これはアドバイスであり、修復の予測や有効性の保証ではありません。検証ではヒントを生成するための修復ルールは実行されません。正規化すると開いているセッションが変更されます。結果を永続化するには save_document を使用し、必要に応じて新しい出力先パスを指定してください。


get_stats

トークン消費を抑えながら、単語数、段落数、表数、画像数、ページ数を集計します。

パラメーター:

パラメーター型必須説明
sessionIdstringはいアクティブなセッション識別子。

戻り値: { ok: true, sessionId, revision, dirty, words, paragraphs, tables, images, pages }


sanitize_document

ドキュメントセッションからメタデータ、リビジョン ID、作成者、PII を消去します。acceptAllRevisions または stripComments を指定しない限り、変更履歴とコメントは、変更履歴で削除されたすべてのテキストとともに保持されます。CLI のプリセット(単独の sanitize、--client-safe、--metadata-only、--redact-pii)では両方が有効になりますが、このツールでは有効になりません。CLI フラグ --keep-revisions と --keep-comments を指定すると、CLI の実行でもこのツールのデフォルトと同じ保持動作になります。

パラメーター:

パラメーター型必須説明
sessionIdstringはいアクティブなセッション識別子。
zeroRetentionbooleanいいえすべての追跡メタデータ、リビジョン ID、作成者、EXIF を完全に削除します。
purgeRSIDsbooleanいいえリビジョン保存 ID(w:rsidR、w:rsidRPr など)を削除します。
purgeAuthorsbooleanいいえ作成者の識別情報メタデータを削除します。
purgeExifbooleanいいえ埋め込み画像からメタデータと EXIF プロファイルを削除します。
purgePIIbooleanいいえテキストとコメント内の潜在的な PII パターンを編集して伏せます。
acceptAllRevisionsbooleanいいえ消去前にすべての変更履歴を承認します。解決できない変更履歴マークアップが残っている場合、または削除された段落のコメントスレッドが段落外にもアンカーされている場合は、E_VALIDATION(ファイルなし)で拒否されます(stripComments を追加してください)。承認された削除済み段落のコメントは削除されます。
stripCommentsbooleanいいえすべてのコメント、コメント参照、およびすべてのコメントパーツ(コメント ID とタイムスタンプを含む)を削除します。
replacementAuthorstringいいえ作成者の置換文字列(最大 256 文字)。
allowMacrosbooleanいいえ消去中、マクロパーツをバイト単位でそのまま保持します。
stripMacrosbooleanいいえ消去中にマクロパーツを削除します。

戻り値: { ok: true, sessionId, revision, dirty, removedRSIDs, purgedAuthors, strippedExifBytes, purgedPII, bodyPII, acceptedRevisions, strippedComments, strippedMacros, macroParts, filesTouched, droppedRogue }


normalize_document

開いているセッションに対する標準的な修復を行います。許可リストに基づく正規化(スキーマ順序のソートとタグの正規化)を実行した後、既知のバリデーターエラーの種類を、要素の順序、小数のサイズ、オン/オフの値、スマートタグ、重複した図形の種類など、ルールごとに修復します。表示テキストを変更する修復や、バリデーターエラーを追加する修復は破棄され、rolledBack に記録されます。このツールはファイルが有効であるとは保証しません。remaining は残っているバリデーターエラーの数です。

ドキュメントに履歴リポジトリがあり、修復前の状態がヘッドと異なる場合、その状態が最初にコミットされます(preStateCommit)。次の save_document で結果が記録されるため、steps: 1 を指定した revert_document を実行すると、修復前の状態に戻ります。

パラメーター:

パラメーター型必須説明
sessionIdstringはいアクティブなセッション識別子です。

戻り値: { ok: true, sessionId, revision, dirty, normalized, remaining, rolledBack, preStateCommit?, validation }。normalized には、書き換えられたすべての内容が列挙されます。remaining は残っているバリデーターエラーの数です。バリデーターが実行されなかった場合は -1 です。rolledBack は [{ rule, reason }] です。


推奨されるエージェントのライフサイクルフロー

AI エージェントは、次の標準的な実行順序に従う必要があります。

open_document (or new_document)
      ↓
inspect_document (get TOON outline & node IDs)
      ↓
search_content (optional: pinpoint exact target text)
      ↓
execute_batch (apply atomic mutations with rollback protection)
      ↓
visual_inspect / export_document (verify visual presentation)
      ↓
save_document (validate ECMA-376 schema & commit to disk)
      ↓
close_document (release session memory)

エラー処理と修正

ツール操作を完了できない場合、ASTra は構造化されたエラーの詳細を返します。

{
  "ok": false,
  "code": "E_VALIDATION",
  "message": "Invalid child element sequence in w:pPr",
  "remedy": "Ensure paragraph property tags follow ISO/IEC 29500 ordering rules.",
  "isError": true
}
よくあるエラーコード
  • E_SANDBOX:指定されたファイルパスが、宣言された --allowed-dir ディレクトリの範囲外です。
  • E_VALIDATION:操作パラメーターが Zod スキーマチェックまたは OOXML 検証に失敗しました。
  • E_SESSION:セッション ID が存在しないか、タイムアウトしています。
  • E_CONFLICT:force: true を指定せずに既存のファイルを上書きしようとしています。
  • E_DEPENDENCY:外部依存関係(PDF エクスポートに必要な LibreOffice など)が PATH に見つかりません。

ローカル開発

このリポジトリから @attentionform/astra-mcp-server をローカルで実行またはデバッグするには、次の手順に従います。

# Build package bundles
npm run build:packages

# Run local MCP server directly with node
node packages/mcp-server/dist/index.js --allowed-dir /path/to/docs

ライセンス

Business Source License 1.1(BUSL-1.1):ソースコードを利用できます。個人、教育機関、非営利団体、公共機関、小規模な組織および小規模な製品は無料で利用できます(LICENSING.md を参照)。その他の本番環境での利用には商用ライセンスが必要です。プランと価格については、https://attentionform.com/pricing をご覧ください。各バージョンはリリースから 4 年後に Apache-2.0 に移行します。LICENSE を参照するか、商用ライセンスについて [email protected] までお問い合わせください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。