mcp-server-with-semantic-kernel について
mcp-server-with-semantic-kernel は、Python の Semantic Kernel エージェントで MCP サーバーを使う方法を扱う開発者向けプロジェクトです。プラグイン、プロンプト、メモリ、オーケストレーション、通信方式を解説しますが、公開するツールは明記されていません。
主な機能
- 01Semantic Kernel の基本要素の紹介
- 02プラグインとプロンプトテンプレートの解説
- 03メモリとタスクオーケストレーションの説明
- 04Semantic Kernel と MCP の比較
- 05SSE と stdio の通信方式の説明
活用シーン
- 01Semantic Kernel エージェントで MCP サーバーを使う方法の把握
- 02エージェントのプラグイン、メモリ、プロンプト構成の検討
- 03MCP ツールに使う通信方式の選択
MCP 対応
Python の Semantic Kernel で MCP サーバーを利用する方法を扱い、MCP のツールインターフェースと SSE、stdio の通信方式を説明します。クライアントに公開する MCP ツールは README に記載されていません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-server-with-semantic-kernel
Python で Model Context Protocol(MCP)プラグインを使って Semantic Kernel エージェントを構築する
Python で Semantic Kernel と MCP サーバーを使用する
Semantic Kernel とは?
Semantic Kernel(SK)は、Microsoft が作成したオープンソースのツールキットです。開発者が、会話し、考え、行動できる強力な AI エージェントやアプリを構築するのに役立ちます。
たとえば、次のように考えてみてください。
ロボットアシスタントを作っていると想像してみてください。このアシスタントは次のことができます。
- ChatGPT やほかの AI モデルを使って会話する(質問したり、回答したりするなど)
- カレンダーの確認、メールの送信、文書の要約などのタスクを実行する
- 過去に行ったことや見たことを記憶する
- 教えたワークフローを学び、それに従う
SK はこのアシスタントの頭脳です。言語を扱う部分(ChatGPT など)と、ツールやメモリーを扱う部分(カレンダー、ファイル、API など)をつなぎます。
SK の主要な構成要素
| 概念 | 初心者向けの説明 |
|---|---|
| カーネル | すべてをつなぐ中心的な部分です。AI モデルと通信し、指示を実行します。 |
| プラグイン/スキル | アシスタント用のアプリのようなものです。たとえば、カレンダープラグインやメールプラグインがあります。 |
| プロンプトテンプレート | AI の振る舞いを指示する、あらかじめ作成された指示です。変数を渡すと、残りを補完します。たとえば、「これを要約してください:{{text}}」のようなものです。 |
| メモリー | 過去の会話やデータなど、以前の情報をアシスタントに「記憶」させます。 |
| プランナー/オーケストレーター | アシスタントが何かを完了するために 5 つの手順を実行する必要がある場合(例:旅行の計画)、この部分が手順を考えます。 |
簡単な例
Semantic Kernel を使って「会議アシスタント」を作るとします。
- カレンダーイベントの読み取りや作成方法を知っている CalendarSkill というプラグインを用意します
- 「来週のどこかで、John との 30 分間の会議を予定してください」というプロンプトを作成します
- Semantic Kernel はプロンプトを受け取り、AI(ChatGPT など)に送信し、意図(「イベントを作成する」)を判断してから、プラグインを実行します
つまり、SK = AI(言語を理解する)+ツール(操作を実行する)+メモリー(情報を記憶する)です
Semantic Kernel(SK)と Model Context Protocol(MCP)の比較
| 機能 | Semantic Kernel(SK) | Model Context Protocol(MCP) |
|---|---|---|
| どのようなものか | インテリジェントな AI エージェントを構築するためのツールキット/フレームワーク | LLM にツールを公開するための標準/プロトコル |
| 作成者 | Microsoft | オープン標準(OpenAI のツール呼び出しや Claude のツール使用などに着想を得ています) |
| 主な役割 | AI モデルをメモリー、ツール、プロンプトに接続できます | AI エージェントが共通の形式を使ってツールと通信できるようにします |
| たとえるなら | AI エージェントの頭脳+ロジック+アプリストア | あらゆる AI エージェントがツールを使えるようにするインターフェース/プラグ |
| メモリー機能 | はい。SK は情報(例:ベクトルメモリー)を保存し、呼び出すことができます | いいえ。メモリー自体は扱いません |
| ツールの使用方法 | コード内で「スキル」(関数/ツール)を定義して読み込みます | ツールは MCP サーバーとして公開され、あらゆるエージェントが接続できます |
| 言語への対応 | Python/C# SDK | 言語に依存しません(実装ではなく形式に重点を置いています) |
| 複雑さ | より高レベルの抽象化(フル機能のツールキットのようなもの) | より低レベルのプロトコル(ワイヤーフォーマットや仕様のようなもの) |
通信方式
1. Server-Sent Events(SSE)
要約: SSE は、サーバーがウェブ経由でアプリにリアルタイムの更新を送信する方法です。
たとえるなら: コーヒーショップにいるとします。バリスタに注文(リクエスト)を伝えたら、何度も確認しに行く代わりに、席でくつろいで待ちます。飲み物ができると、名前を呼んでくれます。
仕組み:
- クライアントが一度だけリクエストを送信します
- サーバーはその接続を開いたままにします
- データがあるたびに、サーバーはストリームとして送信します
- クライアントはリアルタイムで更新を受け取ります
MCP や AI アプリでは: AI ツールが(MCP 経由で)ツールサーバーと通信するとき、サーバーは結果を少しずつストリーミングする場合があります。たとえば、部分的な回答、トークン、ログなどです。
2. 標準入力/出力(stdio)
要約: stdio は、コンピューターのコマンドラインツールが入力を読み取り、出力を書き込む方法です。
仕組み:
- stdin:プログラムにデータを入力または送信します
- stdout:プログラムが結果を出力します
- stderr:エラーはこちらに出力されます(通常の出力と混ざらないようにします)
MCP では: MCP サーバーはコマンドラインプログラムとして実行できます。エージェントは次のようにしてサーバーと通信します。
- JSON 入力を stdin に書き込む
- stdout からツールの応答を読み取る
通信方法の比較
| 特徴 | SSE | stdio |
|---|---|---|
| 種類 | ウェブプロトコル | ローカルプログラム間の通信 |
| 用途 | サーバーからのリアルタイムデータのストリーミング | コマンドラインツールやサブプロセスとの通信 |
| エージェントでの利用 | MCP ツールがウェブサーバーとして実行されている場合 | MCP ツールがローカルプロセスの場合 |
| 接続 | クライアントがライブ HTTP 接続を開いたままにします | 入出力パイプ(スクリプトを実行する場合など) |
| 例 | ライブチャット、LLM からのトークンのストリーミング | プロンプトを読み込んで回答を出力するシェルスクリプト |
AI ツール(MCP など)では:
- ツールをウェブサーバーにデプロイする場合 → SSE を使って応答をストリーミングします
- ツールがローカルのバイナリ/スクリプトの場合 → stdio を使ってデータを送受信します
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。