successfactors-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SF_HOST | Yes | SuccessFactors host, e.g. example.invalid. | |
| SF_USER_ID | Yes | Technical user; must equal the certificate's CN. | |
| RESULTS_DIR | No | Where MCP tools and scripts write payload files. | ./results |
| SF_TOKEN_URL | Yes | https://{SF_HOST}/oauth/token. | |
| SF_CLIENT_KEY | Yes | OAuth2 client API key from SF Admin Center. | |
| SF_COMPANY_ID | Yes | Default tenant/company ID. | |
| REQUEST_TIMEOUT | No | HTTP timeout in seconds. | 30 |
| TENANT_KEYS_DIR | No | Where per-tenant key+cert pairs are stored. | ./tenants |
| SF_ALLOWED_HOSTS | No | JSON list of extra hosts allowed for per-request connection overrides. | |
| SF_ODATA_VERSION | No | OData REST version. | v2 |
| SF_PRIVATE_KEY_PEM | No | Base64-encoded PEM of the RSA private key (single-tenant fallback). | |
| SF_PRIVATE_KEY_PATH | No | Path template with {company_id} placeholder to the RSA private key PEM file. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_tenantsA | List the SuccessFactors instances this server can reach. Call this first: the company_id values it returns are what the other tools
take as their |
| odata_metadataA | Fetch OData $metadata (EDMX) and reduce it to a compact field map. entity="" pulls the whole service metadata (large — hundreds of entity types); entity="EmpJob" pulls just that entity set. The full {entity: {field: attributes}} map is written to a JSON file, and a small map is returned inline as well, so two instances can be compared without ever loading raw EDMX into the conversation. |
| compare_metadataA | Compare the OData configuration of two instances and return the drift. entity="EmpJob" compares one entity set; entity="" compares the whole service. The comparison runs here, not in the conversation: one instance's EmpJob metadata alone is ~40 KB, so diffing two of them in context is both expensive and easy to get wrong. Returns in_sync plus, per entity, the fields missing on either side and the
fields whose attributes differ, each as [value_in_a, value_in_b]. The |
| odata_queryA | Run an OData v2 query, following __next until exhausted or max_pages. path is the entity set and may carry query options, e.g. "FOCompany" or "EmpJob?$select=userId,jobCode". Effective-dated entities (EmpJob, Position, FO*, MDF) return ONLY today's time slice unless you pass fromDate=1900-01-01 and toDate=9999-12-31 in params. Records are written to a JSON file; the tool returns counts, the field names of the first record, and the path. preview>0 additionally returns that many records inline — this may be HR data, so ask for it only when the values themselves are needed. |
| ce_queryA | Query the EC Compound Employee (SOAP) API and save the payload to disk. person_id_external / user_id are comma-separated and take precedence over every other filter when set. last_modified_on is an ISO datetime for a delta pull (SAP allows at most 3 months of look-back). With no filter at all this is a full extract, capped by max_pages. select_segments defaults to the widely supported COMMON_SEGMENTS. If SF answers INVALID_SFQL naming a segment, that module is not enabled on the tenant — pass a narrower list. Each queryMore page is written as its own XML file. The tool returns counts and paths only: one employee's payload is ~80 KB of HR data. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 5 tools
Each tool targets a distinct concern: tenant discovery, SOAP extract, OData query, metadata fetch, and metadata comparison. There is no functional overlap, and the descriptions make the boundaries clear.
Names are all lowercase snake_case and descriptive, but the pattern is mixed: list_tenants and compare_metadata are verb-first, while ce_query, odata_metadata, and odata_query are object-first. Minor deviation from a uniform verb_noun style.
Five tools is well-scoped for the server's read-only SuccessFactors integration purpose. Each tool earns its place and there is no bloat or thinness.
The toolset covers the full read-only lifecycle: discover instances, extract employee data, query OData, fetch metadata, and compare metadata between environments. No obvious dead ends or missing operations for the stated purpose.