セキュリティモデル
formulon-mcp は、ホストから与えられたファイル権限で動くローカルの stdio プロセスです。ディレクトリの許可リスト、認証、利用者ごとのセッションアクセス制御はありません。必要なファイル制限とプロセス制限は MCP クライアントや OS で設定してください。
パスと書き込み
ワークブックの入力・出力パスとプレビューの出力パスは、サーバープロセス側で解決されます。相対パスの基準はサーバーの作業ディレクトリです。チャットで見えているディレクトリと異なる場合があるため、エージェントの作業手順では絶対パスを使ってください。
作業ディレクトリを変えてもファイルアクセスは制限されません。ツールは、権限があるパスを読み書きできます。ワークブックを開く・保存する以外にファイルへ触れる入力は 3 つあります。formulon_preview_range の outputPath は .png または .svg を書き出し、formulon_image_operation は挿入時に path のローカル画像を読み、get 操作では outputPath に取り出した画像を書き込みます。
ワークブックの保存は、保存先と同じ場所の一時ファイルに書いてから名前を変更します。保存が失敗しても、そのパスにある既存ファイルが途中で切れることはありません。
formulon_save_session は、明示的な outputPath、セッションの直前の保存先、元の入力パスの順で保存先を決めます。省略すると入力ファイルを上書きする場合があります。レビュー用の作業では別の出力パスを明示してください。保存応答にはバイト数と診断が含まれ、ワークブックのバイト列は含まれません。
セッションの寿命と分離
各 sessionId は別々のメモリ上のワークブックを指します。サーバープロセスが異なればセッション一覧も別です。同じプロセス内では、ID を知っている呼び出し元がそのセッションを使えます。ID は操作用の識別子であり、認証情報ではありません。
ワークブックを閉じると未保存の変更も破棄されます。サーバーが終了すると全セッションが失われます。自動保存や復旧用のログはありません。子プロセスは MCP クライアントが管理します。接続を閉じたときにサーバーも停止するようにしてください。
入力の検証と途中までの変更
ツールのスキーマは呼び出し前に JSON の形を検証します。上位の操作ではアドレスの解決と各操作の上限確認も行います。セルの一括変更はアドレスと有限数を事前検証します。レイアウトの一括変更は操作一覧全体を事前検証してから適用します。
検証はトランザクションではありません。適用中にエンジンが失敗すると、それ以前の変更が残る場合があります。低レベルの変更メソッドはエンジンを呼ぶ前にセッションを変更あり(dirty)にするため、失敗しても変更あり(dirty)が残ります。変更に失敗したらワークブックを確認してください。途中までの作業を破棄するには、元ファイルを新しいセッションで開き直します。ワークフローも参照してください。
許可リストによる API アクセス
formulon_workbook_call は、src/session/workbook-call.ts にあるメソッドだけを呼び出します。JavaScript の評価や呼び出し元が渡したコードの実行は行いません。直接保存するメソッド、ワークブックの生成・解放、コールバックを取るメソッド、生のバイト列を受け渡すメソッドは許可されていません。対象のメソッドと代わりに使う高レベルツールは許可されるメソッドに記載しています。直接保存はセッションの管理情報も通らないため、ワークブックの書き込みはすべて formulon_save_session または formulon_update_workbook を経由します。
許可リストは呼び出せるメソッドを制限します。個々の編集が業務上適切かどうかは判断しません。
計算、プレビュー、外部コンテンツ
サーバーは VBA を実行しません。既存のマクロや描画パーツは、エンジンが対応する範囲で保持されます。対象ファイルの読み込み診断と保存診断を確認してください。外部ワークブックリンクの参照先は自動取得しません。
数式計算には Formulon の WASM エンジンを使います。PNG プレビューには同梱のネイティブレンダラー @resvg/resvg-js とシステムのフォントを使います。HTTP 接続や任意モジュールを読み込むツールは公開しません。npx によるパッケージ取得にはネットワークが必要な場合があります。計算自体はローカルのエンジンで行います。
形式と数式の制限はファイル形式サポートと数式カバレッジ、描画の制限はレイアウトとプレビューを参照してください。