Skip to main content
Glama
README.md
<h1 align="center">Shannon Lite MCP</h1>

<p align="center">
  <strong>Model Context Protocol server for end-to-end Shannon Lite security workflows</strong>
</p>

<p align="center">
  <a href="https://www.npmjs.com/package/shannon-lite-mcp"><img src="https://img.shields.io/npm/v/shannon-lite-mcp" alt="NPM Version"></a>
  <a href="https://opensource.org/licenses/MIT"><img src="https://img.shields.io/badge/License-MIT-blue.svg" alt="MIT License"></a>
  <a href="https://github.com/devinoldenburg/shannon-mcp/actions/workflows/ci.yml"><img src="https://github.com/devinoldenburg/shannon-mcp/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
  <a href="https://modelcontextprotocol.io/"><img src="https://img.shields.io/badge/MCP-Compatible-8A2BE2" alt="MCP Compatible"></a>
</p>

This package enables AI assistants and applications to configure Shannon, start scans, monitor runtime, inspect workspaces, and read reports programmatically.

## Features

- Full Shannon Lite workflow support through MCP tools
- Built-in config management for `~/.shannon/config.toml`
- Scan orchestration (`start`, `status`, `workspaces`, logs, report reads)
- Safe destructive operations with explicit confirmation tokens
- Smart CLI execution (`shannon` binary or fallback to `npx @keygraph/shannon`)
- TypeScript implementation with strict Zod validation

## Setup

### Prerequisites

- Node.js 18+
- Docker (daemon running)
- Shannon CLI access (`shannon` in `PATH` or `npx` available)

### MCP Configuration

If you are running this repo locally (unpublished package), build first:

```bash
npm install
npm run build
```

Then use command `node` with args `[/absolute/path/to/shannon-mcp/dist/index.js]` in your MCP client configuration.

#### For Claude Desktop

Add to your Claude Desktop configuration file (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS):

```json
{
  "mcpServers": {
    "shannon-lite": {
      "command": "npx",
      "args": ["-y", "shannon-lite-mcp"]
    }
  }
}
```

#### For Cursor

Add the configuration to your Cursor settings:

```json
{
  "mcpServers": {
    "shannon-lite": {
      "command": "npx",
      "args": ["-y", "shannon-lite-mcp"]
    }
  }
}
```

#### For Windsurf

Add the configuration to your Windsurf settings:

```json
{
  "mcpServers": {
    "shannon-lite": {
      "command": "npx",
      "args": ["-y", "shannon-lite-mcp"]
    }
  }
}
```

#### For Warp

Add the following to your Warp session setup:

```json
{
  "shannon-lite": {
    "command": "npx",
    "args": ["-y", "shannon-lite-mcp"],
    "working_directory": null,
    "start_on_launch": true
  }
}
```

#### For Other MCP Clients

Use standard MCP server settings:

- **Command**: `npx -y shannon-lite-mcp` or `node /path/to/shannon-mcp/dist/index.js`
- **Transport**: stdio

## Available MCP Tools

- `shannon_health` - Check Docker/Node/CLI readiness, config, and workspace state
- `shannon_config_set` - Write `~/.shannon/config.toml` for `anthropic`, `custom_base_url`, `bedrock`, `vertex`, or `router`
- `shannon_config_get` - Read current config with secret masking
- `shannon_start_scan` - Start a scan with `url`, `repo`, and optional `config`, `workspace`, `output`, `pipeline_testing`, `router`
- `shannon_status` - Get Temporal + worker runtime status
- `shannon_list_workspaces` - List known Shannon workspaces
- `shannon_get_workspace` - Return detailed workspace/session metadata
- `shannon_read_workflow_log` - Read workspace `workflow.log` (tail by default)
- `shannon_read_report` - Read final report from workspace deliverables
- `shannon_stop` - Stop Shannon runtime (clean mode requires confirmation token)
- `shannon_uninstall` - Remove `~/.shannon` and stop runtime (requires confirmation token)

## Safety Notice

Shannon Lite can run real security test flows. Use only on systems you are authorized to test.

Destructive operations require exact confirmation tokens:

- `shannon_stop` with `clean=true`: `I_UNDERSTAND_THIS_WILL_REMOVE_SHANNON_DATA`
- `shannon_uninstall`: `DELETE_SHANNON_HOME_AND_STOP_SHANNON`

## Usage Examples

### Configure Anthropic API Key

```javascript
await mcp.callTool("shannon_config_set", {
  provider: "anthropic",
  auth_method: "api_key",
  api_key: "sk-ant-..."
});
```

### Start a Scan

```javascript
await mcp.callTool("shannon_start_scan", {
  url: "https://example.com",
  repo: "/absolute/path/to/repo",
  workspace: "q2-audit"
});
```

### Read Final Report

```javascript
await mcp.callTool("shannon_read_report", {
  workspace: "q2-audit"
});
```

### Clean Stop (destructive)

```javascript
await mcp.callTool("shannon_stop", {
  clean: true,
  confirm_destructive: "I_UNDERSTAND_THIS_WILL_REMOVE_SHANNON_DATA"
});
```

## Development Setup

### Prerequisites

- Node.js 18+
- npm

### Local Development

1. **Install dependencies**:

   ```bash
   npm install
   ```

2. **Build the project**:

   ```bash
   npm run build
   ```

3. **Run in development mode**:

   ```bash
   npm run dev
   ```

4. **Run tests**:

   ```bash
   npm run test:run
   ```

## Contributing

1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

## License

This project is licensed under the MIT License - see the `LICENSE` file for details.

## Links

- [Shannon (Keygraph)](https://github.com/KeygraphHQ/shannon)
- [Model Context Protocol Specification](https://spec.modelcontextprotocol.io/)
- [MCP TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk)

## Support

- Create an issue for bug reports or feature requests
- Check existing issues before creating new ones
- Include reproduction steps, environment info, and relevant logs

---

Made with care for the security engineering community.

TDQS

A3.7/5.0

Scored across 11 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: config, workspace management, health, scan execution, report reading, runtime control, and uninstall. No overlapping functionality.

Naming Consistency5/5

All tools follow the consistent pattern `shannon_<verb>` or `shannon_<verb>_<noun>` (e.g., shannon_config_get, shannon_list_workspaces, shannon_start_scan, shannon_stop).

Tool Count5/5

11 tools cover the essential operations for managing Shannon Lite without being excessive. The scope is well-defined for typical use cases.

Completeness4/5

Core workflows are covered: config, workspace listing, scan initiation, report reading, health checks, stop, and uninstall. Minor gaps exist (no explicit workspace creation or scan status polling), but agents can work around them.

Maintenance

ActivityMaintained
ResponsivenessSyncing