项目简介
Payment_SWElite 是一个微服务架构的支付系统,实现了支付的授权、结算和退款流程。为了增强系统的可观察性和诊断能力,该项目特别集成了Model Context Protocol (MCP) 服务器。通过这些MCP服务器,AI模型可以理解支付系统的上下文,并使用自然语言与之交互,执行查询、分析和自动化操作。
主要功能点
该仓库提供了6个核心MCP服务器,每个都专注于支付系统的一个特定方面:
- 断路器(Circuit Breaker)MCP
- 功能:查询系统断路器(Circuit Breaker)的状态(如开启/关闭/半开),检查Kafka连接健康状况,分析故障模式,并提供诊断建议。
- 数据库查询(Database Query)MCP
- 功能:允许AI模型通过自然语言查询支付交易历史、账本条目、检测未发布的事件、验证复式记账的完整性以及生成支付统计报告。
- Redis缓存(Redis Cache)MCP
- 功能:检查Redis中存储的限流状态和幂等性键,提供Redis内存使用和缓存命中率等统计信息,并可执行限流重置、TTL分析等操作。
- Kafka操作(Kafka Operations)MCP
- 功能:列出Kafka主题、查看主题消息数量、分区信息和偏移量,查询死信队列(DLQ)消息,以及检查Kafka集群的整体健康状态。
- 负载测试(Loadtest)MCP
- 功能:启动并监控k6负载测试,管理测试场景,实时获取性能指标,并分析测试结果。
- 系统健康(System Health)MCP
- 功能:提供整个系统的健康检查概览,监控各个微服务的状态,报告CPU、内存、磁盘等资源使用情况,并协助发现潜在的故障。
这些MCP服务器协同工作,为AI模型提供了一个全面的接口,以理解和管理复杂的支付微服务环境。
安装步骤
要运行该项目并使用MCP服务器,您需要完成以下步骤:
-
克隆仓库:
git clone https://github.com/JWookLe/Payment_SWElite.git cd Payment_SWElite -
启动核心支付系统: 使用Docker Compose启动所有必要的微服务(包括MariaDB, Redis, Kafka, Eureka, API Gateway, 支付服务等)。
docker compose up --build -d等待所有服务完全启动,这可能需要几分钟。
-
构建MCP服务器: 每个MCP服务器都是一个独立的Node.js应用,需要单独构建。进入每个MCP服务器目录并执行构建命令。
cd mcp-servers/circuit-breaker-mcp npm install && npm run build cd ../database-query-mcp npm install && npm run build cd ../redis-cache-mcp npm install && npm run build cd ../kafka-operations-mcp npm install && npm run build cd ../loadtest-mcp npm install && npm run build cd ../system-health-mcp npm install && npm run build
服务器配置
MCP服务器是为MCP客户端(如Claude Desktop)提供服务的。要让您的MCP客户端连接到这些服务器,您需要根据以下信息在客户端的配置中添加相应的条目(通常是'claude_desktop_config.json'文件)。
以下是配置示例及其说明:
{ "mcpServers": { "payment-circuit-breaker": { "command": "node", "args": ["/path/to/your/Payment_SWElite/mcp-servers/circuit-breaker-mcp/dist/index.js"], "env": { "API_BASE_URL": "http://localhost:8082" } }, "payment-database": { "command": "node", "args": ["/path/to/your/Payment_SWElite/mcp-servers/database-query-mcp/dist/index.js"], "env": { "API_BASE_URL": "http://localhost:8082" } }, "payment-redis": { "command": "node", "args": ["/path/to/your/Payment_SWElite/mcp-servers/redis-cache-mcp/dist/index.js"], "env": { "API_BASE_URL": "http://localhost:8082" } }, "payment-kafka": { "command": "node", "args": ["/path/to/your/Payment_SWElite/mcp-servers/kafka-operations-mcp/dist/index.js"], "env": { "API_BASE_URL": "http://localhost:8082" } }, "payment-loadtest": { "command": "node", "args": ["/path/to/your/Payment_SWElite/mcp-servers/loadtest-mcp/dist/index.js"], "env": { "K6_RESULTS_DIR": "/path/to/your/Payment_SWElite/loadtest/k6", "K6_SCRIPT_PATH": "/path/to/your/Payment_SWElite/loadtest/k6/payment-scenario.js", "API_BASE_URL": "http://localhost:8082" // 如果需要调用监控服务的API } }, "payment-system-health": { "command": "node", "args": ["/path/to/your/Payment_SWElite/mcp-servers/system-health-mcp/dist/index.js"], "env": { "API_BASE_URL": "http://localhost:8082" } } } }
配置说明:
- 'mcpServers': 包含所有MCP服务器配置的JSON对象。
- 'payment-circuit-breaker' (服务名称): MCP客户端中显示的服务器唯一标识符。您可以自定义此名称。
- 'command' (启动命令): 指定用于启动MCP服务器进程的程序。对于Node.js MCP服务器,通常是'node'。
- 'args' (启动参数): 传递给启动命令的参数。这里应提供MCP服务器编译后的入口文件('dist/index.js')的绝对路径。请务必将'/path/to/your/Payment_SWElite/'替换为您的本地项目实际路径。
- 'env' (环境变量): MCP服务器运行时需要的环境变量。
- 'API_BASE_URL': 指向 'monitoring-service' 微服务的地址,MCP服务器将通过此地址获取支付系统的监控数据和执行管理操作。在本例中,它是 'http://localhost:8082'。
- 'K6_RESULTS_DIR' / 'K6_SCRIPT_PATH': 'payment-loadtest' MCP服务器特有的环境变量,用于指定k6负载测试结果和脚本的路径。请替换为项目中的实际绝对路径。
- Claude API Key (可选): 如果您的MCP服务器内部需要调用Claude或其他大模型进行进一步分析,可能需要在启动MCP服务器的环境变量中设置 'ANTHROPIC_API_KEY' 或其他相关的API密钥。
完成配置后,请重启您的MCP客户端(如Claude Desktop),以便它能加载并连接到所有已配置的MCP服务器。
基本使用方法
配置并重启MCP客户端后,您可以通过以下方式开始与支付系统进行AI辅助交互:
- 在MCP客户端中启用MCP服务器: 确保您在Claude Desktop或其他MCP客户端界面中,已启用的MCP服务器列表中勾选了'payment-circuit-breaker', 'payment-database'等。
- 自然语言查询: 在客户端的聊天界面中,直接提出您的问题或指令。例如:
- 检查系统健康: “系统整体状态怎么样?”
- 查询支付记录: “查询最近1小时内失败的支付记录。” 或 “显示merchant M123的支付统计。”
- 监控Kafka: “Kafka的DLQ队列里有消息吗?”
- 获取断路器状态: “告诉我支付服务的断路器状态。”
- 运行负载测试: “运行一个400 RPS的支付全流程负载测试。”
- 获取诊断和建议: MCP服务器会处理您的请求,通过调用后端服务获取数据,并返回结构化的信息,AI模型将这些信息转化为可理解的自然语言响应,甚至提供诊断和操作建议。
示例对话:
- 用户: "서킷 브레이커 상태 확인해줘" (检查一下断路器状态)
- Claude: "✅ CLOSED - 正常 작동 중, 실패율 0.5%" (✅ 关闭状态 - 正常运行中,失败率0.5%)
- 用户: "지난 1시간 실패한 결제 보여줘" (显示过去1小时失败的支付)
- Claude: "📊 3개 발견: #123 (10,000원), #456 (25,000원), #789 (50,000원)" (📊 发现3笔:#123 (10,000韩元), #456 (25,000韩元), #789 (50,000韩元))
- 用户: "settlement.dlq에 메시지 있어?" (settlement.dlq有消息吗?)
- Claude: "📊 14개 메시지 발견 - 대부분 PG 타임아웃 에러" (📊 发现14条消息 - 大部分是PG超时错误)
信息
分类
开发者工具