Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 40 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ That's it! Your agent is ready to handle this complex and ambiguous security wor

## Real-World Examples

This repository includes four working examples that demonstrate the framework's capabilities. It utilizes multiple 3rd party MCP servers including [Panther Security Monitoring](https://github.com/panther-labs/mcp-panther), [VirusTotal](https://github.com/BurtTheCoder/mcp-virustotal), [Github](https://github.com/github/github-mcp-server), [Linear](https://linear.app/changelog/2025-05-01-mcp), and [Slack](https://github.com/modelcontextprotocol/servers-archived/tree/main/src/slack) MCP servers.
This repository includes four working examples that demonstrate the framework's capabilities. It utilizes multiple 3rd party MCP servers including [Panther Security Monitoring](https://github.com/panther-labs/mcp-panther), [VirusTotal](https://github.com/BurtTheCoder/mcp-virustotal), [Github](https://github.com/github/github-mcp-server), [Linear](https://linear.app/changelog/2025-05-01-mcp), [Slack](https://github.com/modelcontextprotocol/servers-archived/tree/main/src/slack), and custom Jira MCP servers.

While these examples are cybersecurity focused, this framework can be used to build agents for any team such as those in product engineering or customer support.

Expand All @@ -44,6 +44,9 @@ This agent triages Github Dependabot alerts by evaluating vulnerability impact,
### [Weekly Summary Agent](main.py#L121-L140)
Every Sunday, this agent reviews Linear tickets and projects for their team. It writes a report on current projects, what got done that week and by whom.

### [Jira Ticket Agent](main.py#L143-L170)
This agent creates and manages Jira tickets based on natural language instructions. It can create tickets with appropriate fields, set priorities, assignees, and labels, and send confirmations to Slack channels. See the [Jira Integration Guide](docs/JIRA_INTEGRATION.md) for detailed setup instructions.

## Why This Approach Works

**Claude Code excels at intelligent task orchestration.** It transforms high-level goals into detailed action plans, adapts when obstacles arise, and thinks critically through complex problems. With the right tools and clear instructions, it can automate workflows that would typically require hundreds of lines of custom code—making it the ideal MCP client for both technical and operational tasks.
Expand Down Expand Up @@ -77,6 +80,42 @@ uv sync
uv run fastapi dev main.py
```

### Environment Variables

Create a `.env` file in the project root with the following variables:

```bash
# GitHub Integration
GITHUB_TOKEN=your-github-token

# Slack Integration
SLACK_BOT_TOKEN=xoxb-your-slack-bot-token
SLACK_TEAM_ID=your-slack-team-id
SLACK_CHANNEL_IDS=channel1,channel2

# Panther Security Monitoring
PANTHER_INSTANCE_URL=https://your-instance.runpanther.io
PANTHER_API_TOKEN=your-panther-api-token

# VirusTotal
VIRUSTOTAL_API_KEY=your-virustotal-api-key

# Jira Integration
JIRA_HOST=https://your-instance.atlassian.net
JIRA_USERNAME=your-email@company.com
JIRA_API_TOKEN=your-jira-api-token
```

**Note**: The Jira integration requires:
1. A Jira Cloud instance
2. An API token generated from your Atlassian account
3. Appropriate permissions to create and manage issues in the target project

## Documentation

- **[Jira Integration Guide](docs/JIRA_INTEGRATION.md)** - Comprehensive guide for setting up and using the Jira MCP server integration
- **[Deployment Guide](DEPLOYMENT.md)** - Production deployment instructions

### Creating Custom Agents

Creating a new agent is as simple as:
Expand Down
9 changes: 9 additions & 0 deletions agent.py
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,15 @@
"VIRUSTOTAL_API_KEY": os.getenv("VIRUSTOTAL_API_KEY"),
},
},
"jira": {
"command": "uv",
"args": ["run", "mcps/jira.py"],
"env": {
"JIRA_HOST": os.getenv("JIRA_HOST"),
"JIRA_USERNAME": os.getenv("JIRA_USERNAME"),
"JIRA_API_TOKEN": os.getenv("JIRA_API_TOKEN"),
},
},
}
}

Expand Down
Loading