🚀 MCP 中間件服務器使用說明
MCP(Middleware Proxy)是一款強大的中間件代理服務器,專為處理複雜的請求路由和後端服務調用而打造。它支持 HTTP、HTTPS、WebSocket 等多種協議,還具備豐富的中間件功能,能有效提升服務的靈活性和可擴展性。
🚀 快速開始
在使用 MCP 前,請確保已安裝 Node.js(版本 8.0 或更高)和 npm(版本 5.0 或更高)。然後通過以下命令進行安裝:
npm install mcp-express-adapter --save
✨ 主要特性
- 多協議支持:支持 HTTP、HTTPS 和 WebSocket 協議。
- 靈活的路由規則:可通過簡單或複雜的配置實現對多個後端服務的路由。
- 中間件擴展:支持自定義中間件,如日誌記錄、請求重寫等。
- 強大的錯誤處理:提供強大的錯誤處理機制,可自定義超時策略。
📦 安裝指南
在開始使用 MCP 之前,請確保你已經安裝了 Node.js(版本 8.0 或更高)和 npm(版本 5.0 或更高)。然後你可以通過以下命令進行安裝:
npm install mcp-express-adapter --save
💻 使用示例
基礎用法
以下是一個基本的 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');
}
});
📚 詳細文檔
常見問題
- 如何處理請求超時?
MCP 提供了強大的錯誤處理機制,可以通過中間件自定義超時策略。
- 支持 WebSocket 嗎?
是的,MCP 完全支持 WebSocket 協議,並提供了對 WebSocket 請求的路由功能。
示例代碼
創建一個簡單的代理服務器
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 提供了強大的錯誤處理機制,可以通過中間件自定義錯誤處理邏輯。
- 在生產環境中,請確保配置 SSL 證書以保護通信安全。
💡 使用建議
- 為了提高性能,建議啟用 gzip 壓縮並使用連接池。
文檔
更多詳細信息請參考MCP 中間件服務器文檔。