mcpField
M
mcp-server-spreadsheet

mcp-server-spreadsheet

ローカル
github.com/marekrostデータ・分析211 週間前に更新

mcp-server-spreadsheet について

.xlsx、.csv、.odsの読み書きに対応するMCPサーバーです。セル単位の操作とシート横断のDuckDB SQLを組み合わせ、値の編集時も書式を保持します。

主な機能

  1. 013種類の表計算形式の読み書き
  2. 02シート、行、列、セルの管理
  3. 03値やパターンの検索
  4. 04DuckDB SQLによるシートのクエリ
  5. 05SQL変更のファイルへの反映
  6. 06ディレクトリ単位のアクセス制限

活用シーン

  1. 01ワークブックのセルの確認と更新
  2. 02シートをまたぐデータの結合と集計
  3. 03ワークブック内の一致する値の検索

MCP 対応

ワークブックやシートの管理、セル単位の読み書き、検索、DuckDB SQLによるクエリと変更のMCPツールを提供します。各操作ではファイルとシートを明示します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"marekrost-mcp-server-spreadsheet": {
"command": "uvx",
"args": [
"mcp-server-spreadsheet"
],
"env": {
"MCP_SPREADSHEET_ROOT": "<MCP_SPREADSHEET_ROOT>"
}
}
}
}
起動コマンドuvx mcp-server-spreadsheet
設定が必要な環境変数
MCP_SPREADSHEET_ROOTOptional. Absolute path to a directory; all tool path arguments are restricted to this tree. Unset = no restriction.

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

パッケージ
pypimcp-server-spreadsheet0.3.3

ツール

25

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
directorystringはいスキャンするディレクトリの絶対パスまたは相対パス

詳細

mcp-server-spreadsheet

mcp-name: io.github.marekrost/mcp-server-spreadsheet

スプレッドシートファイル(.xlsx、.csv、.ods)の読み取りと書き込みを行う、データファーストの MCP サーバーです。

主な機能

  • マルチフォーマット — Excel(.xlsx)、CSV(.csv)、OpenDocument(.ods)ファイルを、統一されたツールインターフェースで扱えます。
  • デュアルモード — セル単位のワークブック操作と、DuckDB を活用した SQL クエリエンジンを、同じファイルに対して自由に組み合わせて使用できます。
  • ワークブックの基本操作 — ワークシート、行、列、セル、検索を扱えます。
  • データのみ — 既存の書式を保持しますが、読み書きするのは値のみです。
  • ステートレス — 呼び出しごとに file と sheet を明示的に指定します。ハンドルやセッションは必要ありません。
  • アトミック保存 — 一時ファイルに書き込んだ後、os.replace() で対象パスに置き換えます。
  • 書き込み時の型変換 — 数値文字列は数値に変換され、それ以外はテキストになります。
  • シートをまたいだ SQL — インメモリの DuckDB を介して、JOIN、GROUP BY、集計、サブクエリを実行できます。変更はファイルに書き戻されます。
  • 単一シートのワークブックとしての CSV — CSV ファイルは default という名前のシートを1つ持つワークブックとして扱われます。

要件

  • Python 3.10+

インストール

PyPI から(推奨)

ローカルのチェックアウトは不要です。MCP クライアントを設定するだけです(以下を参照)。

ソースから(開発用)
git clone https://github.com/marekrost/mcp-server-spreadsheet.git
cd mcp-server-spreadsheet
uv sync

使用方法

Claude Desktop

claude_desktop_config.json に追加します。

PyPI を使用する場合(推奨):

{
  "mcpServers": {
    "mcp-server-spreadsheet": {
      "command": "uvx",
      "args": ["mcp-server-spreadsheet"]
    }
  }
}

ローカルソースを使用する場合:

{
  "mcpServers": {
    "mcp-server-spreadsheet": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/mcp-server-spreadsheet", "main.py"]
    }
  }
}
Claude Code

.mcp.json に追加します。

PyPI を使用する場合(推奨):

{
  "mcpServers": {
    "mcp-server-spreadsheet": {
      "command": "uvx",
      "args": ["mcp-server-spreadsheet"]
    }
  }
}

ローカルソースを使用する場合:

{
  "mcpServers": {
    "mcp-server-spreadsheet": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/mcp-server-spreadsheet", "main.py"]
    }
  }
}
スタンドアロン(stdio トランスポート)
# PyPI
uvx mcp-server-spreadsheet

# Local source
uv run main.py
ディレクトリへのファイルアクセス制限(任意)

MCP_SPREADSHEET_ROOT を設定すると、すべてのパス引数を単一のディレクトリツリー内に制限できます。範囲外のパスは拒否され、エージェントに明確なエラーが返されます。

{
  "mcpServers": {
    "mcp-server-spreadsheet": {
      "command": "uvx",
      "args": ["mcp-server-spreadsheet"],
      "env": { "MCP_SPREADSHEET_ROOT": "/home/me/spreadsheets" }
    }
  }
}

設定しない場合(デフォルト)は、サーバープロセスがアクセスできるすべてのパスが許可されます。

フォーマットに関する注意

フォーマットシート数式型
.xlsx複数文字列として保持ネイティブ(int、float、date、bool)
.ods複数保持されないネイティブ(int、float、date、bool)
.csv1つ(default)該当なし読み込み時に推定(int、float、text)

CSV ファイルでは、シート管理ツール(add_sheet、delete_sheet、copy_sheet)を実行するとエラーになります。

ツール

ワークブック操作
ツール説明
list_workbooksディレクトリ内のすべてのスプレッドシートファイルを一覧表示します(再帰検索なし)
create_workbook_file新しい空のスプレッドシートファイルを作成します(拡張子に基づくフォーマット)
copy_workbook既存のファイルを新しいパスにコピーします
シート操作
ツール説明
list_sheetsワークブック内のすべてのシート名を一覧表示します
add_sheet新しいシートを追加します(名前と位置は任意)
rename_sheet既存のシートの名前を変更します
delete_sheet名前を指定してシートを削除します
copy_sheetワークブック内でシートを複製します(新しい名前と位置は任意)
データの読み取り
ツール説明
read_sheetシート全体を行として読み取ります(行・列の範囲指定は任意)
read_cellB3 など、単一セルの値を読み取ります
read_rangeA1:D10 など、矩形範囲を読み取ります
get_sheet_dimensions使用範囲の行数と列数を取得します
データの書き込み
ツール説明
write_cell単一セルに値を書き込みます
write_range指定したセルを開始位置として、2次元配列を書き込みます
append_rows最後に使用されている行の後に行を追加します
insert_rows指定位置に空白行または値を入力済みの行を挿入します(行は下に移動します)
delete_rowsインデックスで行を削除します(行は上に移動します)
clear_range行や列を削除せずに、範囲内の値を消去します
copy_rangeセルの範囲を別の場所にコピーします(別のシートへのコピーも可能)
列操作
ツール説明
insert_columns指定位置に空白列を挿入します
delete_columnsインデックスで列を削除します
検索
ツール説明
search_sheet値または正規表現パターンを検索し、一致するセル参照を返します
テーブルモード(SQL)
ツール説明
describe_table列名、推定された型、行数、サンプル値を調べます
sql_query読み取り専用の SQL SELECT を実行します(シートをまたいだ JOIN、GROUP BY、集計、サブクエリをサポートします)
sql_executeINSERT INTO、UPDATE、または DELETE FROM を実行し、変更をファイルに書き戻します

SQL の例:

-- Filter and sort
SELECT name, revenue FROM Sales WHERE status = 'Active' ORDER BY revenue DESC LIMIT 20

-- Cross-sheet JOIN
SELECT o.order_id, c.name FROM Orders o JOIN Customers c ON o.customer_id = c.id

-- Aggregate
SELECT department, COUNT(*) AS n, AVG(salary) AS avg FROM Employees GROUP BY department

-- Mutate
UPDATE Sales SET status = 'Closed' WHERE quarter = 'Q1' AND revenue < 1000
DELETE FROM Logs WHERE date < '2024-01-01'

スペースを含むシート名は、引用符で囲む必要があります:SELECT * FROM "Q1 Sales"。

テーブルが 1 行目から始まらないシート

3 つの SQL ツールはすべて、header_row と data_start_row を受け付けます。それぞれ整数(すべてのシートに適用)または {sheet_name: row} のマッピング(指定されていないシートにはデフォルトが適用)を指定できます。列名が 1 行目より下にある場合は header_row を使用し、ヘッダーとデータの間に単位を示す行などの余分な行がある場合は data_start_row を使用します。

# Header on row 3, data follows immediately
sql_query(file, 'SELECT * FROM "People"', header_row=3)

# Mixed workbook: People headers at row 3, Orders header at row 1 with a
# units row at row 2.
sql_query(
    file,
    'SELECT * FROM "Orders" o JOIN "People" p ON o.name = p.name',
    header_row={"People": 3, "Orders": 1},
    data_start_row={"Orders": 3},
)

sql_execute は変更を書き戻す際、header_row より上の行を保持します。

テストの実行

uv sync --group dev
uv run pytest

各ツールは、一時ディレクトリに生成された .xlsx、.csv、.ods のフィクスチャを使ってテストされます。

共通パラメーター

シート単位の各ツールは、次のパラメーターを受け付けます。

パラメーター必須説明
fileはいスプレッドシートファイル(.xlsx、.csv、または .ods)へのパス
sheetいいえシート名。デフォルトではワークブックの最初のシートが使用されます

すべての行・列インデックスは1 始まりです。セル参照には A1 形式(A1、$B$2)を使用します。

コメント

MCP は初めてですか?

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

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