MCP サーバー
TsgcWSAPIServer_MCP は、sgc の HTTP サーバーまたは WebSocket サーバーを Model Context Protocol サーバーに変えます。独自のツール、プロンプト、リソースを公開すれば、MCP に対応したクライアント、IDE のエージェント、デスクトップアシスタント、あるいは自作のコードからアプリケーションを呼び出せます。
TsgcWSAPIServer_MCP は、sgc の HTTP サーバーまたは WebSocket サーバーを Model Context Protocol サーバーに変えます。独自のツール、プロンプト、リソースを公開すれば、MCP に対応したクライアント、IDE のエージェント、デスクトップアシスタント、あるいは自作のコードからアプリケーションを呼び出せます。
MCP のサーバー側を担います。指定したエンドポイントで JSON-RPC を解析し、セッションを管理し、ツール、プロンプト、リソースの各リクエストごとにイベントを発生させます。通知やサーバー発のリクエストをクライアントへ送り返すこともできます。
TsgcWSAPIServer_MCP
AI クライアント向けのツール公開
Windows、macOS、Linux、iOS、Android
sgcAI は単体で完結しています。このコンポーネントは、土台となる sgcWebSockets Core ランタイムとともに sgcAI に同梱されているため、基本ライセンスを購入する必要はありません。
API をサーバーに接続し、ServerInfo を設定し、リクエストのイベントを処理して、Active を有効にします。
uses
sgcAI, sgcAI_MCP_Classes, sgcHTTP_Server;
var
oMCP: TsgcWSAPIServer_MCP;
begin
oMCP := TsgcWSAPIServer_MCP.Create(nil);
oMCP.Server := sgcHTTPServer1;
oMCP.EndpointOptions.Endpoint := '/mcp';
oMCP.MCPOptions.ServerInfo.Name := 'sgc-mcp-server';
oMCP.MCPOptions.ServerInfo.Version := '1.0.0';
oMCP.MCPOptions.SessionTimeout := 300;
// Streamable HTTP enables notifications and server to client requests.
oMCP.TransportOptions.Http.Enabled := True;
oMCP.TransportOptions.HttpStreamable.Enabled := True;
oMCP.OnMCPInitialize := SrvInitialize;
oMCP.OnMCPSessionNew := SrvSessionNew;
oMCP.OnMCPRequestTool := SrvCallTool;
oMCP.OnMCPRequestPrompt := SrvGetPrompt;
oMCP.OnMCPRequestResource := SrvReadResource;
sgcHTTPServer1.Active := True;
// Tell every connected session the tool list changed.
oMCP.SendNotificationToolsListChanged;
end;
// includes: sgcAI.hpp, sgcAI_MCP_Classes.hpp, sgcHTTP_Server.hpp
TsgcWSAPIServer_MCP *oMCP = new TsgcWSAPIServer_MCP(NULL);
oMCP->Server = sgcHTTPServer1;
oMCP->EndpointOptions->Endpoint = "/mcp";
oMCP->MCPOptions->ServerInfo->Name = "sgc-mcp-server";
oMCP->MCPOptions->ServerInfo->Version = "1.0.0";
oMCP->TransportOptions->HttpStreamable->Enabled = true;
oMCP->OnMCPRequestTool = SrvCallTool;
sgcHTTPServer1->Active = true;
最もよく使うメンバーです。
Server は待ち受けを行う HTTP サーバーまたは WebSocket サーバーを指し、EndpointOptions.Endpoint は JSON-RPC リクエストが届くパスです。
ServerInfo はハンドシェイク時にクライアントへ見せる情報です。SessionTimeout はアイドルセッションを期限切れにし、TasksSupported はタスク機能を告知し、AuthenticationOptions は API キー、カスタムヘッダー、OAuth 2.0 を扱います。
Http.Enabled は POST 上の素の JSON-RPC を提供します。HttpStreamable.Enabled はキープアライブと SSE の通知ストリームを追加し、これにより通知とサーバー発のリクエストが可能になります。HttpStreamable.ValidateOrigin はセッションを最初の Origin ヘッダーに固定します。
Tools、Prompts、Resources、ResourceTemplates がサーバーの公開内容を保持します。起動時に設定するか、実行時に変更して対応する list-changed 通知を送信してください。
実際の処理は OnMCPRequestTool、OnMCPRequestPrompt、OnMCPRequestResource に記述します。OnMCPInitialize、OnMCPSessionNew、OnMCPSessionEnd がセッションのライフサイクルを追跡し、OnMCPException が失敗を通知します。
SendNotificationToolsListChanged、SendNotificationPromptsListChanged、SendNotificationResourcesListChanged、SendNotificationResourcesUpdated、SendLogMessage で、接続中のセッションへ更新を送信します。
RequestRootsList、RequestSamplingCreateMessage、RequestElicitationCreate を使うと、サーバーからクライアントにファイルシステムのルート、モデルの補完結果、ユーザー入力を要求できます。応答は対応する OnMCPResponse* イベントで受け取ります。
MCP の認証フローにおける認可サーバー側を実装しています。動的クライアント登録、同意画面、PKCE、リフレッシュトークンまで含まれるため、別途 ID サービスを用意しなくてもエージェントがサーバーに対して認可を得られます。
このコンポーネントが利用するサービスとプロトコルの一次情報です。