PeopleSoft MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@PeopleSoft MCP Server Get employee details for EMPLID 12345"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
PeopleSoft MCP Server
A Model Context Protocol (MCP) server that enables AI assistants to query and understand PeopleSoft HCM databases. This server provides semantic tools for HR, Payroll, Benefits, Performance, and PeopleTools metadata - allowing natural language questions to be answered with accurate SQL queries.
Features
41 semantic tools covering all major PeopleSoft HCM modules
4 documentation resources for PeopleSoft concepts and query patterns
Direct database access via Oracle thin client (no JDBC required)
PeopleTools introspection for understanding system architecture
Effective dating support built into all queries
Related MCP server: DB MCP (HR CSV to SQLite)
Quick Start
Prerequisites
Python 3.11+
Oracle Database connectivity to a PeopleSoft HCM 9.2 instance
uv package manager (recommended)
Installation
# Clone the repository
git clone <repo-url>
cd peoplesoft-mcp
# Install dependencies
uv syncConfiguration
Copy the example environment file and add your credentials:
cp .env.example .envEdit
.envwith your database credentials:
ORACLE_DSN=hostname:port/service_name
ORACLE_USER=your_username
ORACLE_PASSWORD=your_passwordEdit
.cursor/mcp.jsonand update the path to your installation.
Running the Server
uv run peoplesoft_server.pyCursor IDE Integration
The MCP config (.cursor/mcp.json) should look like:
{
"mcpServers": {
"peoplesoft": {
"command": "uv",
"args": [
"--directory",
"/path/to/mcp_ps/",
"run",
"peoplesoft_server.py"
]
}
}
}Credentials are loaded from .env automatically - no need to include them in the MCP config.
Available Tools
Schema Introspection (5 tools)
Tool | Description |
| Get table structure, fields, and indexes |
| Search for tables by name pattern |
| Decode field codes (XLAT values) |
| View index definitions for performance |
| Find foreign key relationships |
HR Module (5 tools)
Tool | Description |
| Get employee details by EMPLID |
| Search employees by name, department, etc. |
| View job history for an employee |
| Get organizational hierarchy |
| Get department details and headcount |
Payroll Module (5 tools)
Tool | Description |
| View payroll calculation results |
| Check payroll processing status |
| Get YTD/MTD balances |
| Get payment details |
| List payroll calendar runs |
Benefits Module (4 tools)
Tool | Description |
| View benefit plan elections |
| Get dependent information |
| Get beneficiary designations |
| Calculate benefit costs |
Performance Module (3 tools)
Tool | Description |
| List performance documents |
| Get detailed review information |
| Search reviews by criteria |
PeopleTools Module (18 tools)
Tool | Description |
| Full record structure with fields and keys |
| Find records by name or description |
| Component pages and navigation |
| Fields on a page with record bindings |
| Find PeopleCode on records/fields |
| Security access for permission lists |
| Roles containing a permission list |
| Process Scheduler job definitions |
| AE program structure |
| IB service operations |
| IB message structure |
| PS Query records and fields |
| Get SQL text by SQLID (views, App Engine, PeopleCode) |
| Search SQL objects by text |
| Search text within PeopleCode |
| Impact analysis - where a field is used |
| All XLAT values for a field |
| Explains effective dating, SetID, etc. |
Direct Query (1 tool)
Tool | Description |
| Execute custom SQL queries |
Available Resources
Resource URI | Description |
| Major tables by module |
| Effective dating, EMPLID, SetID, XLAT |
| SQL query patterns |
| PeopleTools architecture guide |
Project Structure
peoplesoft-mcp/
├── peoplesoft_server.py # Main MCP server entry point
├── db.py # Database connection management
├── tools/ # Semantic tool modules
│ ├── introspection.py # Schema discovery tools
│ ├── hr.py # HR module tools
│ ├── payroll.py # Payroll module tools
│ ├── benefits.py # Benefits module tools
│ ├── performance.py # ePerformance tools
│ └── peopletools.py # PeopleTools metadata tools
├── tests/ # Test suites
│ ├── test_business_questions.py # HR business scenarios
│ └── test_peopletools_questions.py # Technical consultant scenarios
├── docs/ # Documentation resources
│ ├── peoplesoft_concepts.md
│ ├── peoplesoft_schema_guide.md
│ ├── peopletools_guide.md
│ ├── sql_query_examples.md
│ ├── peopletools-tables-by-tool.md # Tables required per tool
│ └── migration-analysis.md # Migration planning notes
└── pyproject.toml # Project configurationRunning Tests
# Set environment variables
export ORACLE_DSN="hostname:port/service_name"
export ORACLE_USER="username"
export ORACLE_PASSWORD="password"
# Run all tests
uv run pytest tests/ -v -s
# Run specific test suite
uv run pytest tests/test_business_questions.py -v -s
uv run pytest tests/test_peopletools_questions.py -v -sExample Queries
The MCP enables natural language questions like:
Business Questions:
"How many active employees are in each company?"
"What is the average salary by department?"
"Who reports to manager X?"
"Show me employees without a supervisor assigned"
Technical Questions:
"What fields does PS_JOB have?"
"Where is the DEPTID field used?"
"What PeopleCode runs on the JOB record?"
"What SQL does HR_ABSV_JOB_EFFDT use?"
"Search for SQL objects referencing PS_ABSV_REQUEST"
"Explain effective dating in PeopleSoft"
Development
Adding New Tools
Create a new module in
tools/or add to existing moduleDefine async functions that use
db.execute_query()Add a
register_tools(mcp)functionImport and register in
peoplesoft_server.py
Key Concepts
Effective Dating: Most PeopleSoft tables use EFFDT/EFFSEQ for history
SetID: Controls data sharing across business units
Translate Values: Short codes decoded via PSXLATITEM
EMPLID/EMPL_RCD: Employee ID + employment record number
License
MIT
Changelog
v0.2.1 (2026-03-02)
Added
get_sql_definition- fetch SQL text by SQLID from PSSQLTEXTDEFNAdded
search_sql_definitions- search SQL objects by textPeopleTools compatibility: adjusted PSPNLGROUP, PSPNLFIELD, PSAEAPPLDEFN, PSAESTEPDEFN queries for varying column names across PeopleTools versions
Added
docs/peopletools-tables-by-tool.md- tables required per tool
v0.2.0 (2026-02-28)
Added modular tool architecture with 39 semantic tools
Added PeopleTools introspection module (16 tools)
Added comprehensive test suites (42 tests)
Replaced connection pooling with direct connections for reliability
Added 4 documentation resources
Improved effective dating patterns in all queries
Available Tools
43 toolsdescribe_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
Inputs: table_name (required).
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
Inputs: concept (required).
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
Inputs: employee_id (required), accum_type, calendar_run.
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
Inputs: ae_program (required).
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
Inputs: employee_id (required), plan_type.
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
Inputs: employee_id (required), as_of_date.
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
Inputs: employee_id (required).
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
Inputs: component_name (required).
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
Inputs: component_name (required).
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
Inputs: department_id (required).
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
Inputs: employee_id (required).
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
Inputs: employee_id (required).
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
Inputs: field_name (required).
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
Inputs: service_name.
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
Inputs: employee_id (required), limit.
get_message_definitionA
Get the structure of an Integration Broker message.
Args:
message_name: The message name
Returns:
Message definition with parts and records
Inputs: message_name (required).
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
Inputs: company, max_depth, manager_id, department_id.
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
Inputs: page_name (required).
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
Inputs: page_name (required).
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
Inputs: employee_id (required), calendar_run.
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
Inputs: employee_id (required), calendar_run, element_type.
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
Inputs: calendar_run (required).
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)
Inputs: record_name (required), event, field_name, include_code, +1 more.
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
Inputs: employee_id (required), year, status.
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
Inputs: permission_list (required).
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
Inputs: process_name, process_type.
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
Inputs: query_name (required).
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
Inputs: record_name (required).
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
Inputs: appraisal_id (required).
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
Inputs: permission_list (required).
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")
Inputs: sql_id (required), max_length.
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
Inputs: table_name (required).
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
Inputs: table_name (required).
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
Inputs: field_name (required).
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
Inputs: field_name (required).
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
Inputs: year, limit, status, pay_entity.
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
Inputs: limit, module, pattern.
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
Inputs: sql_query (required), parameters.
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
Inputs: name, limit, status, company, +3 more.
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
Inputs: search_term (required), search_in.
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
Inputs: search_term (required), record_type.
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
Inputs: year, limit, status, department, +1 more.
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")
Inputs: search_term (required), limit.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 43 tools
Most tools have clearly distinct purposes, with detailed descriptions that guide usage. Minor overlap exists between get_translate_values and get_translate_field_values, and between get_beneficiaries and get_dependents, but these are still distinguishable.
Tools generally follow a verb_noun pattern, but mix prefixes like 'get_', 'search_', 'list_', 'explain_', and 'query_'. This is mostly consistent but lacks a unified convention, e.g., 'list_tables' vs 'search_records'.
43 tools is on the high side for a single server, covering a broad domain. While each tool serves a specific purpose, the count may feel overwhelming. Could potentially be consolidated, especially for related metadata queries.
The tool set covers a wide range of PeopleSoft functionality: employee data, payroll, benefits, performance, metadata, and integration. Minor gaps exist, such as no dedicated create/update tools for HR data (except via raw SQL), but overall it's comprehensive for an exploration and querying server.
Maintenance
Related MCP Connectors
Cloud-hosted MCP server for secure AI access to enterprise data sources via CData Connect AI.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
The Ramp MCP server enables users to securely connect Ramp with AI assistants like ChatGPT and Claude to query financial data and take actions using natural language. It transforms Ramp's developer API into a SQL interface that LLMs can query, allowing admins to analyze spend trends, identify cost savings, and run complex SQL analyses on comprehensive datasets (transactions, purchase orders, vendors, users), while all users can manage cards, view transactions, request reimbursements, and get expense policy answers.
The BigQuery remote MCP server is a fully managed service that uses the Model Context Protocol to connect AI applications and LLMs to BigQuery data sources. It provides secure, standardized tools for AI agents to list datasets and tables, retrieve schemas, generate and execute SQL queries through natural language, and analyze data—enabling direct access to enterprise analytics data without requiring manual SQL coding.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP (Model Context Protocol) server that exposes natural language to SQL functionality, allowing any MCP-compatible client to convert plain English questions into SQL queries for database interaction using AI.3MIT
- AlicenseNot gradedqualityDmaintenanceAn open-source MCP server that imports HR CSV data into an in-memory SQLite database for structured querying and metadata retrieval. It enables users to perform read-only SQL queries and structured searches on employee data through natural language.MIT
- -licenseNot gradedqualityDmaintenanceAn MCP server that bridges AI assistants with SQL databases, enabling natural language querying across multiple database types with built-in optimization and security.3-
- FlicenseNot gradedqualityDmaintenanceAn MCP server for interacting with an HR database, enabling querying employee data and HR operations via natural language.-