🚀 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 中间件服务器文档。