1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

enebularでリモートMCPサーバーのHello Worldをしてみた

Last updated at Posted at 2025-10-06

AIエージェントやChatGPTの拡張連携技術として注目を集めるMCP(Model Context Protocol)。
このプロトコルを使えば、AIが外部ツールやデータソースにアクセスして、より実用的なタスクをこなせるようになります。
次々とさまざまなAIサービスがMCP対応を進めており、開発者の間でも「MCPサーバーを自作してAIを拡張する」動きが加速しています。

そこで今回は、 enebularのクラウド実行環境を使ってリモートMCPサーバーを動かすHello Worldを試してみました。
enebularでは、Node-REDベースで構築したフローをホスティングできるため、簡単にMCPサーバーを実現できます。
この記事では、enebularでMCPサーバーを動作させ、Claude Desktopと連携する手順を説明します。

※本来リモートMCPサーバーの場合、利用できるユーザーを限定するためのOAuth2認証の仕組みが必要ですが、今回の内容では、それを行っていません。あくまでお試しの参考にしていただければと思います。

フローの構成

MCPに対応するため、MCPクライアント(Claude Desktopなどの生成AIアプリに内蔵されているもの)からの要求に対するレスポンスを返す内容になってます。
enebularのフローエディタでもクラウド実行環境でも動作するようにしています。

メインのフロー
image.png

MCPメッセージ処理用のサブフロー
image.png

フローは、enebularのDiscoverで公開しています。

フローの動作確認

サードパーティのノードや設定等も特に必要なく、フローをインポートすればリモートMCPサーバーとして動作するようになっています。

フローエディタで動作させる場合は、iマークから取得できるURLの後ろに、mcp-server/mcpを追加すれば生成AIに設定するためのURLになります。
image.png

Claude DesktopでのMCPサーバーの設定は、設定メニューから開発者を開き、設定を編集をクリック。
image.png

claude_desktop_config.jsonをテキストエディタで開き、以下を記載して保存します。
(すでに他のMCPサーバーを設定している場合は、hello-world-mcp-serverの内容を追記してください。)

{
  "mcpServers": {
    "hello-world-mcp-server": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://******.herokuapp.com/mcp-server/mcp"
      ]
    }
  }
}

ファイルを保存したら、いったんClaude Desktopは終了します。
(Windowを閉じただけだと終了しないので、タスクトレイ等から終了をしてください)

再び、Claude Desktopを起動し、新規チャット等の検索とツールで、hello-world-mcp-serverが追加されていれば成功です。

image.png

プロンプトで、以下のように入力します。
(名前は自由に記入してください)

hello worldを使ってください。
名前は****です。

するとMCPサーバーの利用を許可するか聞かれるので、許可してください。
image.png

MCPサーバーからのレスポンスに従って、答えてくれます。

image.png

今回は、単純な例なので送った名前に対しての挨拶が返ってくるだけです。

クラウド実行環境での動作

enebularのクラウド実行環境にデプロイすれば、永続的に動作も可能です。
クラウド実行環境を作り、設定からHTTPトリガーで設定したURLを同じようにclaude_desktop_config.jsonに設定するだけです。クラウド実行環境の場合は、HTTPトリガーで設定したURLの後ろに/mcpを追記します。

クラウド実行環境の設定手順は以下の記事を参考にしてください

フローの解説

今回のフローは単純な例ですが、数か所変更すれば応用が利くと思いますので、ポイントを解説します。
変更する箇所は、ほとんどMCPメッセージ処理用のサブフローの中に集約しています。

サーバー情報

メインフローのサーバー情報の応答というtemplateノードで、サーバー情報を返すようにしています。
ここはMCPというよりは、単純にエンドポイントにアクセスされた時の応答用なので、気にならなければ変更する必要はありません。
image.png
image.png

initialize応答

MCPメッセージ処理用のサブフローのinitialize応答というchangeノードで、MCPサーバーとしての初期情報を返しています。
image.png
プロパティを開いて、対象の値の・・・からエディタを開きます。
ここでは、MCPサーバーの名前を必要に応じて変更するぐらいです。
ここで、toolsやprompts、resorcesを設定してもOKです。
image.png

tools/list応答

MCPメッセージ処理用のサブフローのtools/list応答というchangeノードで、MCPサーバーが持っているtoolのリストを返しています。
image.png
プロパティを開いて、対象の値の・・・からエディタを開きます。
toolを変更したい場合や追加したい場合に変更します。
namedescriptionで生成AIがどんなtoolか認識するので重要です。
生成AIからMCPクライアント経由で受け取りたい引数もinputSchemaで定義しています。
image.png

tool:hello_world応答

実際のtoolの処理です。
switchノードで、指定されたtoolで分岐しています。このフローでは、hello_world以外をエラーとしています。
image.png
変更する場合は、switchノードで判断する文字列やパターンを変更し、後続の処理を変えます。
このtoolでは、tool:hello_world応答というchangeノードで、MCPクライアント経由で生成AIに応答する内容を作っています。
image.png
content.textの内容しだいなので、この中身を引数と組み合わせて変更すればさまざまな応答を返すtoolにできます。計算結果や他のサービスから取得した値とかでも良いです。

今後は

実は、ローカルのMCPサーバーはいろいろ試していたので、enebularのデータストアに繋げて蓄積したセンサーデータをMCPサーバーでつなげて連携させClaudeにセンサーデータの解析とかも試していました。

image.png

image.png

次は、これをリモートMCPでも試してみたいと思います。

1
0
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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?