🚀 MCP ミドルウェアサーバーの使用説明
MCP(Middleware Proxy)は、複雑なリクエストルーティングとバックエンドサービス呼び出しを処理するために設計された強力なミドルウェアプロキシサーバーです。HTTP、HTTPS、WebSocketなどの複数のプロトコルをサポートし、豊富なミドルウェア機能を提供します。
🚀 クイックスタート
MCP を使用する前に、まずインストールと基本的な設定を行います。以下の手順に従って進めてください。
✨ 主な機能
- 複数のプロトコル(HTTP、HTTPS、WebSocket)をサポート。
- 豊富なミドルウェア機能を提供。
- 柔軟なルーティングルールでバックエンドサービスを選択。
- 強力なエラーハンドリング機構。
📦 インストール
MCP を使用する前に、Node.js(バージョン8.0以上)とnpm(バージョン5.0以上)がインストールされていることを確認してください。以下のコマンドを使用してインストールします。
npm install mcp-express-adapter --save
📚 ドキュメント
MCP プロキシ設定
基本的な使用法
MCP プロキシは、簡単な設定で複数のバックエンドサービスへのルーティングを実現できます。以下は基本的な設定例です。
const express = require('express');
const cors = require('cors');
const { MCPClient } = require('mcp-express-adapter');
const app = express();
app.use(cors());
const mcpProxy = new MCPClient({
endpoint: '/mcp',
upstream: 'http://localhost:3001'
});
app.use('/mcp', mcpProxy.middleware());
app.use(express.json());
const PORT = 3000;
app.listen(PORT, () => {
console.log(`MCPプロキシサーバーが起動し、ポート ${PORT} を監視しています`);
});
高度な使用法
MCP は、より複雑なルーティングルールとカスタムミドルウェアもサポートしています。
const express = require('express');
const cors = require('cors');
const { MCPClient } = require('mcp-express-adapter');
const app = express();
app.use(cors());
const agent1 = new MCPClient({
endpoint: '/agent-1',
upstream: 'http://localhost:3001',
});
const agent2 = new MCPClient({
endpoint: '/agent-2',
upstream: 'http://localhost:3002',
});
app.use('/agent-1', agent1.middleware());
app.use('/agent-2', agent2.middleware());
app.use(express.json());
const PORT = 3000;
app.listen(PORT, () => {
console.log(`MCPプロキシサーバーが起動し、ポート ${PORT} を監視しています`);
});
ミドルウェア拡張
カスタムログ記録
プロキシインスタンスにカスタムミドルウェアを追加して機能を拡張できます。
const agentWithLogging = new MCPClient({
endpoint: '/logging',
upstream: 'http://localhost:3001'
});
agentWithLogging.use((req, res, next) => {
console.log(`[カスタムログ] リクエストを受信:${req.url}`);
next();
});
リクエストの書き換え
MCP では、リクエストヘッダー、パス、パラメーターを変更するなど、リクエストを深くカスタマイズできます。
const agentRewrite = new MCPClient({
endpoint: '/rewrite',
upstream: 'http://localhost:3001'
});
agentRewrite.use((req, res, next) => {
req.url = `/new-path${req.url}`;
req.headers['x-custom-header'] = 'some-value';
next();
});
リクエスト転送ルール
MCP は、柔軟なルーティングルールを提供し、以下のように設定できます。
agent1.setTarget('http://localhost:3001');
agent2.use((req, res) => {
if (req.url.startsWith('/api')) {
agent2.addTarget('http://backend1:8080');
} else {
agent2.addTarget('http://backend2:8080');
}
});
サンプルコード
シンプルなプロキシサーバーの作成
const express = require('express');
const cors = require('cors');
const { MCPClient } = require('mcp-express-adapter');
const app = express();
app.use(cors());
const mcpProxy = new MCPClient({
endpoint: '/api',
upstream: 'http://localhost:3001'
});
app.use('/api', mcpProxy.middleware());
app.use(express.json());
const PORT = 3000;
app.listen(PORT, () => {
console.log(`MCPプロキシサーバーが起動し、ポート ${PORT} を監視しています`);
});
複数のプロキシを持つサーバーの作成
const express = require('express');
const cors = require('cors');
const { MCPClient } = require('mcp-express-adapter');
const app = express();
app.use(cors());
const agent1 = new MCPClient({
endpoint: '/agent-1',
upstream: 'http://localhost:3001'
});
const agent2 = new MCPClient({
endpoint: '/agent-2',
upstream: 'http://localhost:3002'
});
app.use('/agent-1', agent1.middleware());
app.use('/agent-2', agent2.middleware());
app.use(express.json());
const PORT = 3000;
app.listen(PORT, () => {
console.log(`MCPプロキシサーバーが起動し、ポート ${PORT} を監視しています`);
});
テスト
curlコマンドを使用したテスト
curl -X GET http://localhost:3000/api/test
curl -X POST -H "Content-Type: application/json" -d '{"name":"test"}' http://localhost:3000/api/test
Postmanを使用したテスト
- Postmanを開きます。
- 新しいリクエストを追加し、プロキシサーバーのアドレス(例:http://localhost:3000)を入力します。
- 必要に応じてリクエストメソッドとパラメータを設定します。
注意事項
⚠️ 重要提示
- MCP は強力なエラーハンドリング機構を提供しており、ミドルウェアを通じてエラーハンドリングロジックをカスタマイズできます。
- パフォーマンスを向上させるために、gzip圧縮を有効にし、コネクションプールを使用することをお勧めします。
- 本番環境では、通信の安全性を確保するためにSSL証明書を設定することを確認してください。
より詳細な情報
詳細情報については、MCP ミドルウェアサーバードキュメントを参照してください。