生成AIを業務に取り入れたいというご相談は増えていますが、「AIに社内ツールのデータを見せたいのに、どう渡せばいいかわからない」という声もよく耳にします。
現状、AIは標準では次のような操作ができない場合が多いです。
例えばGitHub Copilotも、VS Code上の一部形式のファイルしか内容を認識できません。
しかし実務では、「AIに渡したいのに、渡しにくいデータ」がとても多いのが現実です。
そこで登場するのがMCP(Model Context Protocol)サーバーです。
本記事では、「MCPサーバーを活用する」シリーズの前編として、MCPサーバーをPythonで自作します。
後編では、このサーバーを GitHub Copilot(VS Code)から実際に呼び出すデモを掲載します。
MCP(Model Context Protocol)は、AIモデルが外部のツール・サービス・データソースと標準化された方法で連携できるようにするためのプロトコルです。
MCPが導入されることで、
といった流れが共通化され、AIと外部システムの連携がシンプルかつ拡張しやすくなるというのが大きな特徴です。

MCP対応ツールやサンプル実装は世の中に多数ありますが、それでも“自作する”メリットは大きいと感じています。
扱うデータは企業ごとに異なり、ほしい機能も業務によって違います。
自作であれば、
というメリットがあり、自社の業務フローに適したMCPサーバーを構築できます。
どのファイルを読み込み、どの情報をAIへ渡すか、不要な副作用やブラックボックス化を避けることができます。
外部に公開されているMCPサーバーのコードは便利な反面、
が読み取りづらい場合があります。
自作であれば、会社に合ったセキュリティに考慮したMCPサーバーを作成することが可能です。
今回は例として、「任意のExcelファイルの内容を読み取れるMCPサーバー」を実装します。
後編で GitHub Copilot から呼び出し、実際にローカルファイルを読み取らせてみます。
本MCPサーバーを導入することで、AIが本来アクセスできないExcel資料を安全な形で参照できるようになり、要約・整理・レビューといった業務を効率化できます。
※ 今回は必要最低限の機能のみを実装しています
import openpyxl
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("excel-mcp-server")
@mcp.tool(description="Excelファイル内のシート名を一覧表示します。")
def excel_list_sheets(file_path: str) -> str:
"""指定したExcelファイルに含まれる全シート名を改行区切りで返す"""
wb = openpyxl.load_workbook(file_path, data_only=True)
return "\n".join(wb.sheetnames)
@mcp.tool(description="Excelシートの内容を読み取り、CSV形式の文字列で返します。")
def excel_read_sheet(file_path: str, sheet_name: str | None = None) -> str:
"""
指定したExcelファイルのシート内容をCSV形式で返す。
sheet_name が None の場合は最初のシートを読み取る。
"""
wb = openpyxl.load_workbook(file_path, data_only=True)
target_sheet = sheet_name or wb.sheetnames[0]
sheet = wb[target_sheet]
cells_2d = sheet[sheet.dimensions]
lines = []
for row in cells_2d:
values = ["" if cell.value is None else str(cell.value) for cell in row]
lines.append(",".join(values))
return "\n".join(lines)
if __name__ == "__main__":
mcp.run()
このように、たった数十行でMCPサーバーを作成することが出来ます。
今回作成したMCPサーバーは、ExcelファイルをAIが扱える形に変換するための「最低限のツール」です。
MCPサーバーとして提供している機能は大きく次の2つです。
どちらの機能も「読み取り専用」に限定しており、Excelファイルの内容を変更することはありません。
AIに渡す情報も必要最小限に絞っているため、安全性とシンプルさを両立した構成になっています。
ファイル内にどのシートが存在するかを、AIから確認できるようにしています。
これにより、AIが「どのシートを読み取るべきか」を判断することが可能になります。
Excelのセル情報を2次元で取得し、AIが扱える形(CSV)に変換して返します。
AIはExcelのバイナリ形式を直接理解できないため、MCPサーバー側で読み取りと整形を行う役割を担います。
本記事では、MCPサーバーを自作するメリットと、その最小構成の実装例を紹介しました。
ポイントは、
という点です。
後編では、今回実装したMCPサーバーをGitHub Copilot(VS Code)から実際に呼び出し、ExcelをAIに読ませて活用するデモを紹介します。
生成AIが業務資料を扱えるようになると、日々のレビュー・要約・整理の負担が大きく軽減されます。
ぜひ後編も合わせてご覧ください。
Tech Funでは、お客様のフェーズに合わせ、生成AI活用に向けた支援を3つのパックでご提供しています。
生成AIに限らず、Web・業務システム開発やインフラ設計など、技術領域を問わずご相談を承っています。「何から始めれば良いか分からない」という段階でも構いませんので、ぜひお気軽にお問い合わせください。