Skip to main content
Glama
marcelofiorito

Joule HR MCP Server

Joule HR MCP Server — SAP SuccessFactors

Servidor MCP (Model Context Protocol) que expõe dados do SAP SuccessFactors como ferramentas para agentes de IA, como o SAP Joule Studio.

Joule Studio (BTP)  →  MCP Server (CF)  →  SuccessFactors OData API
       ↑
  Claude / LLM

Ferramentas disponíveis

Tool

Descrição

listar_funcionarios

Lista colaboradores com nome, cargo e departamento

dados_funcionario

Perfil completo: cargo, gestor, centro de custo, avaliação

vagas_internas

Vagas abertas, com filtro por departamento

avaliacao_desempenho

Histórico de avaliações de um funcionário

metas_funcionario

Metas e objetivos com status de progresso

subordinados_diretos

Equipe de um gestor

organograma_departamento

Estrutura e colaboradores de um departamento

remuneracao_funcionario

Componentes salariais

Related MCP server: SAP OData to MCP Server

Pré-requisitos

  • Python 3.12+

  • Conta SAP BTP com Cloud Foundry habilitado

  • Acesso ao SAP SuccessFactors com OAuth App registrado

  • cf CLI + mbt instalados

Configuração

cp .env.example .env
# Edite .env com suas credenciais SFSF

Variáveis necessárias no .env:

SFSF_COMPANY=SFSALES010674
SFSF_CLIENT_ID=<oauth-client-id-do-admin-center>
SFSF_LOGIN_URL=https://hcm-us10-sales.hr.cloud.sap
SFSF_API_URL=https://apisalesdemo8.successfactors.com
SFSF_KEY_B64=<chave-privada-rsa-em-base64>
SFSF_CERT_B64=<certificado-x509-em-base64>

Gerando chave e certificado SAML

# Gerar chave RSA e certificado autoassinado
openssl req -x509 -newkey rsa:2048 -keyout sfsf_poc.key -out sfsf_poc.crt \
  -days 365 -nodes -subj "/CN=joule-mcp/O=MyOrg"

# Exportar em base64 para as env vars
export SFSF_KEY_B64=$(cat sfsf_poc.key | base64 | tr -d '\n')
export SFSF_CERT_B64=$(cat sfsf_poc.crt | base64 | tr -d '\n')

Registrando o OAuth App no SuccessFactors

  1. Admin Center → Manage OAuth2 Client Applications → Register Client Application

  2. Cole o conteúdo do sfsf_poc.crt no campo X.509 Certificate

  3. Copie o API Key gerado → use como SFSF_CLIENT_ID

Rodando localmente (VS Code / Claude Code)

pip install -r requirements.txt
MODE=sfsf SFSF_CLIENT_ID=xxx SFSF_KEY_B64=xxx SFSF_CERT_B64=xxx \
  python mcp_server_sfsf.py

Adicione ao .mcp.json do projeto:

{
  "mcpServers": {
    "joule-sfsf": {
      "command": "python3",
      "args": ["mcp_server_sfsf.py"],
      "env": { "MODE": "sfsf" }
    }
  }
}

Deploy no SAP BTP Cloud Foundry

# 1. Login
cf login --sso

# 2. Push sem iniciar
cf push joule-sfsf-mcp -f manifest-mcp.yml --no-start

# 3. Injetar credenciais
cf set-env joule-sfsf-mcp SFSF_CLIENT_ID "<oauth-client-id>"
cf set-env joule-sfsf-mcp SFSF_KEY_B64   "$(cat sfsf_poc.key | base64 | tr -d '\n')"
cf set-env joule-sfsf-mcp SFSF_CERT_B64  "$(cat sfsf_poc.crt | base64 | tr -d '\n')"
cf set-env joule-sfsf-mcp MCP_AUTH_TOKEN "$(python3 -c 'import uuid; print(uuid.uuid4())')"

# 4. Iniciar
cf start joule-sfsf-mcp

URL após deploy:

https://joule-sfsf-mcp.cfapps.us10.hana.ondemand.com/mcp

Integração com Joule Studio

Crie uma BTP Destination com estas propriedades:

Propriedade

Valor

Nome

JouleHR-MCP

Tipo

HTTP

URL

https://joule-sfsf-mcp.cfapps.us10.hana.ondemand.com

Authentication

NoAuthentication

sap-joule-studio-mcp-server

true

URL.headers.Authorization

Bearer <MCP_AUTH_TOKEN>

No Joule Studio: Adicionar servidor MCP → selecionar destino JouleHR-MCP → caminho /mcp.

Estrutura do projeto

├── mcp_server_cf.py     # MCP Server para Cloud Foundry (Streamable HTTP)
├── mcp_server_sfsf.py   # MCP Server local para desenvolvimento (stdio)
├── manifest-mcp.yml     # Manifest CF
├── requirements.txt     # Dependências Python
└── .env.example         # Variáveis de ambiente necessárias

Tecnologias

  • Python 3.12 + FastMCP 1.28 — servidor MCP

  • signxml + lxml — assinatura SAML para OAuth 2.0

  • SAP SuccessFactors OData V2 — fonte de dados

  • SAP BTP Cloud Foundry — plataforma de deployment

  • SAP Joule Studio — interface do agente

Referência

Licença

MIT

F
license - not found
-
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/marcelofiorito/joule-sfsf-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server