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

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

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