Skip to main content
Glama
rgrz

PeopleSoft MCP Server

by rgrz

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ORACLE_DSNYesDatabase connection string in format hostname:port/service_name
ORACLE_USERYesOracle database username
ORACLE_PASSWORDYesOracle database password

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
query_peoplesoft_dbA
Query PeopleSoft Oracle Database directly.

When working with a PeopleSoft database, follow these guidelines in order:

1. FIRST, always check the record structure and fields:
   - Use: SELECT RECNAME, FIELDNAME FROM PSRECFIELD WHERE RECNAME = 'YOUR_TABLE'
   - This shows all fields in a record/table and helps prevent invalid field errors

2. SECOND, check field properties and translations:
   - For field details: SELECT * FROM PSDBFIELD WHERE FIELDNAME = 'YOUR_FIELD'
   - For code translations: 
       * ALWAYS check PSXLATITEM and PSXLATITEMLANG for single/double letter codes
       * Example: 'M'/'F' for SEX, 'SP'/'C' for RELATIONSHIP, 'Y'/'N' for flags
       * Query: SELECT FIELDNAME, FIELDVALUE, XLATLONGNAME, XLATSHORTNAME 
               FROM PSXLATITEM 
               WHERE FIELDNAME = 'YOUR_FIELD'
   - Understanding field properties ensures correct data handling

3. THIRD, review table indexes for performance:
   - Use: SELECT * FROM PSKEYDEFN WHERE RECNAME = 'YOUR_TABLE'
   - Knowing indexes helps write efficient queries using indexed fields

4. FINALLY, write your query using the discovered structure
   - Example finding employee data:
     1. Check PSRECFIELD for PS_PERSONAL_DATA fields
     2. Look up important fields in PSDBFIELD
     3. Check PSKEYDEFN for PS_PERSONAL_DATA indexes
     4. Write optimized query using indexed fields
     5. Don't forget to join with PSXLATITEM for any code fields

AVAILABLE RESOURCES:
- Use describe_table() to get table structure
- Use list_tables() to search for tables
- Use get_translate_values() to decode field codes
- Use get_table_indexes() for performance optimization

:param sql_query: SQL query to execute (e.g., SELECT * FROM PS_EMPLOYEE WHERE EMPLID = :1)
:param parameters: List of query parameters (optional)
:return: A dictionary containing query results or an error message
describe_tableA
    Get the structure of a PeopleSoft table/record including all fields, 
    their types, lengths, and descriptions.
    
    Use this tool FIRST when you need to understand what fields are available
    in a table before writing queries.
    
    :param table_name: The PeopleSoft record name (e.g., 'PERSONAL_DATA', 'JOB', 'DEPT_TBL').
                      Can include or exclude the 'PS_' prefix.
    :return: List of fields with their properties
    
list_tablesA
    Search for PeopleSoft tables/records by name pattern or module.
    
    :param pattern: Optional search pattern (e.g., 'EMPLOYEE', 'JOB', 'GP_RSLT').
                   Searches with wildcards automatically.
    :param module: Optional module filter. Values:
                  - 'HR' or 'CORE': Core HR tables (PERSONAL_DATA, JOB, DEPT, etc.)
                  - 'GP' or 'PAYROLL': Global Payroll tables (GP_*)
                  - 'EP' or 'PERFORMANCE': ePerformance tables (EP_*)
                  - 'BN' or 'BENEFITS': Benefits tables (BEN_*, DEPENDENT_*)
                  - 'SYSTEM': PeopleTools system tables (PS* without underscore)
    :param limit: Maximum number of results (default 50)
    :return: List of matching tables with descriptions
    
get_translate_valuesA
    Get all valid translate values for a PeopleSoft field.
    
    Many PeopleSoft fields use single or double letter codes that have
    specific meanings. This tool decodes those values.
    
    Common examples:
    - SEX: 'M' = Male, 'F' = Female
    - HR_STATUS: 'A' = Active, 'I' = Inactive
    - EMPL_STATUS: 'A' = Active, 'T' = Terminated, 'L' = Leave, etc.
    - MAR_STATUS: 'S' = Single, 'M' = Married, 'D' = Divorced
    
    :param field_name: The field name to look up (e.g., 'SEX', 'HR_STATUS', 'EMPL_STATUS')
    :return: List of valid values with their short and long descriptions
    
get_table_indexesA
    Get the index keys for a PeopleSoft table to help write efficient queries.
    
    Understanding indexes helps you:
    - Write WHERE clauses that use indexed fields for better performance
    - Understand the logical key structure of a table
    - Know which fields uniquely identify a row
    
    Common PeopleSoft key patterns:
    - Simple: EMPLID (employee ID only)
    - Effective-dated: EMPLID, EMPL_RCD, EFFDT, EFFSEQ
    - SetID-based: SETID, DEPTID, EFFDT
    
    :param table_name: The PeopleSoft record name (e.g., 'JOB', 'PERSONAL_DATA')
    :return: List of indexes with their key fields
    
get_table_relationshipsA
    Find tables related to the specified table by analyzing shared key fields.
    
    This helps discover:
    - Parent/child relationships
    - Common join patterns
    - Related configuration tables
    
    :param table_name: The PeopleSoft record name to analyze
    :return: List of potentially related tables grouped by relationship type
    
get_employeeA
    Get comprehensive employee profile including personal data, current job, 
    department, and employment status.
    
    This is the primary tool for getting employee information. It returns:
    - Personal details (name, birthdate, address, etc.)
    - Current job information (department, position, manager, etc.)
    - Employment status and dates
    
    :param employee_id: The employee ID (EMPLID)
    :return: Complete employee profile
    
search_employeesA
    Search for employees by various criteria.
    
    :param name: Search by employee name (partial match supported)
    :param department: Filter by department ID
    :param company: Filter by company code
    :param location: Filter by location code
    :param job_code: Filter by job code
    :param status: Filter by status: 'active' (default), 'inactive', 'terminated', or 'all'
    :param limit: Maximum results to return (default 50)
    :return: List of matching employees with basic info
    
get_job_historyA
    Get the complete job history for an employee showing all effective-dated changes.
    
    This shows every job change including:
    - Position changes
    - Department transfers
    - Promotions/demotions
    - Salary changes
    - Status changes (leave, return to work, termination, etc.)
    
    :param employee_id: The employee ID (EMPLID)
    :param limit: Maximum number of history records (default 50)
    :return: Chronological list of job changes
    
get_org_chartA
    Get organizational hierarchy showing reporting relationships.
    
    You can start from:
    - A specific department (all employees in that dept with their managers)
    - A specific manager (all direct and indirect reports)
    - A company (top-level org structure)
    
    :param department_id: Starting department ID
    :param manager_id: Starting manager's employee ID
    :param company: Company code to filter by
    :param max_depth: Maximum depth of hierarchy to retrieve (default 3)
    :return: Hierarchical organization structure
    
get_department_infoB
    Get detailed information about a department including its current employees.
    
    :param department_id: The department ID (DEPTID)
    :return: Department details and employee list
    
get_payroll_resultsB
    Get earnings and deductions results for an employee's payroll run.
    
    :param employee_id: The employee ID (EMPLID)
    :param calendar_run: Optional calendar run ID. If not provided, returns latest run.
    :param element_type: Optional filter: 'earnings', 'deductions', or 'all' (default)
    :return: Payroll results with earnings and deductions
    
get_payroll_statusA
    Get the processing status for all employees in a payroll calendar run.
    
    Status codes:
    - 'I': Identified
    - 'C': Calculated
    - 'F': Finalized
    - 'P': Paid
    
    :param calendar_run: The calendar run ID (CAL_RUN_ID)
    :return: Summary of payroll processing status
    
get_accumulator_balancesA
    Get accumulator balances (YTD, MTD, etc.) for an employee.
    
    Accumulators track cumulative values like:
    - Year-to-date earnings
    - Year-to-date taxes
    - Lifetime pension contributions
    - Month-to-date hours worked
    
    :param employee_id: The employee ID (EMPLID)
    :param accum_type: Optional filter by accumulator type (e.g., 'YTD', 'MTD', 'QTD')
    :param calendar_run: Optional calendar run ID. If not provided, returns latest.
    :return: Accumulator balances
    
get_payment_infoA
    Get payment preparation and payment details for an employee.
    
    :param employee_id: The employee ID (EMPLID)
    :param calendar_run: Optional calendar run ID. If not provided, returns latest.
    :return: Payment details including net pay and payment method
    
list_calendar_runsA
    List payroll calendar runs with their status.
    
    :param pay_entity: Optional filter by pay entity
    :param year: Optional filter by year
    :param status: Optional filter by status ('open', 'closed', 'finalized')
    :param limit: Maximum results (default 20)
    :return: List of calendar runs
    
get_performance_reviewsA
    Get performance appraisals for an employee.
    
    Status codes:
    - 'INP': In Progress
    - 'COMP': Completed
    - 'CANC': Cancelled
    - 'PEND': Pending
    
    :param employee_id: The employee ID (EMPLID)
    :param year: Optional filter by review year
    :param status: Optional filter by status code
    :return: List of performance reviews
    
get_review_detailsB
    Get detailed ratings, goals, and comments for a specific performance review.
    
    :param appraisal_id: The appraisal ID (EP_APPR_ID)
    :return: Complete review details including sections, items, and ratings
    
search_reviewsB
    Search performance reviews by various criteria.
    
    :param reviewer_id: Filter by reviewer's employee ID
    :param department: Filter by employee's department
    :param status: Filter by status ('INP', 'COMP', 'CANC', 'PEND')
    :param year: Filter by review year
    :param limit: Maximum results (default 50)
    :return: List of matching reviews
    
get_benefit_electionsC
    Get current benefit plan elections for an employee.
    
    Shows active benefit enrollments including:
    - Health plans
    - Life insurance
    - Retirement plans
    - Other voluntary benefits
    
    :param employee_id: The employee ID (EMPLID)
    :return: List of benefit elections with plan details
    
get_dependentsB
    Get dependents and beneficiaries for an employee.
    
    Returns:
    - Dependent personal information
    - Relationship to employee
    - Benefits coverage status
    - National ID (if available)
    
    :param employee_id: The employee ID (EMPLID)
    :return: List of dependents with their details
    
get_beneficiariesA
    Get beneficiary designations for an employee's benefit plans.
    
    :param employee_id: The employee ID (EMPLID)
    :param plan_type: Optional filter by plan type (e.g., '2A' for life insurance)
    :return: Beneficiary designations by plan
    
get_benefit_costsB
    Get benefit cost information including employee and employer contributions.
    
    :param employee_id: The employee ID (EMPLID)
    :param as_of_date: Optional date (YYYY-MM-DD format). Defaults to current date.
    :return: Benefit costs by plan
    
get_record_definitionA
Get complete definition of a PeopleSoft record including all fields,
keys, and properties. Essential for understanding data structures.

Args:
    record_name: The record name (e.g., 'JOB', 'PERSONAL_DATA')
                Will automatically add PS_ prefix if not present

Returns:
    Record metadata including type, fields, keys, and parent record
search_recordsB
Search for PeopleSoft records by name or description.

Args:
    search_term: Partial name or description to search for
    record_type: Optional filter by type (0=Table, 1=View, 2=Derived, 7=Temp)

Returns:
    List of matching records with their types and descriptions
get_component_structureA
Get the structure of a PeopleSoft component including its pages,
records, and navigation path.

Args:
    component_name: The component name (e.g., 'JOB_DATA', 'PERSONAL_DATA')

Returns:
    Component definition with pages, records, and menu navigation
get_component_pagesA
Get lightweight component-to-pages mapping. Uses only PSPNLGRPDEFN and
PSPNLGROUP with version-safe columns.

Args:
    component_name: The component name (e.g., 'JOB_DATA', 'ABSV_PLAN_TABLE')

Returns:
    Component name, search record, and list of pages with item number and label
get_page_fieldsB
Get all fields defined on a PeopleSoft page with their properties.

Args:
    page_name: The page name (e.g., 'JOB_DATA1', 'PERSONAL_DATA_1')

Returns:
    Page definition with all field controls and their record/field bindings
get_page_field_bindingsA
Get simplified page field bindings: RECNAME, FIELDNAME, FIELDNUM, OCCURSLEVEL only.
Lightweight alternative when full page field properties are not needed.

Args:
    page_name: The page name (e.g., 'JOB_DATA1', 'ABSV_PLAN_TABLE')

Returns:
    Page name and list of record/field bindings
get_peoplecodeA
Get PeopleCode programs attached to a record/field, including the actual source code.

Reads from PSPCMTXT which stores the PeopleCode source as CLOB. Use this to
understand component logic, trace field behavior, or analyze customizations.

Args:
    record_name: The record name (e.g., 'JOB', 'ABSV_REQUEST')
    field_name: Optional field name to filter (e.g., 'EMPLID', 'EFFDT')
    event: Optional event type filter. Common events:
           - RowInit: Fires when row is loaded
           - FieldChange: Fires when field value changes
           - FieldEdit: Validates field before accepting
           - SaveEdit: Validates before save
           - SavePreChange: Runs before database update
           - SavePostChange: Runs after database update
           - RowDelete: Fires when row is deleted
           - RowInsert: Fires when new row inserted
           - SearchInit: Fires on search page load
           - SearchSave: Fires when search is executed
    include_code: If True (default), returns actual PeopleCode source.
                 Set to False for just metadata/listing.
    max_code_length: Maximum characters of code to return per program (default 32000).
                    Use for large programs that may exceed response limits.

Returns:
    List of PeopleCode programs with their events and source code.
    Programs are ordered by field name and event for logical reading.

Example:
    # Get all PeopleCode for ABSV_REQUEST record
    get_peoplecode("ABSV_REQUEST")
    
    # Get just FieldChange events for BEGIN_DT field
    get_peoplecode("ABSV_REQUEST", "BEGIN_DT", "FieldChange")
    
    # List all events without code (for discovery)
    get_peoplecode("JOB", include_code=False)
get_permission_list_detailsC
Get details of a permission list including pages, components, and query access.

Args:
    permission_list: The permission list name

Returns:
    Permission list definition with component and page access
get_roles_for_permission_listB
Find all roles that include a specific permission list.

Args:
    permission_list: The permission list name

Returns:
    List of roles containing this permission list
get_process_definitionB
Get process scheduler definitions.

Args:
    process_name: Optional specific process name
    process_type: Optional filter by type (e.g., 'SQR Report', 'Application Engine')

Returns:
    Process definitions with their configuration
get_application_engine_stepsA
Get the steps and sections of an Application Engine program.

Args:
    ae_program: The AE program name

Returns:
    Program structure with sections, steps, and actions
get_integration_broker_servicesC
Get Integration Broker service operations and their configuration.

Args:
    service_name: Optional service name filter

Returns:
    Service definitions with their operations
get_message_definitionA
Get the structure of an Integration Broker message.

Args:
    message_name: The message name

Returns:
    Message definition with parts and records
get_query_definitionB
Get a PS Query definition including its records, fields, and criteria.

Args:
    query_name: The query name

Returns:
    Query definition with records, fields, and criteria
get_sql_definitionA
Get the SQL text for a PeopleSoft SQL object by SQLID.

PSSQLTEXTDEFN stores SQL used by views, App Engine programs, and PeopleCode
(SQL.SQLID). Long SQL is split across multiple rows by SEQNUM.

Args:
    sql_id: The SQL object ID (e.g. 'HR_ABSV_JOB_EFFDT', 'GP_PIN_SELECT')
    max_length: Maximum total characters to return (default 64000).
                Use to avoid huge responses for very long SQL.

Returns:
    SQL definition with sql_text (concatenated from all SEQNUM rows),
    sql_type, market, and row_count.

Example:
    get_sql_definition("HR_ABSV_JOB_EFFDT")
search_sql_definitionsA
Search for SQL object IDs whose text contains the given term.

Useful for discovering which SQL objects reference a table, field, or
other identifier. Does not return full SQL text—use get_sql_definition
for that.

Args:
    search_term: Text to search for in SQL (e.g. 'PS_JOB', 'ABSV_REQUEST')
    limit: Maximum number of SQLIDs to return (default 50)

Returns:
    List of matching SQLIDs with sql_type and market.

Example:
    search_sql_definitions("PS_ABSV_REQUEST")
search_peoplecodeA
Search for text within PeopleCode programs.

Args:
    search_term: Text to search for in PeopleCode
    search_in: Where to search - 'all', 'record', 'component', 'appengine'

Returns:
    List of PeopleCode locations containing the search term
get_field_usageA
Find all records that use a specific field - useful for impact analysis.

Args:
    field_name: The field name to search for

Returns:
    List of records containing this field and key information
get_translate_field_valuesC
Get all translate values for a field with their effective dates.

Args:
    field_name: The field name that uses translate values

Returns:
    All translate values with descriptions and effective dates
explain_peoplesoft_conceptB
Provide explanation of PeopleSoft/PeopleTools concepts based on actual
system metadata and configuration.

Args:
    concept: The concept to explain (e.g., 'effective_dating', 'component', 
            'record_types', 'security', 'integration_broker')

Returns:
    Relevant system metadata that illustrates the concept

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
peoplesoft://schema-guide
peoplesoft://concepts
peoplesoft://query-examples
peoplesoft://peopletools-guide

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/rgrz/peoplesoft-mcp'

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