MCPサーバの役割

MCPが現在トレンドとなっているようであるが、今一つ理解が深まらない。そこでAIチャットに聞いてみた。

1. MCPサーバができることとは、どんなことでしょうか?

主な機能

ツール実行

  • ファイル操作(読み書き、検索)
  • データベースクエリの実行
  • API呼び出し
  • システムコマンドの実行

データアクセス

  • ローカルファイルシステムへのアクセス
  • クラウドストレージとの連携
  • データベースからの情報取得
  • ウェブサービスとの統合

リソース管理

  • 構造化データの提供
  • リアルタイム情報の取得
  • 設定ファイルの管理
  • ログやメタデータの処理

実用例

開発者向けには、GitHub連携、コード実行環境、パッケージ管理などのツールを提供できます。ビジネス用途では、CRM、データ分析、自動化ワークフローなどと連携可能です。個人利用では、カレンダー管理、メール処理、ファイル整理などをサポートします。

MCPサーバの最大の利点は、AIモデルが安全かつ標準化された方法で様々な外部システムと連携できることです。これにより、AIアシスタントがより実用的で強力なタスクを実行できるようになります。

ふ〜む。ザックリしすぎでできることがわかったようなわからないような。そこで具体的なMCPサーバプログラムを聞いてみた。

2. MCPサーバのサンプルプログラムはどのようなものですか?

from fastmcp import FastMCP

# MCPサーバの作成
mcp = FastMCP("Calculator Server")

@mcp.tool()
def add_numbers(a: int, b: int) -> int:
    """二つの数字を足し算します"""
    return a + b

@mcp.resource("greeting")
def get_greeting() -> str:
    """挨拶メッセージを返します"""
    return "Hello from MCP Server!"

if __name__ == "__main__":
    mcp.run()

計算するプログラムと挨拶を返すMCPプログラムらしい。

ここでさらなる疑問が。これくらいの計算や挨拶くらいはMCPでなくても、AIチャット自身でも返せるでしょっと?そして、このプログラムはどのようにして呼ばれるのだろうか?

3. なぜ「計算して」で、上記のMCPサーバが呼ばれるのでしょうか?呼ばれる保証は何が判断しているのですか?

呼び出し保証の仕組み

保証されないケース

  • 曖昧な指示:「何かして」
  • 複数の候補:「計算して」(足し算?引き算?)
  • 情報不足:「計算して」(何の数字を?)

保証されるケース

  • 具体的な指示:「5と3を足して」
  • 明確な文脈:「合計を出して」(数字が文脈にある場合)

結論:MCPサーバが呼ばれるかは、AIの自然言語理解能力ツールの説明文の質によって決まります。100%の保証はなく、より具体的で明確な指示ほど意図したツールが呼ばれる可能性が高くなります。

これはFunction CallingやTool Useと同じ仕組みですね。

なるほど不思議ではあるが、AIが判断して必要で的確な場合に呼ばれるとのこと。でもこれくらいのことならAIでもできるよねってことの解決にはなっていない。

そこで、逆にAIチャットには絶対できないことで、MCPサーバでなければできないことは何かと逆説的に聞いてみた。

4. AIにはできないこと=MCPならできることは何ですか?

本当の価値

MCPサーバの価値は、AIができないことを代行することです:

  • リアルタイムデータの取得
  • ファイルシステムへのアクセス
  • 外部API呼び出し
  • データベース操作
  • システムコマンド実行

足し算の例は確かに教育目的としては分かりやすいですが、実用性はゼロですね。MCPの真価は「AIの手足となって、外部世界とやり取りすること」にあります。

なるほど。何と無く見えてきた。そこであえてAIに聞いてみた。

5. 現在のOSは何ですか?

申し訳ありませんが、私は現在動作しているOSの情報にアクセスすることができません。

私はクラウド上で動作しているAIアシスタントで、あなたのローカルデバイスのシステム情報(OS、ハードウェア構成など)を直接取得する機能はありません。

あなたのデバイスのOSを知りたい場合は:

Windows: 設定 → システム → バージョン情報 Mac: アップルメニュー → このMacについて
Linux: uname -a コマンドまたは /etc/os-release ファイル

で確認できます。

先ほど作成したMCPサーバの例では system_info_tool() でOS情報を取得する機能を実装しましたが、これは実際にローカル環境で動作する場合の例であり、私自身がそのような情報にアクセスできるわけではありません。

これがまさに「MCPサーバが真価を発揮する場面」ですね。AIが直接できないシステム情報の取得を、MCPサーバが代行してくれます。

なるほど100%理解。MCPサーバが必要なことがわかりました。AIに何でもできるという思い込みでMCPサーバの必要性がよくわからなかったが、なるほどそういうことでしたか。

それが理由で、各社のサービスがMCPサーバを提供しているのだと、ようやく気づけた。

No responses yet

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です