Skip to main content
Glama
README.md5.34 kB
# Timesheet Assistant MCP An MCP (Model Context Protocol) server for generating timesheets and submitting them to PSI Project Server (SharePoint-based timesheet systems). ## Features - **Timesheet Generation**: Generate daily, weekly, monthly, or custom date range timesheets - **PSI Integration**: Automated submission to PSI Project Server - **Activity Data Integration**: Works with [Activity Collector MCP](https://github.com/srdmathur/activity-collector-mcp) for data fetching - **Smart Summarization**: Automatically summarizes work descriptions to 255 characters - **Browser Automation**: Uses Puppeteer for SharePoint authentication and form filling - **Task Management**: Hierarchical task tree navigation for PSI ## Prerequisites **⚠️ Important**: This MCP requires [Activity Collector MCP](https://github.com/srdmathur/activity-collector-mcp) to fetch activity data from GitLab, GitHub, and Calendar services. ## Installation ### Via npx (Recommended) ```bash npx timesheet-assistant-mcp ``` ### Via npm ```bash npm install -g timesheet-assistant-mcp ``` ### From Source ```bash git clone https://github.com/sharadmathuratthepsi/timesheet-mcp.git cd timesheet-mcp npm install npm run build ``` ## Configuration ### For Claude Desktop Add to `~/Library/Application Support/Claude/claude_desktop_config.json`: ```json { "mcpServers": { "activity-collector": { "command": "npx", "args": ["activity-collector-mcp"] }, "timesheet-assistant": { "command": "npx", "args": ["timesheet-assistant-mcp"] } } } ``` ### For Claude Code (VS Code) Add to `~/Library/Application Support/Code/User/mcp.json`: ```json { "servers": { "activity-collector": { "type": "stdio", "command": "npx", "args": ["activity-collector-mcp"] }, "timesheet-assistant": { "type": "stdio", "command": "npx", "args": ["timesheet-assistant-mcp"] } } } ``` ### Configuration File Create `~/.timesheet-assistant-mcp-config.json`: ```json { "psi": { "url": "https://projectserver.thepsi.com/PWA/_layouts/15/pwa/Timesheet/MyTSSummary.aspx" } } ``` ## Usage ### First Time Setup 1. **Configure PSI credentials**: ``` Configure PSI with username: YOUR_USERNAME and password: YOUR_PASSWORD ``` ### Generating Timesheets - **Daily**: `Generate timesheet for today` - **Weekly**: `Generate timesheet for this week` - **Monthly**: `Generate timesheet for November 2024` - **Date Range**: `Generate timesheet from 2024-12-01 to 2024-12-07` ### Submitting to PSI 1. **Generate timesheet** (using Activity Collector MCP) 2. **Get PSI tasks** (call once, reuse for all days): ``` Get PSI tasks for 2024-12-05 ``` 3. **Select task** from the hierarchical tree 4. **Submit timesheet**: ``` Submit to PSI for 2024-12-05 with task index 3 and description "..." ``` ## Available Tools (8) ### Timesheet Generation (4 tools) - `generate_timesheet` - Generate monthly timesheet - `generate_weekly_timesheet` - Generate weekly timesheet - `generate_daily_timesheet` - Generate single day timesheet - `generate_date_range_timesheet` - Generate custom date range timesheet **Note**: These tools orchestrate the Activity Collector MCP to fetch data. ### PSI Integration (4 tools) - `configure_psi` - Configure PSI credentials - `get_psi_tasks` - Get available tasks from PSI (call once per timesheet period) - `submit_to_psi` - Submit timesheet entry to PSI - `inspect_psi_page` - Debug PSI page structure ## How It Works ### Timesheet Generation Flow 1. LLM calls timesheet generation tool (e.g., `generate_weekly_timesheet`) 2. Tool returns instructions for fetching data from Activity Collector MCP 3. LLM uses Activity Collector tools (`fetch_gitlab_activity`, `fetch_github_activity`, `fetch_google_calendar_events`) 4. LLM builds and formats the timesheet ### PSI Submission Flow 1. Call `get_psi_tasks` **once** to get available tasks 2. User selects a task by index 3. Call `submit_to_psi` for each day (reusing same task index) 4. Browser automation fills SharePoint form and saves ## PSI Integration Details - Uses Puppeteer for browser automation - Supports HTTP Basic Auth for SharePoint - Handles lazy-loaded accordion trees for task selection - Smart grid cell detection for SharePoint JSGrid - Automatic form filling with MouseEvent simulation ## Security - PSI credentials stored in `~/.timesheet-assistant-mcp-tokens.json` with restricted permissions (600) - Browser runs in non-headless mode by default (can see what's happening) - All data remains local ## Troubleshooting ### Activity Collector Not Available ``` Error: fetch_gitlab_activity tool not found ``` **Solution**: Install and configure [Activity Collector MCP](https://github.com/srdmathur/activity-collector-mcp) ### PSI Submission Fails ``` Error: Could not find hours cell ``` **Solution**: Run `inspect_psi_page` to check PSI page structure ### Browser Crashes **Solution**: Ensure Puppeteer dependencies are installed: ```bash npm install puppeteer ``` ## License MIT ## Contributing Issues and pull requests welcome! ## Author Sharad Mathur (sharad.mathur@thepsi.com) ## Related Projects - [Activity Collector MCP](https://github.com/srdmathur/activity-collector-mcp) - Required companion MCP for data fetching

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/sharadmathuratthepsi/timesheet-mcp'

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