@aot-tech/clockify-mcp-server
Version:
MCP Server for Clockify time tracking integration with AI tools
42 lines (41 loc) • 2.25 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
const dotenv_1 = __importDefault(require("dotenv"));
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
const api_1 = require("./config/api");
const projects_1 = require("./tools/projects");
const users_1 = require("./tools/users");
const reports_1 = require("./tools/reports");
dotenv_1.default.config();
const CLOCKIFY_API_TOKEN = process.env.CLOCKIFY_API_TOKEN;
if (!CLOCKIFY_API_TOKEN) {
console.error("❌ CLOCKIFY_API_TOKEN environment variable is required");
console.error("Please set your Clockify API token in the environment or .env file");
process.exit(1);
}
(0, api_1.updateApiToken)(CLOCKIFY_API_TOKEN);
(0, api_1.updateReportsApiToken)(CLOCKIFY_API_TOKEN);
const server = new mcp_js_1.McpServer(api_1.SERVER_CONFIG);
server.tool(projects_1.listProjectsTool.name, projects_1.listProjectsTool.description, projects_1.listProjectsTool.parameters, projects_1.listProjectsTool.handler);
server.tool(users_1.getCurrentUserTool.name, users_1.getCurrentUserTool.description, users_1.getCurrentUserTool.parameters, users_1.getCurrentUserTool.handler);
server.tool(users_1.getAllUsersTool.name, users_1.getAllUsersTool.description, users_1.getAllUsersTool.parameters, users_1.getAllUsersTool.handler);
server.tool(reports_1.getSummaryReportTool.name, reports_1.getSummaryReportTool.description, reports_1.getSummaryReportTool.parameters, reports_1.getSummaryReportTool.handler);
server.tool(users_1.offboardEmployeeTool.name, users_1.offboardEmployeeTool.description, users_1.offboardEmployeeTool.parameters, users_1.offboardEmployeeTool.handler);
async function main() {
try {
const transport = new stdio_js_1.StdioServerTransport();
await server.connect(transport);
}
catch (error) {
console.error("❌ Failed to start Enhanced Clockify MCP server:", error);
process.exit(1);
}
}
main().catch((error) => {
console.error("Server error:", error);
process.exit(1);
});