Model Context Protocol (MCP) Server について
Model Context Protocol (MCP) Serverは、数値入力を2倍にするFastAPIサーバーで、セッション管理とAPIキー認証に対応しています。READMEではExcel VBAおよびOffice Scriptsとの連携も説明されています。
主な機能
- 01数値入力を2倍に変換
- 02セッションIDによるリクエスト状態管理
- 03任意のAPIキー認証
- 04Excel VBAとOffice Scriptsの連携
- 05CORSミドルウェア
活用シーン
- 01クライアントから送る数値リストの倍増
- 02サーバー稼働中のリクエスト間でのセッション状態維持
- 03Excel VBAまたはOffice Scriptsからのエンドポイント呼び出し
MCP 対応
サーバーは/mcp/processのPOSTエンドポイントで数値リストを受け取り、2倍の値を返します。リクエストにはsession_idとapi_keyを含められます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Model Context Protocol (MCP) サーバー
FastAPI で構築されたシンプルな MCP サーバーです。数値入力を処理して各値を 2 倍にします。また、セッション管理と API キー認証に対応しています。
セットアップ
- 必要な依存関係をインストールします。
pip install -r requirements.txt
- サーバーを起動します。
uvicorn main:app --reload
サーバーは http://localhost:8000 で実行されます。
API エンドポイント
POST /mcp/process
数値入力のリストを処理し、各値を 2 倍にします。
リクエストボディ:
{
"inputs": [1.0, 2.0, 3.0]
}
ヘッダー(任意):
session_id:リクエスト間で状態を維持するために使用しますapi_key:認証に使用します(デモ用キー:「demo_key」)
レスポンス:
{
"outputs": [2.0, 4.0, 6.0],
"session_id": "generated-session-id"
}
Excel VBA との連携
以下の VBA コードを使用して、Excel から MCP サーバーに接続できます。
Sub CallMCPServer()
' Define the input range
Dim inputRange As Range
Set inputRange = Range("A1:A3")
' Create an HTTP request
Dim request As Object
Set request = CreateObject("MSXML2.XMLHTTP")
' Prepare JSON data
Dim jsonData As String
jsonData = "{""inputs"": ["
Dim cell As Range
Dim first As Boolean
first = True
For Each cell In inputRange
If Not first Then
jsonData = jsonData & ", "
End If
jsonData = jsonData & cell.Value
first = False
Next cell
jsonData = jsonData & "]}"
' Send the request
request.Open "POST", "http://localhost:8000/mcp/process", False
request.setRequestHeader "Content-Type", "application/json"
request.send jsonData
' Handle the response
If request.Status = 200 Then
Dim response As Object
Set response = ParseJson(request.responseText)
' Display the outputs
Dim outputStr As String
outputStr = "Processed outputs: " & vbCrLf
Dim i As Integer
For i = 1 To response.Item("outputs").Count
outputStr = outputStr & response.Item("outputs").Item(i) & vbCrLf
Next i
MsgBox outputStr, vbInformation, "MCP Server Response"
' Optionally store the session ID for future requests
Dim sessionId As String
sessionId = response.Item("session_id")
Else
MsgBox "Error: " & request.Status & " - " & request.responseText, vbExclamation
End If
End Sub
Function ParseJson(jsonString As String) As Object
' This is a simplified JSON parser for demo purposes
' For production use, consider a proper JSON library
Dim ScriptEngine As Object
Set ScriptEngine = CreateObject("ScriptControl")
ScriptEngine.Language = "JScript"
Dim JsonCode As String
JsonCode = "JSON.parse('" & Replace(jsonString, "'", "\'") & "');"
Set ParseJson = ScriptEngine.Eval(JsonCode)
End Function
Office Scripts を使用する最新の Excel では、JavaScript/TypeScript の fetch API を使用して、MCP サーバーに HTTP リクエストを送信できます。
注意事項
- サーバーには CORS ミドルウェアが含まれており、ウェブベースの Excel クライアントからのクロスオリジンリクエストを許可します
- セッションの状態はメモリに保存され、サーバーを再起動すると失われます
- 本番環境では、セッションの保存にデータベースを使用し、適切な認証を導入することを検討してください
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。