personal-timesheet-mcp
MCP server providing CRUD operations for timesheet management via REST API endpoints, enabling creation, reading, updating, and deletion of timesheet entries along with project management.
README
Timesheet MCP Server
A Model Context Protocol (MCP) server that provides CRUD operations for timesheet management via REST API endpoints.
š¤ For End Users: See README-USER.md for simple installation instructions
šØāš» For Developers: Continue reading below
š¦ Publishing: See Publishing Guide to distribute your connector
Features
- Create timesheet entries
- Read timesheet entries (list and get single)
- Update existing entries
- Delete timesheet entries
- List Projects for reference
- Configurable API base URL
- Support for both Go and Node.js backend APIs
Prerequisites
- Node.js 18 or higher
- A running instance of the Timesheet Logger backend API
- Claude Desktop (for integration)
Installation
- Navigate to the mcp directory:
cd mcp
- Install dependencies:
npm install
- Configure environment variables:
cp .env.example .env
# Edit .env and set TIMESHEET_API_BASE_URL
- Build the project:
npm run build
Configuration
Environment Variables
Create a .env file or set environment variables:
TIMESHEET_API_BASE_URL=http://localhost:3000/api
Claude Desktop Integration
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
For end users (after publishing to npm):
{
"mcpServers": {
"timesheet": {
"command": "timesheet-mcp",
"env": {
"TIMESHEET_API_BASE_URL": "http://localhost:3000/api"
}
}
}
}
For local development:
{
"mcpServers": {
"timesheet": {
"command": "node",
"args": ["/absolute/path/to/timesheet_logger/mcp/build/index.js"],
"env": {
"TIMESHEET_API_BASE_URL": "http://localhost:3000/api"
}
}
}
}
Usage
Development Mode
Run in development mode with auto-reload:
npm run dev
Production Mode
Build and run:
npm run build
npm start
Available Tools
1. create_timesheet_entry
Create a new timesheet entry.
Parameters:
project_id(string, required): Project IDdate(string, required): Entry date (YYYY-MM-DD)hours(number, required): Hours workeddescription(string, optional): Entry descriptionbillable(boolean, optional): Whether entry is billable (default: true)
2. list_timesheet_entries
List timesheet entries with optional filters.
Parameters:
start_date(string, optional): Filter by start date (YYYY-MM-DD)end_date(string, optional): Filter by end date (YYYY-MM-DD)project_id(string, optional): Filter by project IDlimit(number, optional): Maximum results (default: 50)offset(number, optional): Offset for pagination (default: 0)
3. get_timesheet_entry
Get a single timesheet entry by ID.
Parameters:
entry_id(string, required): Entry ID
4. update_timesheet_entry
Update an existing timesheet entry.
Parameters:
entry_id(string, required): Entry IDproject_id(string, optional): New project IDdate(string, optional): New date (YYYY-MM-DD)hours(number, optional): New hoursdescription(string, optional): New descriptionbillable(boolean, optional): New billable status
5. delete_timesheet_entry
Delete a timesheet entry.
Parameters:
entry_id(string, required): Entry ID
6. list_projects
List available projects.
Parameters: None
7. create_project
Create a new project. Requires admin or manager role.
Parameters:
name(string, required): Project namedescription(string, optional): Project descriptionis_active(boolean, optional): Whether project is active (default: true)
8. login
Manually trigger browser-based login. Opens a browser window for authentication.
Parameters: None
Note: Useful after logout or for manual authentication. If already logged in, will show current user.
9. logout
Logout from the current session and clear stored authentication tokens.
Parameters: None
Note: After logout, you will need to re-authenticate (via browser login) on the next request.
Testing
Test with Local Backend
- Start your backend API:
# From backend/api-nodejs or backend/api-go
docker-compose up
- Run the MCP server:
npm run dev
- Test through Claude Desktop or use the MCP Inspector
Troubleshooting
Connection Refused
- Ensure the backend API is running
- Verify the
TIMESHEET_API_BASE_URLis correct - Check that the port matches your backend configuration
Authentication Errors
- Verify API key if required by your backend
- Check that the API endpoint supports the operations
Tool Not Found
- Rebuild the project:
npm run build - Restart Claude Desktop
- Verify the path in Claude Desktop config is absolute
Development
Project Structure
mcp/
āāā src/
ā āāā index.ts # Main MCP server entry point
ā āāā config.ts # Configuration management
ā āāā types.ts # TypeScript types
ā āāā api/
ā ā āāā client.ts # HTTP client wrapper
ā ā āāā timesheet.ts # Timesheet API operations
ā āāā tools/
ā āāā create-entry.ts # Create tool
ā āāā list-entries.ts # List tool
ā āāā get-entry.ts # Get tool
ā āāā update-entry.ts # Update tool
ā āāā delete-entry.ts # Delete tool
āāā build/ # Compiled output
āāā package.json
āāā tsconfig.json
āāā README.md
Adding New Tools
- Create a new file in
src/tools/ - Define the tool schema using Zod
- Implement the handler function
- Register the tool in
src/index.ts
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.