The GitHub Project Manager MCP Server provides a Model Context Protocol (MCP) interface for managing GitHub Projects. This guide explains how to set up, configure, and use the server effectively.
- Node.js 14.x or higher
- npm or pnpm
- A GitHub account with appropriate permissions
- A GitHub Personal Access Token with the following scopes:
repo(Full repository access)project(Project access)write:org(Organization access)
-
Clone the repository:
git clone <repository-url> cd mcp-github-project-manager
-
Install dependencies:
npm install # or pnpm install -
Configure environment:
cp .env.example .env
-
Edit
.envwith your GitHub credentials:GITHUB_TOKEN=your_personal_access_token GITHUB_OWNER=repository_owner GITHUB_REPO=repository_name
-
Roadmap Creation
- Create project roadmaps with milestones
- Define project scope and objectives
- Set project visibility and access controls
-
Sprint Planning
- Create and manage sprints
- Assign issues to sprints
- Track sprint progress and metrics
-
Milestone Management
- Create project milestones
- Track milestone progress
- Manage milestone deadlines
-
Issue Tracking
- Create and manage issues
- Track issue status and progress
- Link related issues
- Add custom fields
-
Projects
interface Project { id: string; title: string; description: string; status: 'active' | 'closed'; visibility: 'private' | 'public'; }
-
Milestones
interface Milestone { id: string; title: string; description: string; dueDate: string; status: 'open' | 'closed'; }
-
Sprints
interface Sprint { id: string; name: string; startDate: string; endDate: string; status: 'planned' | 'active' | 'completed'; }
-
Create Project
const project = await service.createRoadmap({ project: { title: "Project Name", shortDescription: "Project Description", owner: "repository_owner", visibility: "private" }, milestones: [ { milestone: { title: "Phase 1", dueDate: "2024-12-31" }, issues: [ { title: "Task 1", description: "Task description" } ] } ] });
-
Plan Sprint
const sprint = await service.planSprint({ sprint: { name: "Sprint 1", startDate: "2024-01-01", endDate: "2024-01-14" }, issueIds: ["issue-1", "issue-2"] });
-
Track Progress
const metrics = await service.getSprintMetrics(sprintId); console.log(metrics.completionPercentage);
The server implements comprehensive error handling:
-
API Errors
- Rate limiting
- Authentication failures
- Permission issues
-
Resource Errors
- Not found errors
- Version conflicts
- Validation errors
-
Resource Management
- Use meaningful titles and descriptions
- Keep project structure consistent
- Regularly update status and progress
-
Performance
- Batch related operations
- Use pagination for large datasets
- Handle rate limits appropriately
-
Error Handling
- Implement proper error handling
- Handle rate limits gracefully
- Validate inputs before submission
Common issues and solutions:
-
Authentication Errors
- Verify token permissions
- Check token expiration
- Ensure correct environment variables
-
Rate Limiting
- Implement request batching
- Add retry logic
- Monitor rate limit headers
-
Resource Conflicts
- Handle version conflicts
- Implement proper locking
- Use optimistic concurrency
For issues and feature requests:
- Check existing GitHub issues
- Create a new issue with detailed description
- Follow the contribution guidelines