DEVELOPER’s BLOG

技術ブログ

MCP実践:公式・SaaS・OSS、3つの導入方法を試す。第3部 OSS MCPサーバー

2025.12.09 Takahisa Ogawa
生成AI
MCP実践:公式・SaaS・OSS、3つの導入方法を試す。第3部 OSS MCPサーバー

     
  1. 1. はじめに
  2. 2. OSS MCPサーバーを使ってみよう
  3.  2-1. 準備フェーズ
  4.   ①OSS MCPサーバーをGitHubからダウンロード
  5.   ②OSS MCPサーバーを構築
  6.   ③VS CodeにMCPサーバー情報を設定
  7.   ④動きませんでした。そしてその対策。
  8.  2-2. 実行フェーズ
  9.   ①Agentを実行しよう
  10.   ②実行ログを見て、通信の動きを確認しよう
  11. 3. まとめ
  12. 4. MCPサーバーのそれは極めて個人的な考察

1. はじめに

ブログをご覧の皆さまこんにちは。エンジニアの小川です。

前回の記事ではZapier社が提供するSaaS型のMCPサーバーのVS Codeでの使用方法をご紹介しました。
本記事ではOSSとして公開されているMCPサーバを使用するケースをご紹介します。

以前の記事で紹介しましたが、OSSのMCPサーバーは以下で公開されています。

AI Base : https://mcp.aibase.com/ja/explore

mcp-use3-image1.webp (※他にもあるかもしれませんが、今のところここしか見つけられていません)

今回はこちらで公開されているGoogle スプレッドシート連携のMCPサーバーを使用してみます。

2. OSS MCPサーバーを使ってみよう

この項では以下の流れを行っていきます。

[準備フェーズ]
①OSS MCPサーバーをGitHubからダウンロード
②OSS MCPサーバーを構築
③VS CodeにMCPサーバー情報を設定

[実行フェーズ]
①Agentを実行しよう
②実行ログを見て、通信の動きを確認しよう

2-1. 準備フェーズ

①OSS MCPサーバーをGitHubからダウンロード

まずは使用したいMCPサーバーをGitHubからダウンロードします。今回はこちらを使用したいと思います。

Googlesheet MCP

Google Sheets MCP Page

画面右上にあるGitHubアイコンをクリックするとGitHubリポジトリに移動しますので、ローカルにプロジェクトをダウンロードします。

ちなみにこちらが良い物かどうかはこの時点では分かりません。この時点でできることは、評価とDL数、それと説明文内に使いたい機能がありそうなのを選ぶしかできません。
できればDocker上で動作するものを選ぶと比較的楽ですが、対応しているものはあまり多くないようです。ただDockerFile/compose.yamlが入っていても動かないものもあります。落とし穴ばかりですね...。


今回紹介しているMCPサーバーは、このブログ用に構築してみた3番目に試した物になります。先に試した2つはREADMEが滅茶苦茶で止めました。(※ファイル構成/起動方法がREADMEの内容と全く違うという...。)
ちなみにこちらのプロジェクトも元のままではVS Codeで動きませんでしたので、少し手を加えています。READMEにはCursorの説明が記載されていてるので、もしかしたらCursorならそのまま動くのかもしれません。

また念の為、使用前にはコードをチェックしておきましょう。悪意のあるコードが混入している可能性もゼロではありません。

copilot check! 良かった

②OSS MCPサーバーを構築

それではプロジェクトに添付のマニュアルに従ってMCPサーバーを構築していきます。
Pythonの実行環境は整っている前提で進めます。

1. 使用するPythonライブラリをインストールします。

pip install google-auth-oauthlib google-auth-httplib2 google-api-python-client curl -LsSf https://astral.sh/uv/install.sh | sh ※ ← 書いていませんが実行にはuvのインストールが必要です

2. Google Cloud Platformでプロジェクトとサービスアカウントを作成し、「APIとサービス」からGoogle スプレッドシートAPIの権限設定を行った後、「IAMと管理」からcredentials.jsonをダウンロードします。

gcp top
GCPの詳細説明は割愛していますが、ここが一番大変かも。

3. credentials.jsonをプロジェクトのルートに配置します。

vs code directory

4. Googleスプレッドシートを開き、共有設定でサービスアカウントのメールアドレスを追加します。

google spread sheet sharing setting

5. 以下のコマンドを実行してMCPサーバーをインストール

uv run mcp install main.py

ここまでで一旦MCPサーバーの構築は完了です。
早速ドキュメントに記載していない手順もありましたが、恐らくこれで良い・・・ハズです。

③VS CodeにMCPサーバー情報を設定

前々回の記事で作成した .vscode/mcp.jsonファイルに記載します。記載の内容はREADMEに書いてある通りです。

{ "mcpServers": { "GoogleSheets": { "command": "python", "args": [ "main.py" ] } } }

今までと書き方が変わっていますね。今まではHTTPで接続していましたが、今回は直接Pythonのコマンドで実行する形になっています。
これでVS CodeからMCPサーバーに接続できるようになります。なっているはずです...!

④動きませんでした。そしてその対策。

結論がタイトルになってしまいましたが、残念ながら動きませんでした。ほんとこんなのばっかり

ここでログに出ているエラーをGitHub Copilotと相談しながら行った対応を以下に記載します。
このMCPサーバーは使う予定がない方はスキップしてください。

1.vscode/mcp.jsonを修正します

{ "servers": { "GoogleSheets": { "command": "/Users/xxxxx/.local/bin/uv", # ← ここをuvコマンドのパスに変更 "args": [ # ← ここを以下に変更 "--directory", "/Users/xxxxx/project/mcp-sever-google-sheets", "run", "main.py" ] } } }

2.main.pyを修正します

# main.pyの末尾に以下を追加 if __name__ == "__main__": mcp.run()

3. 起動はREADMEの起動コマンドでなく、IDEのMCPサーバー起動ボタン、またはAgentが実行時に自動で起動して使用します

mcp-use3-image9.webp

以上でMCPサーバーの修正が完了です。
これでVS CodeからMCPサーバーに接続できるようになります。

ちなみにこの修正はあくまで私の環境で動かすためのものであり、他の環境で動作する保証はありません。もしかしたらCursor環境では動くのかもしれません。

そういうの止めて欲しいですけど...。

2-2. 実行フェーズ

①Agentを実行しよう

それでは実際にAgentを実行してみましょう。
まずは試験的に、Googleスプレッドシートにデータを追加する依頼を実行します。

agent start

実行した所、どのスプレッドシートにデータを追加するかの指示が不足している旨のエラーが発生しました。
そこで対象のスプレッドシートのURLを渡して再度実行します。

agent execution result

登録に成功しました!

ログを見ると途中思っていたより手間取っていますが、無事にMCPサーバーを使用してGoogleスプレッドシートにデータを追加することができました。

実際にスプレッドシートを確認してみます。

spread sheet view

登録されているのを確認できました!次はシート内のデータを読み込んでみます

mcp-use3-image13.webp

正しく読み込みが確認できましたね!

それでは次は少し複雑なことをやらしてみましょう。
こちらのサイトで配布されている日次セールス レポート フォームを使用して、対象のデータを取得させてみます

report view

mcp-use3-image15.webp
全体読み込みはOK

mcp-use3-image16.webp
細かな内容の指定もOK

レポートの表の内容も正しく認識できていますね!

以上でMCPサーバーを使用したGoogleスプレッドシートの読み書きができることが確認できました。

ただ途中で発生した問題として、実は何度かAgent内の学習データを消してスクリーンショット撮影用にと最初からやり直しをしていたのですが、

 ・スプレッドシートへの書き込みに失敗する様になってしまい、何度も繰り返した結果、「送信するパラメータが分かりません」とAgentが途中で処理を諦めた
 ・書き込んだデータの前後に変な記号が入っていた。

等と、同じ命令文でも挙動が安定しませんでした。
これらはもしかしたらMCPサーバー側の問題かもしれませんし、Agent側の問題かもしれません。
このあたりやはりAIによる不確実性が否めず、信用性の面で課題がありそうです。

②実行ログを見て、通信の動きを確認しよう

最後に実行時のログを見てみましょう。
元のプロジェクトではログの出力が全く行われていなかったため、main.pyにログ出力のコードを追加してみます。
以下が実行時のログになります。

「シートのデータを読み込んでください」:初回実行時のログ

2025-11-21 14:24:09,137 - INFO - MCP Server starting... 2025-11-21 14:24:09,148 - INFO - Processing request of type ListPromptsRequest 2025-11-21 14:24:09,148 - INFO - Processing request of type ListToolsRequest 2025-11-21 14:24:09,149 - INFO - Processing request of type CallToolRequest 2025-11-21 14:24:09,149 - INFO - Tool called: list_spreadsheets ... 2025-11-21 14:24:18,226 - INFO - Retrieved 23 rows from シート1 2025-11-21 14:24:18,226 - INFO - Response data: Response: 25 lines, 1324 characters 2025-11-21 14:24:18,226 - INFO - === MCP Response: get_sheet_content - Success - Response: 25 lines, 1324 characters ===

連続して2回目実行時のログ

2025-11-21 14:25:18,285 - INFO - Processing request of type CallToolRequest 2025-11-21 14:25:18,285 - INFO - === MCP Request: get_sheet_content - spreadsheet_id: 14EJcg_Bb54kkgVm67FHM94eqM7IQoSQrDBsJUvSPSxc, sheet_title: シート1 === ...

VS Codeの「New Chat」を押下し、チャット欄を初期の状態にして再度データ読み込みを実行

2025-11-21 14:38:54,588 - INFO - Processing request of type CallToolRequest 2025-11-21 14:38:54,588 - INFO - === MCP Request: list_spreadsheets === 2025-11-21 14:38:54,588 - INFO - Tool called: list_spreadsheets ...

ログを見ると、MCPサーバーがどのように動いているかが分かります。
1回目の実行時にはMCPサーバーが起動し、

・ListPromptsRequest
・ListToolsRequest

を行ってMCPサーバー内のpromptやツールの一覧を取得し、

・CallToolRequest

でツールの呼び出しを行っていることが分かります。

2回目の実行時にはList情報を保持している為か、CallToolRequestのみが処理されており、その後get_sheet_contentを実行してシート情報を取得しています。
3回目、今度はチャット履歴を消して再度実行した際には、CallToolRequestのみが処理されていますが、その後はlist_spreadsheetsでスプレッドシート一覧を取得しようとしています。list_spreadsheetsは1回目と同じ挙動です。

ここから分かることは、AgentとMCPサーバーは状態を保持しますが、チャット履歴を消すと一部消えるデータと消えないデータがあることが分かります。

・MCPツールListやPrompt List - 消えていない
・取得対象のスプレッドシートID - 消えている

これはVS Code内のチャット別に保持しているデータ、LLMとの会話セッションで保持しているデータによるものかと思われます。
またこれらはMCPクライアント(Agent)の設計によるものかと思われますので、詳細に探るのは難しいです。また使用するMCPクライアントによって挙動が変わる可能性があります。

3. まとめ

以上、OSSのMCPサーバーを使用してGoogleスプレッドシートにデータを読み書きする方法をご紹介しました。

OSSのMCPサーバーはSaaS型のMCPサーバーと比べて、
・使いたいサービス別にMCPサーバーが必要になる。
・自分でサーバーを構築する必要がある。
・動作が不安定な場合/そもそも動かないケースがあり、信頼性に乏しい。
・開発言語がC#/Go/Java/TypeScript(JavaScript)/Python/Rustなど多岐に渡る為、環境構築の為には各言語別の知識が求められる。

といったデメリットがありますが、

・自分でサーバーを構築するため、セキュリティ面で安心できる。
・自分でサーバーを構築するため、カスタマイズが可能。 (とはいえ今回の様な強制カスタマイズ必須はメリットではないけれど)

といったメリットもあります。

どちらを使用するかは、使用する用途や環境によって異なりますが、
セキュリティ面で不安がある場合や、外にデータを極力出したくない場合(基本外部のLLMサービス使っておいて何をという話ですけど)には
カスタマイズが必要な場合はOSSのMCPサーバーを使用する、または参考に自作するというのはありかと思います。
3つのパターンの比較を表にすると以下になります。

項目 公式 SaaS(Zapier) OSS
導入難易度
コスト 無料 有料 無料(※但しサーバー料金除く)
カスタマイズ性/拡張性
対応サービス サービス提供企業特化 多数のSaaS 実装次第
保守・運用 提供企業が管理 提供企業が管理 自己管理
信頼度

4. MCPサーバーのそれは極めて個人的な考察

MCPサーバーの導入方法3部作、いかがでしたでしょうか?

正直な所、現時点でのOSSのMCPサーバーはあまりお勧めできません。
今回の流れを見て頂いた通り、ドキュメントは滅茶苦茶、動かそうとしてもコードに手を加えなければいけない等、ヒッジョーに扱いづらいです。ダウンロードするプロジェクトが次から次へとこんな感じで、何度PCの前で雄叫びをあげたか分かりません。こんなハズじゃなかった。歴史がボクに問いかける。

趣味や個人利用の範囲であればよいですが、そのままの使用は業務利用には向かないかと思います。あくまでソースの参考程度に留めておくのが良いかと思います。

ただしこれが今後apache foundationのような大きな組織,コミュニティがベースのMCPサーバーをOSSとして公開し、継続的にメンテナンスされるようになれば話は変わってくるかと思いますので今後に期待したい所です。

しかし今回3種のMCPサーバーをガッツリと触ってみて思ったのは、MCP自体は非常に面白い技術であり、LLMと外部サービスを繋ぐ上で非常に有用であるとは感じました。
例えば今後開発するシステム内に、APIだけでなくMCP機能も合わせて組み込むことで、LLMを使用した柔軟な操作が可能になる等、応用範囲は広いかと思います。

今後もっと使いやすくなり、エンジニアぐらいしか使わないVS Code等のIDE以外からも簡単に使用できるようになれば、一般利用がもっと進むと思います。

最後までお読みいただきありがとうございました。

関連記事

はじめてのDify - エージェント&ワークフロー実践: 第2部 MCP編

1. はじめに 2. DifyでエージェントとMCPサーバーを使ってみよう  2-1. MCPサーバーの設定  2-2. エージェントチャットでMCPサーバーを使う  2-3. ワークフローでエージェントとMCPサーバーを使う 3. まとめ 4. Difyのそれは極めて個人的な考察 1. はじめに ブログをご覧の皆さまこんにちは。エンジニアの小川です。 前回の記事ではDifyの基本

記事詳細
はじめてのDify - エージェント&ワークフロー実践: 第2部 MCP編
生成AI
はじめてのDify - エージェント&ワークフロー実践: 第1部 入門編

1. はじめに 2. Difyとは 3. Difyの基本操作  3-1. Difyの種類  3-2. アカウント作成  3-3. シンプルなワークフローを作ってみる 4. Dify実践: LLMとの連携  4-1. 初期設定(LLM設定)  4-2. ワークフローでLLMを使ってみる 5. まとめ 1. はじめに 山根さん「小川くん、Difyディフィって知ってる?」 ボ

記事詳細
はじめてのDify - エージェント&ワークフロー実践: 第1部 入門編
生成AI
[AWS re:Invent 2025 速報] 新サービス:AWS AI Factories

はじめに 1. AWS AI Factories とは:AI 運用の課題をまとめて解決する新モデル 2. AWS AI Factories を構成する要素 3. AWS AI Factories がもたらす企業メリット さいごに はじめに 今年もラスベガスにて、世界最大級のクラウドカンファレンス「AWS re:Invent 2025」が開催されました。 今年のre:InventではAIに関するサービスのアップデートが中心となって

記事詳細
[AWS re:Invent 2025 速報] 新サービス:AWS AI Factories
AWS 生成AI
[AWS re:Invent2025 速報] 見逃せない!?AWS MCP ServerのPreview開始!

はじめに 基本の確認:MCPサーバーとは何か? AWS MCP Serverの核心機能 AWS MCP Server:何が嬉しい?! はじめに Amazon Web Services(AWS)が2025年11月30日に「AWS MCP Server」をプレビュー版として公開しました! 参照:AWS announces a preview of the AWS MCP Server 「本番VPC作っておいて。」とAIエージェントに指示を出せ

記事詳細
[AWS re:Invent2025 速報] 見逃せない!?AWS MCP ServerのPreview開始!
AWS 生成AI

お問い合わせはこちらから