具有模型上下文协议(MCP)的Apache Synapse架构
概述
该项目实现了一个全面的Apache Synapse架构,该架构利用模型上下文协议(MCP)框架提供对企业集成功能的安全、受控访问。该架构将Apache Synapse的ESB(企业服务总线)功能与MCP用于AI模型交互的标准化协议相结合,具有两个用于电子商务运营的交互式MCP服务器。
MCP服务器
1.订单管理MCP服务器
- 目的:处理订单处理、库存管理和客户操作
- 特性:
- 订单创建和管理 - 库存跟踪和更新 - 客户管理 - 订单状态跟踪 - 与支付处理服务器集成
2.支付处理MCP服务器
- 目的:处理付款验证、处理和财务操作
- 特性:
- 付款处理和验证 - 退款管理 - 付款方式管理 - 财务报告和统计 - 与订单管理服务器集成
3.服务器交互
- 跨服务器通信:订单和支付处理之间的无缝集成
- 事件驱动架构:服务之间的实时更新
- 数据一致性:保持两台服务器之间的一致性
- 错误处理:强大的错误处理和恢复机制
架构组件
1.核心Synapse MCP服务器
- 目的:通过MCP公开Synapse功能的主集成中心
- 特性:
- 代理服务管理 - 消息转换 - 路由和调解 - 安全与认证 - 监控和日志记录
2.订单管理MCP服务器
- 目的:电子商务订单操作专用服务器
- 特性:
- 订单生命周期管理 - 库存控制 - 客户数据管理 - 与支付处理集成 - 实时状态更新
3.支付处理MCP服务器
- 目的:金融交易专用服务器
- 特性:
- 支付网关集成 - 交易处理 - 退款管理 - 财务报告 - 欺诈检测
4.MCP客户端集成层
- 目的:将AI模型和客户端连接到Synapse服务
- 特性:
- 标准化MCP协议实施 - 认证与授权 - 请求/响应处理 - 错误管理
5.服务注册表
- 目的:管理可用服务及其元数据
- 特性:
- 服务发现 - 版本管理 - 健康监测 - 负载平衡
6.消息处理管道
- 目的:处理消息转换和路由
- 特性:
- XML/JSON转换 - XSLT处理 - 消息验证 - 错误处理
目录结构
apache-synapse-mcp/
├── src/
│ ├── core/ # Core Synapse MCP server
│ ├── services/ # Service definitions
│ │ ├── order_management_server.py # Order Management MCP Server
│ │ ├── payment_processing_server.py # Payment Processing MCP Server
│ │ └── proxy_service.py # Proxy service management
│ ├── transformers/ # Message transformers
│ ├── security/ # Security and authentication
│ └── monitoring/ # Monitoring and logging
├── config/ # Configuration files
│ ├── synapse-mcp.example.yaml # Main configuration
│ └── mcp-servers.yaml # MCP servers configuration
├── tests/ # Unit and integration tests
│ ├── test_basic_functionality.py # Basic functionality tests
│ └── test_mcp_servers_interaction.py # MCP servers interaction tests
├── docs/ # Documentation
└── examples/ # Usage examples
│ ├── basic_usage.py # Basic usage examples
│ └── mcp_servers_interaction.py # MCP servers interaction demo主要特点
MCP集成
- 标准化协议:实施MCP规范,实现一致的AI模型交互
- 工具访问:作为MCP工具,提供对Synapse功能的安全访问
- 资源管理:通过MCP资源系统管理Synapse资源
- 多服务器架构:两个用于不同域的专用MCP服务器
电子商务整合
- 订单管理:从创建到履行的完整订单生命周期
- 支付处理:使用多种支付方式进行安全支付处理
- 库存管理:实时库存跟踪和更新
- 客户管理:全面的客户数据和支付方式管理
企业集成
- 服务代理:充当后端服务的代理
- 消息中介:在不同格式之间转换消息
- 路由:基于内容和标头的智能消息路由
- 负载平衡:在多个服务实例之间分配负载
安全
- 认证:OAuth2、JWT和API密钥支持
- 授权:基于角色的访问控制
- 加密:端到端消息加密
- 审计日志:全面的安全审计跟踪
监控
- 指标收集:绩效和健康指标
- 日志记录:带有关联ID的结构化日志记录
- 告警:主动监控和警报
- 仪表盘:实时监控仪表板
入门指南
先决条件
- Python 3.8+
- Node.js 16+(用于TypeScript组件)
- Apache Synapse 4.x
- MCP客户端(克劳德桌面、光标等)
安装
- 克隆存储库:
git clone
cd apache-synapse-mcp- 安装依赖项:
# Python dependencies
pip install -r requirements.txt
# Node.js dependencies
npm install- 配置服务器:
cp config/synapse-mcp.example.yaml config/synapse-mcp.yaml
# Edit configuration file with your settings- 启动MCP服务器:
python -m synapse_mcp.server- 运行MCP服务器交互演示:
python examples/mcp_servers_interaction.py- 运行测试:
# Run basic functionality tests
pytest tests/test_basic_functionality.py -v
# Run MCP servers interaction tests
pytest tests/test_mcp_servers_interaction.py -vMCP客户端配置
添加到您的MCP客户端配置中(例如,Claude Desktop):
{
"mcpServers": {
"synapse": {
"command": "python",
"args": ["-m", "synapse_mcp.server"],
"env": {
"SYNAPSE_CONFIG": "/path/to/config/synapse-mcp.yaml"
}
},
"order-management": {
"command": "python",
"args": ["-m", "src.services.order_management_server"],
"env": {
"MCP_CONFIG": "/path/to/config/mcp-servers.yaml"
}
},
"payment-processing": {
"command": "python",
"args": ["-m", "src.services.payment_processing_server"],
"env": {
"MCP_CONFIG": "/path/to/config/mcp-servers.yaml"
}
}
}
}使用示例
使用MCP服务器的电子商务工作流
from src.services.order_management_server import OrderManagementMCPServer
from src.services.payment_processing_server import PaymentProcessingMCPServer
# Initialize both servers
order_server = OrderManagementMCPServer()
payment_server = PaymentProcessingMCPServer()
# Step 1: Create an order
order_result = await order_server.call_tool("create_order", {
"customer_id": "cust_001",
"items": [
{"product_id": "prod_001", "quantity": 1},
{"product_id": "prod_002", "quantity": 2}
],
"shipping_address": {
"street": "123 Main St",
"city": "New York",
"state": "NY",
"zip": "10001",
"country": "USA"
}
})
# Step 2: Process payment
payment_result = await payment_server.call_tool("process_payment", {
"amount": 1359.96,
"currency": "USD",
"payment_method": "credit_card",
"payment_details": {
"card_number": "4111111111111111",
"expiry_month": 12,
"expiry_year": 2025,
"cvv": "123"
},
"order_id": order_result["order_id"],
"customer_id": "cust_001"
})
# Step 3: Update order status
await order_server.call_tool("update_order_status", {
"order_id": order_result["order_id"],
"status": "confirmed"
})创建代理服务
from synapse_mcp import SynapseMCPServer
# Initialize server
server = SynapseMCPServer()
# Create proxy service
proxy_config = {
"name": "user-service-proxy",
"target": "http://backend-service:8080",
"transforms": ["xml-to-json"],
"security": "oauth2"
}
server.create_proxy_service(proxy_config)消息转换
# Transform XML to JSON
transformer = server.get_transformer("xml-to-json")
result = transformer.transform(xml_message)服务发现
# List available services
services = server.list_services()
# Get service details
service_info = server.get_service_info("user-service-proxy")api参考
核心方法
create_proxy_service(config)
使用指定的配置创建新的代理服务。
list_services()
返回所有可用服务的列表。
get_service_info(service_name)
返回特定服务的详细信息。
transform_message(transformer_name, message)
使用指定的转换器转换消息。
route_message(message, routing_rules)
根据指定的规则路由消息。
配置
服务器配置支持:
- 服务定义:代理服务、转换器和端点
- 安全设置:身份验证和授权配置
- 监控:指标收集和日志记录设置
- 演出:连接池和超时设置
安全考虑
- 认证:所有请求都必须经过身份验证
- 授权:对所有操作进行基于角色的访问控制
- 加密:敏感数据在传输和静止时都进行了加密
- 审计:记录所有操作以进行安全审计
- 速率限制:通过限速防止滥用
监测和可观察性
指标
- 请求/响应时间
- 错误率
- 吞吐量
- 资源利用率
日志记录
- 结构化JSON日志记录
- 用于请求跟踪的相关ID
- 安全事件日志记录
- 性能指标
告警
- 服务健康监测
- 性能阈值警报
- 安全事件警报
- 资源利用率警报
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 添加测试
- 提交拉取请求
许可证
此项目根据Apache许可证2.0获得许可。
