Salesforce MCP服务器,具有增强的测试执行功能
一款可用于生产的Salesforce MCP(模型上下文协议)服务器,具有全面的测试执行、详细的故障报告、智能身份验证,以及用于通用LLM集成的完整Salesforce API覆盖范围。
✨ 主要特点
🧪 增强测试执行和覆盖
- 详细故障报告 -行号、堆栈跟踪和错误上下文
- 全面覆盖分析 -组织范围和特定类别的覆盖指标
- 智能测试监控 -自动状态检测和结果检索
- 多种执行方式 -工具API、REST API和基于队列的方法
🔐 智能身份验证
- 简单的Salesforce后端 -可靠、久经考验的Salesforce客户端
- 灵活的凭证管理 -具有安全令牌处理的环境变量
- 连接重试逻辑 -指数回退自动重新连接
- 会话管理 -具有验证功能的持久连接
📊 全面的Salesforce API覆盖范围
- SOQL/SOSL查询 -具有智能规范化的完整查询功能
- DML操作 -创建、读取、更新、删除并验证
- 元数据管理 -自定义对象和字段的创建/修改
- 批量操作 -基于CSV的高性能批量处理
- 测试执行 -完整的Apex测试生命周期管理
🚀 快速开始
1.安装依赖项
pip3 install simple-salesforce python-dotenv requests2.配置身份验证
创建一个 .env 使用Salesforce配置文件:
SALESFORCE_USERNAME=your_username@company.com
SALESFORCE_PASSWORD=your_password
SALESFORCE_SECURITY_TOKEN=your_security_token
SALESFORCE_INSTANCE_URL=https://your-domain.my.salesforce.com # Optional3.运行服务器
# Start MCP server
python3 salesforce_mcp_server.py
# Or run as module
python3 -m salesforce_mcp_server4.测试设置
测试基本连接:
# Test connection
from salesforce_mcp_server import test_connection
result = test_connection()
print(result['message'])概述
python3 -m pip install --user --upgrade pip
python3 -m pip install --user requests simple-salesforce python-dotenv
export PATH="$HOME/Library/Python/$(python3 -c 'import sys;print(f\"{sys.version_info.major}.{sys.version_info.minor}\")')/bin:$PATH"
python3 /Users/amnadaf/salesforce-mcp-server/server.py🧪 增强的测试执行功能
详细故障报告
当测试失败时,获取全面的诊断信息:
🧪 **Apex Test Execution Complete**
📊 **Summary:**
• Total Tests: 2
• ✅ Passed: 0
• ❌ Failed: 2
• Success Rate: 0.0%
• Job ID: 707gL00000BEzFbQAL
❌ **Failed Tests (Detailed):**
**1. ContactManagerTest.testSyncMailingAddress_NoAccountFail**
📍 **Line:** 17
⏱️ **Runtime:** 150ms
🚨 **Error:** System.DmlException: Insert failed. FIELD_INTEGRITY_EXCEPTION,
There's a problem with this country: [BillingCountry]
📋 **Stack Trace:**
Class.ContactManagerTest.makeData: line 17, column 1
**2. ContactManagerTest.testSyncMailingAddress_Success**
📍 **Line:** 17
🚨 **Error:** System.DmlException: Insert failed. FIELD_INTEGRITY_EXCEPTION,
There's a problem with this country: [BillingCountry]
📋 **Stack Trace:**
Class.ContactManagerTest.makeData: line 17, column 1
📈 **Code Coverage Details:**
🟢 AccountManager: 100.0% (7/7 lines)
🔴 ContactManager: 0.0% (0/14 lines)
💡 **Recommendations:**
• Review failed test details above
• Check the specific line numbers where failures occurred
• Fix the underlying code issues causing test failures
• Re-run tests after making corrections智能覆盖集成
通过自动故障检测检查覆盖范围:
# After running tests, check coverage to see detailed results
check_test_status_and_coverage(class_names=['ContactManagerTest'])🛠️ 可用工具(共15个)
测试执行工具(3)
run_apex_tests_comprehensive-运行带有详细故障报告的测试check_test_status_and_coverage-获取故障详细信息的覆盖范围get_current_org_coverage-全组织覆盖范围分析
数据查询工具(3)
salesforce_query-使用智能规范化执行SOQL查询query_tooling_api_direct-直接使用工具API访问元数据salesforce_connection_test-测试和验证连接
数据操作工具(2)
get_object_required_fields-获取验证所需的字段create_records_with_validation-创建具有全面验证的记录
元数据管理工具(6)
create_custom_object-使用标准字段创建自定义对象create_custom_field-向对象添加自定义字段update_custom_object-修改对象属性update_custom_field-修改字段属性delete_custom_object-删除自定义对象(带警告)delete_custom_field-删除自定义字段(带警告)
批量操作工具(2)
salesforce_bulk_insert_simple-从CSV数据批量插入salesforce_bulk_update_simple-从CSV数据批量更新salesforce_describe_object-获取详细的对象元数据
📋 综合测试执行示例
1. 使用增强的报告运行测试
# Run specific test classes
run_apex_tests_comprehensive(
class_names=['ContactManagerTest', 'AccountManagerTest'],
test_level='RunSpecifiedTests',
code_coverage=True,
verbose=True
)输出:
✅ Successfully enqueued 2 test classes!
📋 **Enqueued Tests:**
• ContactManagerTest (Queue ID: 709gL000003EcbdQAC)
• AccountManagerTest (Queue ID: 709gL000003EcbeQAC)
💡 **Monitor Progress:** Check Setup → Apex Test Execution
⏳ **Note:** Tests are now running. Use 'check coverage' to see results once complete.2. 检查带有详细故障的结果
# Get comprehensive results including failures and coverage
check_test_status_and_coverage(class_names=['ContactManagerTest'])输出包括:
- ✅ 测试执行总结 带有通过/失败计数
- 🚨 详细的故障分析 带有行号和堆栈痕迹
- 📈 代码覆盖率指标 按班级细分
- 💡 可采取行动的建议 用于解决问题
3. 组织范围覆盖分析
# Get org-wide coverage without running tests
get_current_org_coverage()输出:
📈 **Current Org Code Coverage**
📊 **Overall Statistics:**
• Total Classes: 127
• Overall Coverage: 82.3%
• Total Lines: 15,847
• Covered Lines: 13,042
• Uncovered Lines: 2,805
🟢 **High Coverage (≥85%):** 89 classes
🟢 AccountManager: 100.0% (156/156 lines)
🟢 ContactProcessor: 94.2% (243/258 lines)
🔴 **Low Coverage (<75%):** 12 classes
🔴 ContactManager: 0.0% (0/14 lines)
🔴 DataHelper: 45.2% (67/148 lines)🔧 智能功能
查询规范化
自动修复常见的SOQL问题:
- ✅
COUNT()→COUNT(Id)为了更好的兼容性 - ✅ 去除
LIMIT从COUNT查询(不支持) - ✅ 处理环境变量替换
智能错误处理
- 🔄 连接重试 指数回退
- 📝 详细的错误消息 附上下文和建议
- 🛡️ 安全凭证记录 (隐藏敏感数据)
- ⚡ 优美的倒退 跨多种API方法
全面验证
在创建记录之前,请验证:
- ✅ 必填字段 提供
- ✅ 数据类型 匹配字段定义
- ✅ 选择列表值 是有效的选项
- ✅ 字段长度 不要超过限制
- ✅ 格式要求 (日期、电子邮件等)
🏗️ 建筑
清洁模块化设计
salesforce_mcp_server.py
├── 🔐 Authentication & Connection Management
│ ├── initialize_salesforce() # Smart connection with retry
│ ├── ensure_connection() # Connection validation
│ └── test_connection() # Connection diagnostics
│
├── 🧪 Enhanced Test Execution Engine
│ ├── run_apex_tests_comprehensive() # Multi-method test execution
│ ├── check_test_status_and_coverage() # Results with failure details
│ ├── get_test_results_for_classes() # Detailed result retrieval
│ └── parse_line_number_from_stack_trace() # Error analysis
│
├── 📊 Coverage Analysis System
│ ├── get_comprehensive_coverage_data() # Multi-source coverage
│ ├── get_current_org_coverage() # Org-wide analysis
│ └── format_comprehensive_test_results() # Rich formatting
│
├── 📝 Data Management Tools
│ ├── salesforce_query() # Smart SOQL execution
│ ├── create_records_with_validation() # Validated record creation
│ ├── get_object_required_fields() # Field requirement analysis
│ └── bulk operations # CSV-based bulk processing
│
├── 🏗️ Metadata Management
│ ├── create_custom_object() # Object creation with standards
│ ├── create_custom_field() # Field creation with validation
│ └── describe_object() # Detailed metadata retrieval
│
└── 🔧 MCP Protocol Integration
├── do_list_tools() # Tool discovery and registration
├── do_call_tool() # Tool execution with error handling
└── main() # MCP server event loop多方法测试执行
智能回退系统,实现最大兼容性:
- 🚀 ApexTestQueueItem (主要)-直接基于队列的执行
- 🔧 工具API增强 -具有适当有效载荷的先进API
- 📊 分析模式 -执行不可用时的信息收集
全面覆盖检索
多个数据源确保完整的覆盖信息:
- 🎯 特定工作覆盖范围 -使用AsyncApexJobId工具API
- 📈 总覆盖范围 -ApexCodeCoverageAggregate查询
- 🔍 详细覆盖范围 -使用方法级数据的ApexCodeCoverage
- ⏰ 最近的报道 -基于时间的覆盖率查询
📊 配置选项
环境变量
| 变量 | 描述 | 必填 | 默认 |
|---|---|---|---|
SALESFORCE_USERNAME | Salesforce用户名 | ✅ | - |
SALESFORCE_PASSWORD | Salesforce密码 | ✅ | - |
SALESFORCE_SECURITY_TOKEN Salesforce 安全令牌✅ | - | ||
SALESFORCE_INSTANCE_URL | 自定义实例URL | ❌ | 自动检测 |
测试执行选项
run_apex_tests_comprehensive(
class_names=['TestClass1', 'TestClass2'], # Specific classes
test_level='RunSpecifiedTests', # Test scope
async_execution=False, # Wait for completion
code_coverage=True, # Include coverage
verbose=True # Detailed output
)覆盖率分析选项
check_test_status_and_coverage(
class_names=['MyTestClass'] # Optional: specific classes
)
get_current_org_coverage() # Org-wide analysis🧪 测试与验证
连接测试
# Test basic connectivity
python3 -c "
from salesforce_mcp_server import test_connection
result = test_connection()
print(f'Status: {result[\"status\"]}')
print(f'Message: {result[\"message\"]}')
"查询测试
# Test SOQL execution
python3 -c "
from salesforce_mcp_server import do_call_tool
result = do_call_tool({
'name': 'salesforce_query',
'arguments': {'query': 'SELECT COUNT(Id) FROM Account'}
})
print(result)
"测试执行验证
# Run and check a test class
python3 -c "
from salesforce_mcp_server import run_apex_tests_comprehensive, check_test_status_and_coverage
import time
# Run tests
result = run_apex_tests_comprehensive(class_names=['MyTestClass'])
print('Test Execution:', result['message'])
# Wait and check results
time.sleep(30)
coverage = check_test_status_and_coverage(class_names=['MyTestClass'])
print('Coverage Results:', coverage['message'])
"🚀 MCP客户端集成
Claude桌面配置
添加到MCP设置文件中:
{
"mcpServers": {
"salesforce": {
"command": "python3",
"args": ["salesforce_mcp_server.py"],
"cwd": "/path/to/your/salesforce-mcp-server",
"env": {
"SALESFORCE_USERNAME": "your_username@company.com",
"SALESFORCE_PASSWORD": "your_password",
"SALESFORCE_SECURITY_TOKEN": "your_token"
}
}
}
}在Claude Desktop中的使用
"Run tests for ContactManagerTest and show me detailed failure information"
"Check the code coverage for my org and tell me which classes need improvement"
"Create a new custom object called ProjectTracker with fields for Name, Status, and Due Date"
"Query all Accounts created this month and show me the first 10 results"🔐 安全功能
凭证保护
- ✅ 屏蔽测井 -敏感数据从不出现在日志中
- ✅ 环境隔离 -凭据存储在
.env文件 - ✅ 连接验证 -对身份验证问题的即时反馈
- ✅ 会话管理 -自动刷新令牌并重试
错误处理
- 🛡️ 安全错误消息 -无证书暴露错误
- 📝 详细诊断 -无敏感数据的丰富上下文
- 🔄 自动重试 -身份验证失败时的智能重新连接
- ⚡ 优雅降级 -功能不可用时的回退
📈 性能优化
智能连接管理
- 🔄 连接复用 -跨操作的持续会话
- ⚡ 惰性初始化 -仅在需要时连接
- 🧠 连接验证 -手术前快速健康检查
- 🔁 自动重试 -智能重新连接策略
高效的测试执行
- 🎯 有针对性的查询 -特定作业结果检索
- 📊 平行覆盖 -多个覆盖数据源
- 🏃 队列优化 -高效使用ApexTestQueueItem
- 💾 结果缓存 -避免多余的API调用
优化批量操作
- 📦 批量处理 -可配置的批量大小
- 🔄 CSV流媒体 -内存高效的数据处理
- ⚡ API批量使用 -高性能简单销售批量
- 📈 进度跟踪 -实时运行监控
🆘 故障排除
常见连接问题
# Test connection with detailed logging
PYTHONPATH=. python3 -c "
import logging
logging.basicConfig(level=logging.DEBUG)
from salesforce_mcp_server import test_connection
result = test_connection()
print(result)
"测试执行问题
- 未找到测试 -验证类名是否完全匹配
- 权限错误 -确保用户具有测试执行权限
- 超时问题 -检查组织性能和测试复杂性
- 保险范围缺失 -验证组织中是否启用了代码覆盖率
身份验证故障排除
- 无效凭证 -检查用户名、密码和令牌
- 安全令牌问题 -如果IP限制更改,则重置令牌
- 实例URL问题 -验证自定义域配置
- API版本兼容性 -更新到最新支持版本
🤝 贡献
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 为新功能添加全面的测试
- 确保所有测试通过并保持覆盖率
- 用示例更新文档
- 提交带有详细描述的拉取请求
开发设置
# Clone and setup
git clone https://github.com/your-username/salesforce-mcp-server
cd salesforce-mcp-server
# Install dependencies
pip3 install -r requirements.txt
# Setup environment
cp .env.example .env
# Edit .env with your credentials
# Run tests
python3 -m pytest tests/ -v
# Test MCP integration
python3 salesforce_mcp_server.py📝 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
🆕 最近的更新
最新功能(生产就绪)
🧪 增强型测试执行引擎
- 行号提取 -从堆栈跟踪中精确定位错误
- 详细错误上下文 -带有截断处理的完整错误消息
- 智能作业检测 -自动发现最近的作业ID
- 多方法执行 -最大兼容性的回退策略
📊 高级覆盖分析
- 综合数据源 -工具API+常规API覆盖范围
- 班级级别细分 -具有洞察力的个人课程覆盖率
- 方法级别详细信息 -可用时的测试方法覆盖范围
- 组织范围分析 -完整的组织覆盖分析
🔧 改进的工具架构
- 增强的错误处理 -更好的带有上下文的错误消息
- 智能查询规范化 -自动SOQL修复和改进
- 全面验证 -创建前字段验证,并提供有用的指导
- 灵活的身份验证 -具有重试逻辑的多种连接策略
🚀 性能和可靠性
- 连接优化 -智能连接重用和验证
- 强大的错误恢复 -指数回退自动重试
- 内存效率 -优化批量操作和数据处理
- 生产硬化 -全面的日志记录和监控
______________________________________________________________________
⭐ 如果此存储库有助于您将Salesforce与LLM工作流集成,请将其标记为星号!
克劳德salesforce mcp服务器
自定义Python MCP服务器将Claude AI与Salesforce API连接起来,实现自然语言查询、自动化数据管理和智能销售洞察。Claude以对话方式处理SOQL查询,而服务器则处理批量操作、自定义对象和实时同步。提供75%的数据处理速度和AI驱动的CRM自动化。
