UNPKG

rework-mcp-server

Version:

Rework MCP Server - Integrate rework tasks with AI through Model Context Protocol

76 lines (75 loc) 3.52 kB
import { Logger } from "./logger.js"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createTaskHandler, createTaskTool } from "./tools/projects/task/create_task.js"; import { getTasksHandler, getTasksTool } from "./tools/projects/task/get_tasks.js"; import { listAllUsersHandler } from "./tools/system/user/list_all.js"; import { getProjectsHandler, getProjectsTool } from "./tools/projects/project/all.js"; import { getDetailTaskHandler, getDetailTaskTool } from "./tools/projects/task/get_detail_task.js"; import { findUsersHandler, findUsersTool } from "./tools/system/user/find_users.js"; import { createJobHandler, createJobTool } from "./tools/workflows/job/create_job.js"; import { getJobsHandler, getJobsTool } from "./tools/workflows/job/get_jobs.js"; import { getDetailJobHandler, getDetailJobTool } from "./tools/workflows/job/get_detail_job.js"; import { getWorkflowsHandler, getWorkflowsTool } from "./tools/workflows/workflow/all.js"; import { commentJobHandler, commentJobTool } from "./tools/workflows/job/comment_a_job.js"; // Create a logger instance for server const logger = new Logger('Server'); const server = new McpServer({ name: 'rework-mcp-server', version: '1.1.3', }); server.resource('users', 'users', async (params) => { // Replace this with your actual data‐fetching logic: const users = await listAllUsersHandler(params); return users; }); /** * @desc Projects tools */ server.tool(createTaskTool.name, createTaskTool.description, createTaskTool.inputSchema, async (params) => { return (await createTaskHandler(params)); }); server.tool(getTasksTool.name, getTasksTool.description, getTasksTool.inputSchema, async (params) => { return (await getTasksHandler(params)); }); server.tool(getDetailTaskTool.name, getDetailTaskTool.description, getDetailTaskTool.inputSchema, async (params) => { return (await getDetailTaskHandler(params)); }); server.tool(getProjectsTool.name, getProjectsTool.description, getProjectsTool.inputSchema, async (params) => { return (await getProjectsHandler(params)); }); /** * @desc Jobs tools */ server.tool(createJobTool.name, createJobTool.description, createJobTool.inputSchema, async (params) => { return (await createJobHandler(params)); }); server.tool(getJobsTool.name, getJobsTool.description, getJobsTool.inputSchema, async (params) => { return (await getJobsHandler(params)); }); server.tool(getDetailJobTool.name, getDetailJobTool.description, getDetailJobTool.inputSchema, async (params) => { return (await getDetailJobHandler(params)); }); server.tool(commentJobTool.name, commentJobTool.description, commentJobTool.inputSchema, async (params) => { return (await commentJobHandler(params)); }); server.tool(getWorkflowsTool.name, getWorkflowsTool.description, getWorkflowsTool.inputSchema, async (params) => { return (await getWorkflowsHandler(params)); }); /** * @desc User tools */ server.tool(findUsersTool.name, findUsersTool.description, findUsersTool.inputSchema, async (params) => { return (await findUsersHandler(params)); }); async function main() { const transport = new StdioServerTransport(); await server.connect(transport); console.error("Rework MCP Server running on stdio"); } export function startStdioServer() { main().catch((error) => { console.error("Fatal error in main():", error); process.exit(1); }); }