Skip to main content
Glama

Eureka Labo Task Management MCP Server

by mazemaze
pr-tools.ts3.63 kB
/** * Pull Request Tools * GitHub PR integration for branch sessions */ import { getBranchSessionManager } from '../managers/branch-session-manager.js'; import { getCurrentBranch } from '../tracking/git-tracker.js'; import { getConfig } from '../config.js'; /** * List all tasks in the current branch session */ export async function listBranchTasks(): Promise<{ success: boolean; message?: string; branchName?: string; tasks?: any[]; taskCount?: number; }> { try { const config = getConfig(); const branchSessionManager = getBranchSessionManager(); const branchName = await getCurrentBranch(config.workspacePath); if (branchName === 'main' || branchName === 'master') { return { success: false, message: 'Cannot list branch tasks for main/master branch. Switch to a feature branch first.', }; } const tasks = await branchSessionManager.getBranchTasks(); if (!tasks || tasks.length === 0) { return { success: true, message: `No tasks found in branch "${branchName}". Use start_work_on_task to track tasks in this branch.`, branchName, tasks: [], taskCount: 0, }; } return { success: true, branchName, tasks, taskCount: tasks.length, }; } catch (error: any) { return { success: false, message: `Failed to list branch tasks: ${error.message}`, }; } } /** * Create a pull request for the current branch */ export async function createPullRequest(args: { title?: string; baseBranch?: string; }): Promise<{ success: boolean; message?: string; prUrl?: string; prNumber?: number; updatedTasks?: number; }> { try { const config = getConfig(); const branchSessionManager = getBranchSessionManager(); const branchName = await getCurrentBranch(config.workspacePath); if (branchName === 'main' || branchName === 'master') { return { success: false, message: 'Cannot create PR from main/master branch. Switch to a feature branch first.', }; } // Check if branch has any tasks const session = await branchSessionManager.getBranchSession(); if (!session || !session.taskIds || session.taskIds.length === 0) { return { success: false, message: `Branch "${branchName}" has no tracked tasks. Use start_work_on_task first.`, }; } // Check if PR already exists if (session.prUrl) { return { success: false, message: `A pull request already exists for this branch: ${session.prUrl}`, }; } // Auto-generate title if not provided let prTitle: string; if (args.title) { prTitle = args.title; } else { const tasks = await branchSessionManager.getBranchTasks(); if (tasks.length === 1) { prTitle = tasks[0].title; } else { prTitle = `${tasks.length} tasks completed in ${branchName}`; } } // Create PR const result = await branchSessionManager.createPullRequest( prTitle, args.baseBranch ); return { success: true, message: `✅ Pull request created successfully!\n\n` + `PR URL: ${result.prUrl}\n` + `PR Number: #${result.prNumber}\n` + `Updated ${result.updatedTasks} task(s)\n\n` + `All tasks have been linked to this PR.`, prUrl: result.prUrl, prNumber: result.prNumber, updatedTasks: result.updatedTasks, }; } catch (error: any) { return { success: false, message: `Failed to create pull request: ${error.message}`, }; } }

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/mazemaze/mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server