npm版のmcp-proxyをubuntuサーバにインストールし、動作確認してみます。
環境
mcp server環境
OS : ubuntu 24.04
Node.js : >= Version 20
Dify環境
OS : ubuntu 24.04
Dify: Community Version 1.11.1
1.mcp serverインストール
ワーキングディレクトリの作成、Node.jsのインストール、mcp-proxyのインストールを行います。
1.1 ワーキングディレクトリ作成
$ mkdir ./mcp-test-npm
$ cd ./mcp-test-npm
1.2 Node.jsインストール
$ curl -fsSL https://deb.nodesource.com/setup_22.x | sudo bash -
$ sudo apt-get install -y nodejs
$ node -v
mcp-proxyにてa minimum Node.js version of 20となるパッケージがあるため、OS標準のapt-getを利用せずに最新版のNode.jsを利用する必要があります。
1.3 mcp-proxyインストール
$ npm install mcp-proxy
これでmcp-proxyが動作できるようになりました。
2.ローカル動作確認
適当なmcpサーバを作成し、ローカル接続確認を実施します。
2.1 テストコード配置
Hello World!と返却するだけのツールを提供するmcpサーバプログラムを作成します。
・package.json
・index.js
$ vi ./package.json
---
{
"name": "mcp-hello",
"version": "1.0.0",
"description": "Simple MCP server that returns Hello World",
"main": "index.js",
"type": "module",
"scripts": {
"start": "node index.js"
},
"dependencies": {
"@modelcontextprotocol/sdk": "^1.12.0"
}
}
$ vi ./index.js
---
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new McpServer({
name: "hello-world-server",
version: "1.0.0",
});
// "hello_world" ツールを登録
server.tool("hello_world", "Hello World を返すツール", {}, async () => {
return {
content: [
{
type: "text",
text: "Hello World!",
},
],
};
});
// stdio トランスポートで起動
const transport = new StdioServerTransport();
await server.connect(transport);
console.error("MCP Hello World Server is running on stdio");
ファイル配置したのち、インストールを実施します。
$ npm install
2.2 手動サーバ起動
以下のコマンドを使用し、手動でmcp proxyおよびmcp serverを起動します。
$ npx mcp-proxy --host 0.0.0.0 --port 8081 -- node index.js
2.3 ローカル動作確認
外部から動作確認する前に、ローカルでの動作確認を行います。
追加でターミナルを2つ用意し、セッションを張りながら確認を行います。
Terminal1:mcp-proxy(mcp-server)起動用
Terminal2:mcp-clientセッション継続用
Terminal3:mcp-clientコマンド打鍵用
まずはTerminal2でセッションを張ります。
curlコマンドを打鍵後、sessionIdが表示されることを確認します。
$ curl -N http://localhost:8081/sse
event: endpoint
data: /messages?sessionId=5781bc93-217d-4a35-99a4-af2aff7e6b20
event: message
data: {"jsonrpc":"2.0","method":"notifications/message","params":{"data":"SSE Connection established","level":"info"}}
Terminal3でSID(sessionId)を変数入力し、そのあとに初期化/初期化通知/ツール呼び出しのcurlコマンドを実行します。
$ SID=ここにコピーしたIDを貼る
$ curl -s -X POST "http://localhost:8081/messages?sessionId=$SID" \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"t","version":"1.0.0"}}}' \
&& \
curl -s -X POST "http://localhost:8081/messages?sessionId=$SID" \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","method":"notifications/initialized"}' \
&& \
curl -s -X POST "http://localhost:8081/messages?sessionId=$SID" \
-H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"hello_world","arguments":{}}}'
その後、Terminal2で以下の応答が表示されれば、mcp-proxyおよびmcp-serverが動作していることの確認になります。
event: message
data: {"result":{"content":[{"type":"text","text":"Hello World!"}]},"jsonrpc":"2.0","id":2}
3.サービス化
サーバの起動時にmcp-proxyおよびmcp-serverが自動起動するよう、systemd設定をします。
$ sudo vi /etc/systemd/system/hw-npm-mcp.service
---
[Unit]
Description=helloworld npm mcp server
After=network.target
[Service]
Type=simple
WorkingDirectory=/home/ubuntu/mcp-test-npm
ExecStart=npx mcp-proxy --host 0.0.0.0 --port 8081 -- node index.js
Restart=on-failure
User=ubuntu
Group=ubuntu
[Install]
WantedBy=multi-user.target
$ sudo systemctl daemon-reload
$ sudo systemctl enable hw-npm-mcp.service
$ sudo systemctl start hw-npm-mcp.service
$ sudo systemctl status hw-npm-mcp.service
4.Dify MCP サーバー登録
DifyのMCPサーバー追加画面にてmcp-proxyエンドポイントを登録します。
サーバーURLおよびアイコン/識別子を入力し、追加して承認を行います。

すぐに承認はされないので、しばらく時間をおいてから再度 編集→保存 をしたりすると、認証済みとなりツール表示がされます。
エージェントを利用してツール呼び出ししたところ、想定通りの動作になりました。

参考
