An automated AI-powered software development system that processes Jira tickets and implements code changes using a team of specialized AI agents.
This project automates the entire software development lifecycle from ticket intake to PR creation using a team of AI agents powered by Model Context Protocol (MCP) and Anthropic's Claude models. The system can:
- Read Jira tickets and extract requirements
- Clone relevant repositories
- Organize tasks and create implementation plans
- Write code according to specifications
- Review code for quality and correctness
- Create pull requests with all required changes
- Update documentation in Confluence
The system operates with specialized AI agents:
- Task Organizer: Analyzes tickets, creates task plans, and manages workflow
- Coder: Implements code changes based on requirements
- Code Reviewer: Reviews code for quality, correctness and best practices
The workflow is orchestrated by the MCP Orchestrator, which manages agent interactions and task execution.
- Python 3.10+
- uv package manager
- Jira and Confluence access
- GitHub access with appropriate permissions
- Anthropic API key (Claude 3.7 Sonnet model)
git clone <repository-url>
cd code_writing_teamuv pip sync uv.lockCopy and configure your secrets file:
cp mcp_agent.secrets.example.yaml mcp_agent.secrets.yamlEdit mcp_agent.secrets.yaml with your actual API keys and credentials.
repos/ folder before running the system against a ticket. Once cloned, the AI agents will detect the existing repositories and work with them without attempting to clone.
Example of manually cloning a repository:
# Create the repos directory if it doesn't exist
mkdir -p repos
# Clone the repository needed for your ticket
git clone https://github.com/username/repository.git repos/repositoryEnsure the repository name matches what is specified in the Jira ticket for the AI agents to locate it correctly.
Run the system by providing a Jira ticket key:
python main.py PROJ-123The system will:
- Validate MCP tools
- Process the ticket
- Clone the relevant repository
- Create a task file in the
tasks/directory - Implement code changes
- Create a pull request
- Update the task file with progress
main.py: Entry point for the applicationagents/: Specialized AI agent implementationscode_reviewer.py: Code review agentcoder.py: Implementation agenttask_organizer.py: Task organization agent
workflows/: Workflow orchestration modulesprocess_ticket.py: Main ticket processing workflowclone_repository.py: Repository cloning workflowensure_task_file_exists.py: Task file management
utils/: Utility modulesconfig.py: Configuration managementapp_instance.py: Application instance management
repos/: Cloned repositories for ticket implementationtasks/: Task files for each ticket
The system uses three configuration files:
mcp_agent.config.yaml: General configuration for MCP servers and settingsmcp_agent.secrets.yaml: Sensitive credentials and API keys (not committed to version control).env: Environment variables for Docker and local development
The .env file contains configuration used for both local development and Docker:
# Default ticket ID (can be overridden when running docker-compose)
TICKET_ID=AI-8
# Git user configuration
GIT_AUTHOR_NAME=YourName
GIT_AUTHOR_EMAIL=your.email@example.comKey variables:
TICKET_ID: Default Jira ticket to process when running in DockerGIT_AUTHOR_NAMEandGIT_AUTHOR_EMAIL: Git user identity for commits
When using Docker, you can override the ticket ID:
TICKET_ID=PROJ-123 docker-compose up- Add the server configuration to
mcp_agent.config.yaml - Add required environment variables to
mcp_agent.secrets.yaml - Update the
validate_mcp_tools.pyto check for the new server
- Create a new agent file in the
agents/directory - Implement the agent with specialized capabilities
- Add the agent to the orchestrator in
process_ticket.py
- Missing MCP tools: Ensure all required MCP servers are configured correctly
- API rate limits: Check for rate limiting in Jira, GitHub, or Anthropic APIs
- Permission issues: Verify API tokens have appropriate permissions
Logs are output to the console by default. Set the log level in mcp_agent.config.yaml.
[Add your license information here]
[Add your contribution guidelines here]