MCP クライアント
TsgcWSAPIClient_MCP は、Model Context Protocol のクライアント側を担います。HTTP、HTTP Streamable、ローカルの stdio サブプロセスのいずれかで任意の MCP サーバーに接続し、提供されているツール、プロンプト、リソースを一覧表示して、コードから呼び出せます。
TsgcWSAPIClient_MCP は、Model Context Protocol のクライアント側を担います。HTTP、HTTP Streamable、ローカルの stdio サブプロセスのいずれかで任意の MCP サーバーに接続し、提供されているツール、プロンプト、リソースを一覧表示して、コードから呼び出せます。
3 種類のトランスポートに対応した JSON-RPC ベースの MCP クライアントです。initialize ハンドシェイクを実行してセッションを管理し、リクエストを送信するほか、アプリケーションが対応を選んだサーバー発のリクエストにも応答します。
TsgcWSAPIClient_MCP
MCP サーバーの利用
Windows、macOS、Linux、iOS、Android
sgcAI は単体で完結しています。このコンポーネントは、土台となる sgcWebSockets Core ランタイムとともに sgcAI に同梱されているため、基本ライセンスを購入する必要はありません。
トランスポートとそのオプションを設定して初期化し、ツール、プロンプト、リソースを一覧表示して呼び出します。
uses
sgcAI, sgcAI_MCP_Classes, sgcAI_MCP_Types;
var
oMCP: TsgcWSAPIClient_MCP;
begin
oMCP := TsgcWSAPIClient_MCP.Create(nil);
// Remote server over streamable HTTP.
oMCP.MCPOptions.Transport := aimcptrHttpStreamable;
oMCP.MCPOptions.HttpOptions.URL := 'https://mcp.example.com/mcp';
oMCP.MCPOptions.ClientInfo.Name := 'sgc-mcp-client';
oMCP.MCPOptions.ClientInfo.Version := '1.0.0';
oMCP.MCPOptions.AuthenticationOptions.ApiKey.Enabled := True;
oMCP.MCPOptions.AuthenticationOptions.ApiKey.Value := 'mcp-...';
oMCP.OnMCPListTools := MCPListTools;
oMCP.OnMCPResponseTool := MCPToolResponse;
oMCP.Initialize;
oMCP.ListTools;
oMCP.RequestTool('GetTemperature', vArguments); // vArguments: IsgcJSON
end;
// Or spawn a local MCP server as a subprocess instead:
oMCP.MCPOptions.Transport := aimcptrStdio;
oMCP.MCPOptions.StdioOptions.Command := 'C:\tools\my-mcp-server.exe';
oMCP.MCPOptions.StdioOptions.Arguments := '--stdio';
// includes: sgcAI.hpp, sgcAI_MCP_Classes.hpp, sgcAI_MCP_Types.hpp
TsgcWSAPIClient_MCP *oMCP = new TsgcWSAPIClient_MCP(NULL);
oMCP->MCPOptions->Transport = aimcptrHttpStreamable;
oMCP->MCPOptions->HttpOptions->URL = "https://mcp.example.com/mcp";
oMCP->MCPOptions->ClientInfo->Name = "sgc-mcp-client";
oMCP->OnMCPListTools = MCPListTools;
oMCP->OnMCPResponseTool = MCPToolResponse;
oMCP->Initialize();
oMCP->ListTools();
最もよく使うメンバーです。
MCPOptions.Transport で選択します。aimcptrHttp は POST 上の素の JSON-RPC、aimcptrHttpStreamable はキープアライブと SSE の通知ストリーム、aimcptrStdio はローカルサーバーをサブプロセスとして起動します。
HttpOptions は URL、TLS オプション、ログ出力を扱います。StdioOptions はサブプロセス用に Command、Arguments、WorkingDir、Environment、Timeout を扱います。
AuthenticationOptions は、API キー、カスタムヘッダー、さらに ID アサーションを含む完全な OAuth 2.0 フローに対応します。公開 MCP サーバーで求められることが増えている方式です。
Initialize がハンドシェイクを行い、Ping が生存確認をします。HeartBeat は定期的に ping を送信してアイドルセッションの切断を防ぎ、Session はネゴシエート済みのセッション状態を公開します。
ListTools と RequestTool、ListPrompts と RequestPrompt、ListResources、ListResourceTemplates、RequestResource が利用できます。一覧系はページングのためのカーソル引数を受け付けます。
SubscribeResource と UnsubscribeResource でリソースの変更を追跡し、SetLoggingLevel でサーバー側のログ詳細度を調整し、Complete で引数の補完候補を要求します。
OnMCPListRoots、OnMCPSamplingCreateMessage、OnMCPElicitationCreate は、サーバーがクライアントにファイルシステムのルート、モデルの補完結果、ユーザー入力を求めたときに発生します。アプリケーション側で回答を返します。
OnMCPInitialize、OnMCPPing、OnMCPListTools、OnMCPResponseTool、OnMCPListPrompts、OnMCPResponsePrompt、OnMCPListResources、OnMCPResponseResource、OnMCPStreamMessage が用意されています。
このコンポーネントが利用するサービスとプロトコルの一次情報です。