MCP Beebole

This Model Context Protocol (MCP) server allows AI assistants to interact with the Beebole REST API for time tracking management.
Purpose
Enable an AI assistant to list your active projects, view your time entries, and log work hours or absences.
Technical Stack
- Node.js (TypeScript)
@modelcontextprotocol/sdkaxiosfor HTTP requests.zodfor schema validation.
Installation
- Clone this repository.
- Install dependencies:
npm install
- Build the project:
npm run build
Configuration (Environment Variables)
Authentication relies on a personal Beebole API token.
BEEBOLE_API_TOKEN: Your API token that you can retrieve from Beebole using the API Token module on your home screen.
---
Usage with Claude Desktop
Add the following configuration to your claude_desktop_config.json file (typically located at %APPDATA%\Claude\claude_desktop_config.json on Windows or ~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{
"mcpServers": {
"beebole": {
"command": "node",
"args": ["/path/to/mcp-beebole/build/index.js"],
"env": {
"BEEBOLE_API_TOKEN": "YOUR_API_TOKEN"
}
}
}
}
Usage with Gemini CLI
There are two ways to use Beebole with Gemini CLI:
Option 1: Gemini CLI Extension (Recommended)
This is the easiest way. It includes the MCP server and a specialized @beebole subagent.
- Download: Get
beebole-extension.zipfrom the latest GitHub release. - Extract: Unzip the archive to a directory of your choice.
- Link: Run the following command inside the extracted directory:
gemini extensions link .
- Configure: Run
gemini settingsto enter yourBEEBOLE_API_TOKEN.
Option 2: Standalone MCP Server
If you prefer to add the MCP server manually to your workspace:
gemini mcp add beebole node /path/to/mcp-beebole/build/index.js -e BEEBOLE_API_TOKEN=$BEEBOLE_API_TOKEN
---
Usage with Claude Desktop
Here are some ways you can interact with Beebole through your AI assistant:
1. Discovering your projects
Prompt: "What are my active projects in Beebole?" Assistant Action: Calls list_my_projects. Result: Displays a list of projects, subprojects, and tasks with their respective IDs.
2. Logging time
Prompt: "Log 7.5 hours on the 'Development' project for today with the comment 'Working on the MCP server'." Assistant Action:
- Calls
list_my_projectsto find the ID for "Development". - Calls
create_time_entrywith today's date, the resolved project ID,7.5hours, and the provided comment.
Result: Confirmation that the entry was created or updated in Beebole.
3. Checking your timesheet
Prompt: "Show me my time entries for this week." Assistant Action: Calculates the dates for the current week and calls get_time_entries. Result: A summary table of all hours logged for each day of the week.
---
Exposed Tools
list_my_projects
- Description: Returns a list of the user's active projects and tasks.
create_time_entry
- Parameters:
date: Date (formatYYYY-MM-DD).project_id: ID of the project or task.hours: Number of hours (numeric).comment: (Optional) Comment.- Description: Creates a new time entry.
get_time_entries
- Parameters:
start_date: Start date (YYYY-MM-DD).end_date: End date (YYYY-MM-DD).- Description: Lists existing time entries for the given period.
Testing
The project uses vitest for unit tests: ``bash npm test ``
Troubleshooting
401 Unauthorized
Ensure your BEEBOLE_API_TOKEN is correct. You can find it in Beebole > Settings > Account.
Project/Task not found
If the assistant cannot find a project, try calling list_my_projects first. Only active projects and tasks are returned by the API.
Connection issues in Claude Desktop
- Check the logs in Claude Desktop (often located in
~/Library/Logs/Claude/mcp.logon macOS). - Ensure
nodeis in your system PATH and accessible by the Claude app. - Make sure you ran
npm run buildto generate thebuild/folder.
License
This project is licensed under the MIT License. See the LICENSE file for details.












