A生产级 模型上下文协议 将Claude(或任何MCP客户端)连接到的服务器 SAP SuccessFactors 通过OData API。查询员工数据、管理权限、运行合规报告和管理人力资源操作——所有这些都是通过自然语言完成的。
You: "Who on the Engineering team has a work anniversary this month?"
Claude: [calls get_anniversary_employees] Found 3 upcoming anniversaries...
- Jane Smith (5 years - milestone!) - March 12
- Bob Johnson (2 years) - March 18
- Alice Chen (10 years - milestone!) - March 25
# Run all 110 tests
uv run pytest tests/ -v
# Run with coverage
uv run pytest tests/ --cov=sf_mcp
# Lint
uv run ruff check .
# Type check
uv run mypy sf_mcp/
测试覆盖范围包括:
配置 --DC映射分辨率、不区分大小写、别名、错误情况
验证 --所有10个验证器均具有有效/无效输入,防止注射
客户 --模拟HTTP响应(200、401、500,空,连接错误)
速率限制器 --限制执行、滑动窗口、每实例隔离、线程安全
缓存 --Put/get、TTL到期、类别TTL、无效、驱逐、深度复制安全
分页 --单页/多页,max_pages限制,错误处理,$跳过增量
装饰器 --值注入、验证错误、max_top箝位、异常处理
API 参考
每个工具都接受这些常见参数:
参数
类型
必填
说明
instance
string
是
SuccessFactors公司ID
data_center
string
Yes
SAP数据中心代码(例如。, DC55, DC10)
environment
string
是
preview, production,或 sales_demo
auth_user_id
string
是
SuccessFactors用户ID(不带@instance)
auth_password
string
是
SuccessFactors密码
Configuration Tools
get_configuration
检索SuccessFactors实体的OData元数据。
参数
类型
必填
说明
entity
string
Yes
OData实体名称(例如。, User, Position)
list_entities
发现实例中所有可用的OData实体。
参数
类型
必填
说明
category
string
否
foundation, employee, talent, platform,或 all
compare_configurations
比较两个实例之间的实体配置(例如,dev与prod)。
参数
类型
必填
说明
instance1
string
是
第一个实例
instance2
string
是
第二个实例
entity
string
是
要比较的实体
data_center1
string
是
实例数据中心1
environment1
string
是
实例1的环境
data_center2
string
是
实例数据中心2
environment2
string
是
实例2的环境
RBP Security Tools
get_rbp_roles
参数
类型
必填
说明
include_description
boolean
否
包含角色描述(默认值:false)
get_role_permissions
参数
类型
必填
说明
role_ids
string
是
单个或逗号分隔: 10 或 10,20,30
locale
string
否
标签的区域设置(默认值: en-US)
get_user_permissions
参数
类型
必填
说明
user_ids
string
是
单个或逗号分隔: admin 或 admin,user2
locale
string
否
标签的区域设置(默认值: en-US)
get_user_roles
参数
类型
必填
说明
user_id
string
是
要查找角色的用户ID
include_permissions
boolean
否
还获取每个角色的权限(默认值:false)
get_permission_metadata
参数
类型
必填
说明
locale
string
否
标签的区域设置(默认值: en-US)
check_user_permission
参数
类型
必填
说明
access_user_id
string
是
有权检查的用户
target_user_id
string
是
权限的目标用户
perm_type
string
是
元数据中的权限类型
perm_string_value
string
是
权限字符串值
perm_long_value
string
否
权限长值(默认值: -1L)
get_dynamic_groups
参数
类型
必填
说明
group_type
string
否
按组类型筛选
RBP Audit Tools
get_role_history
参数
类型
必填
说明
role_id
string
否
按角色ID筛选
role_name
string
否
按角色名称筛选
from_date
string
否
开始日期(YYYY-MM-DD)
to_date
string
否
结束日期(YYYY-MM-DD)
top
integer
否
最大记录数(默认值:100,最大值:500)
get_role_assignment_history
参数
类型
必填
说明
role_id
string
否
按角色ID筛选
user_id
string
否
按用户ID筛选
from_date
string
否
开始日期(YYYY-MM-DD)
to_date
string
否
结束日期(YYYY-MM-DD)
top
integer
否
最大记录数(默认值:100,最大值:500)
至少一个 role_id 或 user_id 是必需的。
Data Query Tools
query_odata
参数
类型
必填
说明
entity
string
是
实体名称或密钥: User 或 User('admin')
select
string
否
字段: userId,firstName,lastName
filter
string
否
OData筛选器: status eq 'active'
expand
string
否
导航属性: empInfo,jobInfoNav
top
integer
否
最大记录数(默认值:100,最大值:1000)
skip
integer
否
要跳过的记录
orderby
string
否
排序: lastName asc
paginate
boolean
否
自动获取所有页面(默认值:false)
max_pages
integer
否
分页时的最大页数(默认值:10,最大值:50)
get_picklist_values
参数
类型
必填
说明
picklist_id
string
是
选择列表ID: ecJobFunction, nationality
locale
string
否
标签的区域设置(默认值: en-US)
include_inactive
boolean
否
包括非活动值(默认值:false)
Employee Lookup Tools
get_employee_profile
参数
类型
必填
说明
user_id
string
是
员工用户ID
include_compensation
boolean
否
包括补偿(默认值:false)
search_employees
参数
类型
必填
说明
search_text
string
否
部分名称搜索
department
string
否
按部门筛选
location
string
否
按位置筛选
manager_id
string
否
筛选经理的报告
status
string
否
active, inactive,或 all (默认值: active)
top
integer
否
最大结果(默认值:50,最大值:200)
get_employee_history
参数
类型
必填
说明
user_id
string
是
员工用户ID
include_compensation_changes
boolean
否
包括薪资历史记录(默认值:false)
get_team_roster
参数
类型
必填
说明
manager_id
string
是
经理的用户ID
include_indirect_reports
boolean
否
包括报告的报告(默认值:false)
top
integer
否
最大直接报告数(默认值:100,最大值:200)
Time Off Tools
get_time_off_balances
参数
类型
必填
说明
user_ids
string
是
逗号分隔的用户ID(最多50个)
as_of_date
string
否
截至日期的余额(YYYY-MM-DD)
get_upcoming_time_off
参数
类型
必填
说明
start_date
string
是
范围开始(YYYY-MM-DD)
end_date
string
是
范围结束(YYYY-MM-DD)
department
string
否
按部门筛选
manager_id
string
否
筛选到经理的团队
status
string
否
approved, pending,或 all (默认值: approved)
top
integer
否
最大结果(默认值:200,最大值:500)
get_time_off_requests
参数
类型
必填
说明
user_id
string
否
筛选到员工
status
string
否
pending, approved, rejected, cancelled,或 all (默认值: pending)