A Model Context Protocol (MCP) library for BambooHR, built with Node.js and TypeScript. This library provides a clean, type-safe interface to interact with the BambooHR API from your Node.js or TypeScript applications.
# Clone the repository git clone https://github.com/encoreshao/bamboohr-mcp.git # Navigate to the project directory cd bamboohr-mcp # Install dependencies npm install
import { BambooHRApi, fetchWhosOut, fetchProjects, submitWorkHours, getMe, fetchEmployeeDirectory, fetchTimeEntries, } from "bamboohr-mcp"; const token = process.env.BAMBOOHR_TOKEN!; const companyDomain = process.env.BAMBOOHR_COMPANY_DOMAIN!; const employeeID = process.env.BAMBOOHR_EMPLOYEE_ID!; // List all employees with name, email, and job title const directory = await fetchEmployeeDirectory(token, companyDomain); directory.employees.forEach((emp) => { console.log(`${emp.displayName} — ${emp.workEmail} — ${emp.jobTitle}`); }); // Fetch "who's out today" const whosOut = await fetchWhosOut(token, companyDomain); whosOut.forEach((out) => { console.log(`${out.employeeName}: ${out.startDate} to ${out.endDate}`); }); // Submit work hours (find project/task IDs first) const projects = await fetchProjects(token, companyDomain, employeeID); const bambooHR = projects.find((p) => p.name.includes("BambooHR")); const devTask = bambooHR?.tasks.find((t) => t.name.includes("Development")); if (bambooHR && devTask) { await submitWorkHours( token, companyDomain, employeeID, bambooHR.id, devTask.id, "2024-06-01", 1, "Development work on BambooHR" ); }
All methods return Promises and use the types defined in src/utils/models.d.ts
.
BambooHRApi
class: Encapsulates all API methods.fetchWhosOut
, fetchProjects
, submitWorkHours
, getMe
, fetchEmployeeDirectory
, fetchTimeEntries
.You can pass your BambooHR API token and company domain directly to the methods, or use environment variables:
Required:
BAMBOOHR_TOKEN
— Your BambooHR API tokenBAMBOOHR_COMPANY_DOMAIN
— Your BambooHR company domain (the part before .bamboohr.com)BAMBOOHR_EMPLOYEE_ID
— Your BambooHR employee IDTo use this library, you'll need to create a BambooHR API token:
Your company domain is the subdomain used in your BambooHR URL:
https://yourcompany.bamboohr.com
, then your company domain is yourcompany
BAMBOOHR_COMPANY_DOMAIN
environment variable or passed directly to the API methodsYou can find your employee ID in several ways:
https://yourcompany.bamboohr.com/employees/employee.php?id=123
)Example .env file:
BAMBOOHR_TOKEN=your_api_token_here BAMBOOHR_COMPANY_DOMAIN=yourcompany BAMBOOHR_EMPLOYEE_ID=123
Add new methods in src/apis/bamboohr.ts
and export them from src/index.ts
.
This project is licensed under the MIT License. See the LICENSE file for details.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4