DEVELOPER’s BLOG
技術ブログ
MCP実践:公式・SaaS・OSS、3つの導入方法を試す。第3部 OSS MCPサーバー
- 1. はじめに
- 2. OSS MCPサーバーを使ってみよう
- 2-1. 準備フェーズ
- ①OSS MCPサーバーをGitHubからダウンロード
- ②OSS MCPサーバーを構築
- ③VS CodeにMCPサーバー情報を設定
- ④動きませんでした。そしてその対策。
- 2-2. 実行フェーズ
- ①Agentを実行しよう
- ②実行ログを見て、通信の動きを確認しよう
- 3. まとめ
- 4. MCPサーバーのそれは極めて個人的な考察
1. はじめに
ブログをご覧の皆さまこんにちは。エンジニアの小川です。
前回の記事ではZapier社が提供するSaaS型のMCPサーバーのVS Codeでの使用方法をご紹介しました。
本記事ではOSSとして公開されているMCPサーバを使用するケースをご紹介します。
以前の記事で紹介しましたが、OSSのMCPサーバーは以下で公開されています。
AI Base : https://mcp.aibase.com/ja/explore
(※他にもあるかもしれませんが、今のところここしか見つけられていません)
今回はこちらで公開されているGoogle スプレッドシート連携のMCPサーバーを使用してみます。
2. OSS MCPサーバーを使ってみよう
この項では以下の流れを行っていきます。
[準備フェーズ]
①OSS MCPサーバーをGitHubからダウンロード
②OSS MCPサーバーを構築
③VS CodeにMCPサーバー情報を設定
[実行フェーズ]
①Agentを実行しよう
②実行ログを見て、通信の動きを確認しよう
2-1. 準備フェーズ
①OSS MCPサーバーをGitHubからダウンロード
まずは使用したいMCPサーバーをGitHubからダウンロードします。今回はこちらを使用したいと思います。
画面右上にあるGitHubアイコンをクリックするとGitHubリポジトリに移動しますので、ローカルにプロジェクトをダウンロードします。
ちなみにこちらが良い物かどうかはこの時点では分かりません。この時点でできることは、評価とDL数、それと説明文内に使いたい機能がありそうなのを選ぶしかできません。
できればDocker上で動作するものを選ぶと比較的楽ですが、対応しているものはあまり多くないようです。ただDockerFile/compose.yamlが入っていても動かないものもあります。落とし穴ばかりですね...。
今回紹介しているMCPサーバーは、このブログ用に構築してみた3番目に試した物になります。先に試した2つはREADMEが滅茶苦茶で止めました。(※ファイル構成/起動方法がREADMEの内容と全く違うという...。)
ちなみにこちらのプロジェクトも元のままではVS Codeで動きませんでしたので、少し手を加えています。READMEにはCursorの説明が記載されていてるので、もしかしたらCursorならそのまま動くのかもしれません。
また念の為、使用前にはコードをチェックしておきましょう。悪意のあるコードが混入している可能性もゼロではありません。
良かった
②OSS MCPサーバーを構築
それではプロジェクトに添付のマニュアルに従ってMCPサーバーを構築していきます。
Pythonの実行環境は整っている前提で進めます。
1. 使用するPythonライブラリをインストールします。
2. Google Cloud Platformでプロジェクトとサービスアカウントを作成し、「APIとサービス」からGoogle スプレッドシートAPIの権限設定を行った後、「IAMと管理」からcredentials.jsonをダウンロードします。

GCPの詳細説明は割愛していますが、ここが一番大変かも。
3. credentials.jsonをプロジェクトのルートに配置します。
4. Googleスプレッドシートを開き、共有設定でサービスアカウントのメールアドレスを追加します。
5. 以下のコマンドを実行してMCPサーバーをインストール
ここまでで一旦MCPサーバーの構築は完了です。
早速ドキュメントに記載していない手順もありましたが、恐らくこれで良い・・・ハズです。
③VS CodeにMCPサーバー情報を設定
前々回の記事で作成した .vscode/mcp.jsonファイルに記載します。記載の内容はREADMEに書いてある通りです。
今までと書き方が変わっていますね。今まではHTTPで接続していましたが、今回は直接Pythonのコマンドで実行する形になっています。
これでVS CodeからMCPサーバーに接続できるようになります。なっているはずです...!
④動きませんでした。そしてその対策。
結論がタイトルになってしまいましたが、残念ながら動きませんでした。ほんとこんなのばっかり
ここでログに出ているエラーをGitHub Copilotと相談しながら行った対応を以下に記載します。
このMCPサーバーは使う予定がない方はスキップしてください。
1.vscode/mcp.jsonを修正します
2.main.pyを修正します
3. 起動はREADMEの起動コマンドでなく、IDEのMCPサーバー起動ボタン、またはAgentが実行時に自動で起動して使用します
以上でMCPサーバーの修正が完了です。
これでVS CodeからMCPサーバーに接続できるようになります。
ちなみにこの修正はあくまで私の環境で動かすためのものであり、他の環境で動作する保証はありません。もしかしたらCursor環境では動くのかもしれません。
そういうの止めて欲しいですけど...。
2-2. 実行フェーズ
①Agentを実行しよう
それでは実際にAgentを実行してみましょう。
まずは試験的に、Googleスプレッドシートにデータを追加する依頼を実行します。
実行した所、どのスプレッドシートにデータを追加するかの指示が不足している旨のエラーが発生しました。
そこで対象のスプレッドシートのURLを渡して再度実行します。
登録に成功しました!
ログを見ると途中思っていたより手間取っていますが、無事にMCPサーバーを使用してGoogleスプレッドシートにデータを追加することができました。
実際にスプレッドシートを確認してみます。
登録されているのを確認できました!次はシート内のデータを読み込んでみます
正しく読み込みが確認できましたね!
それでは次は少し複雑なことをやらしてみましょう。
こちらのサイトで配布されている日次セールス レポート フォームを使用して、対象のデータを取得させてみます

全体読み込みはOK

細かな内容の指定もOK
レポートの表の内容も正しく認識できていますね!
以上でMCPサーバーを使用したGoogleスプレッドシートの読み書きができることが確認できました。
ただ途中で発生した問題として、実は何度かAgent内の学習データを消してスクリーンショット撮影用にと最初からやり直しをしていたのですが、
・スプレッドシートへの書き込みに失敗する様になってしまい、何度も繰り返した結果、「送信するパラメータが分かりません」とAgentが途中で処理を諦めた。
・書き込んだデータの前後に変な記号が入っていた。
等と、同じ命令文でも挙動が安定しませんでした。
これらはもしかしたらMCPサーバー側の問題かもしれませんし、Agent側の問題かもしれません。
このあたりやはりAIによる不確実性が否めず、信用性の面で課題がありそうです。
②実行ログを見て、通信の動きを確認しよう
最後に実行時のログを見てみましょう。
元のプロジェクトではログの出力が全く行われていなかったため、main.pyにログ出力のコードを追加してみます。
以下が実行時のログになります。
「シートのデータを読み込んでください」:初回実行時のログ
連続して2回目実行時のログ
VS Codeの「New Chat」を押下し、チャット欄を初期の状態にして再度データ読み込みを実行
ログを見ると、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以外からも簡単に使用できるようになれば、一般利用がもっと進むと思います。
最後までお読みいただきありがとうございました。