0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MCPサーバーの通信をHTTPS化する

Posted at

前回の続き

前回、MCPサーバーに認証機能を実装し、そろそろWireSharkで通信内容を確認するなどのデバッグも不要になってきたので、MCPサーバー自体の通信も https で暗号化していきたいと思います。

MongooseをHTTPS化する

Mongooseのドキュメントに記載されていますので、その内容に従って変更を加えます。

void McpServer::cbEvHander(void* connection, int event_code, void* event_data)
{
    :
+	if (event_code == MG_EV_ACCEPT)
+	{
+		struct mg_tls_opts opts = 
+		{ 
+			.cert = mg_file_read(&mg_fs_posix, "cert.pem"),   // 証明書を設定
+			.key = mg_file_read(&mg_fs_posix, "key.pem")      // 秘密鍵を設定
+		};
+		mg_tls_init(conn, &opts);
+	}
	else if (event_code == MG_EV_HTTP_MSG)
	{
    :

クライアントが接続してきたときに、TLSの初期化を行うということだと思います。

後は、以下のコンパイルオプションを追加

-DMG_TLS=MG_TLS_OPENSSL

前回、認証処理を実装する際に、OpenSSLのリンクを追加していたので、Mongoose組み込みのTLSではなく、OpenSSLを使うように設定しました。

自己署名を作成

こちらも同様にMongooseのドキュメントにも記載されていますが、以下のようなコマンドで作成します。

openssl req -nodes -new -x509 -keyout key.pem -out cert.pem

これで、先ほどの実装で設定していた、key.pem と cert.pem ファイルが用意できました。

MCP Inspectorを自己署名に対応

MCP InspectorというかNode.jsが自己署名だとリジェクトしてしまうため、設定を変更してから起動します。
※あくまでもテスト用なので、このあたりの設定は試した後で元に戻すなど、ご注意ください。

> set NODE_TLS_REJECT_UNAUTHORIZED="0"
> npx @modelcontextprotocol/inspector

あとは、MCP Inspectorで接続先を、http から https に変更するだけ。
簡単ですね。

ただ、Auth0 での認証機能を使う場合は、前回APIのIDを http で作成してしまっているので、そちらを https で作り直す必要があるのだろうと思います。

おわりに

そろそろ、MCPサーバー自体の作りこみを進めていき、LLMと組み合わせて動作させることで、自然語で自分の作ったアプリをコントロールしてみたいなと思います。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?