peoplesoft
Queries and analyzes a local contracts/billing database (PROJECT, CA_DETAIL, CA_BILL_PLAN) via schema introspection, semantic tools, and direct SQL.
README
PeopleSoft MCP Server
A minimal Model Context Protocol (MCP) server, built as a worked example of how an MCP server is constructed. It exposes a local SQLite contracts/billing database (PROJECT, CA_DETAIL, CA_BILL_PLAN) through a small set of tools, ranging from generic schema introspection to purpose-built semantic queries.
Features
- Schema introspection tools — discover tables and columns without any prior knowledge of the schema
- Semantic tools — purpose-built queries for the contracts/billing domain (projects, contract lines, bill plans)
- Direct SQL tool — an escape hatch for arbitrary queries once the schema is known
- Direct database access via Python's stdlib
sqlite3, wrapped inasyncio.to_threadfor async compatibility
Quick Start
Prerequisites
- Python 3.11+
- uv package manager (recommended)
Installation
# Clone the repository
git clone <repo-url>
cd peoplesoft-mcp
# Install dependencies
uv sync
# Create finstg.db and load static data
uv run create_db.py
Configuration
- Copy the example environment file:
cp .env.example .env
- Edit
.envif you want to point at a different SQLite file (defaults tofinstg.dbin the repo root):
SQLITE_DB_PATH=finstg.db
- Copy
.cursor/mcp.json.exampleto.cursor/mcp.jsonand update the path to your installation.
Running the Server
uv run peoplesoft_server.py
Cursor IDE Integration
The MCP config (.cursor/mcp.json, copied from .cursor/mcp.json.example) should look like:
{
"mcpServers": {
"peoplesoft": {
"command": "uv",
"args": [
"--directory",
"/path/to/mcp_ps/",
"run",
"peoplesoft_server.py"
]
}
}
}
Available Tools
Schema Introspection (2 tools)
| Tool | Description |
|---|---|
list_tables |
List tables in the local database, optionally filtered by name |
describe_table |
Get table structure (columns, types, primary keys) |
Contracts & Billing Module (4 tools)
| Tool | Description |
|---|---|
list_projects |
List projects, filterable by business unit/status/type |
get_project_contracts |
Get a project plus its contract lines and bill plans |
list_contracts |
List contract detail lines with their bill plan info |
get_bill_plan |
Get bill plan details for a specific contract line |
Billing Analysis (2 tools)
| Tool | Description |
|---|---|
check_project_billing_setup |
Check each project's contract line(s), bill plan, bill plan type, and effective statuses, to spot billing setup problems |
cost_reimbursable_billable_transactions |
Summarize undistributed cost-reimbursable billable transactions (sums, counts, date range) per project |
Direct Query (1 tool)
| Tool | Description |
|---|---|
query_peoplesoft_db |
Execute custom SQL queries against the local database |
Project Structure
peoplesoft-mcp/
├── peoplesoft_server.py # Main MCP server entry point
├── db.py # SQLite connection management
├── create_db.py # Creates finstg.db and loads data/*.csv
├── db_structure.txt # Schema definition source for create_db.py
├── data/ # Static CSV data loaded into finstg.db
│ ├── project.csv
│ ├── ca_detail.csv
│ ├── ca_bill_plan.csv
│ └── proj_resource.csv
├── finstg.db # Local SQLite database (generated)
├── tools/ # Semantic tool modules
│ ├── introspection.py # Schema discovery tools
│ ├── contracts.py # Contracts/billing tools
│ └── billing.py # Billing setup & cost-reimbursable analysis tools
├── tests/ # Test suite
│ └── test_contracts.py
└── pyproject.toml # Project configuration
Running Tests
uv run pytest tests/ -v -s
Example Queries
- "List all active projects for business unit UCD"
- "What contract lines and bill plans belong to project 25B1111?"
- "What's the bill plan status for contract FAKE4 line 2?"
- "What tables and columns are in finstg.db?"
Development
Adding New Tools
- Create a new module in
tools/or add to an existing module - Define async functions that use
db.execute_query() - Add a
register_tools(mcp)function - Import and register in
peoplesoft_server.py
License
MIT
Changelog
v0.3.0 (2026-07-15)
- Removed the legacy PeopleSoft HCM Oracle tool modules (
hr.py,payroll.py,benefits.py,performance.py,peopletools.py), their docs, their gated/skipped tests, and the Cursor agent/skill configs built around them - Removed the 4 MCP resources that served the now-deleted Oracle-schema documentation
- Repurposed the repo as a standalone worked example of MCP server construction (schema introspection + semantic tools + direct-SQL escape hatch) over a local SQLite database
v0.2.x (2026-03-02 – earlier)
- Replaced Oracle (
oracledb) backend with a local SQLite database (finstg.db) - Rewrote schema introspection to use SQLite's own metadata (
sqlite_master,PRAGMA table_info) - Added
tools/contracts.pywith semantic tools for the localPROJECT/CA_DETAIL/CA_BILL_PLANschema
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。