Skip to content
Merged
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
8 changes: 4 additions & 4 deletions .github/instructions/github-agentic-workflows.instructions.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

95 changes: 71 additions & 24 deletions docs/src/content/docs/guides/mcps.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,31 +18,68 @@ Model Context Protocol (MCP) is a standardized protocol that allows AI agents to

### Basic MCP Configuration

Add MCP servers to your workflow's frontmatter:
Add MCP servers to your workflow's frontmatter using the `mcp-servers:` section:

```yaml
---
tools:
github:
allowed: [get_issue, add_issue_comment]

on: issues
permissions:
contents: read
issues: write
engine: claude
mcp-servers:
trello:
type: stdio
command: "python"
args: ["-m", "trello_mcp"]
env:
TRELLO_TOKEN: "${{ secrets.TRELLO_TOKEN }}"
allowed: ["list_boards"]
allowed: ["list_boards", "create_card"]

notion:
registry: https://api.mcp.github.com/v0/servers/makenotion/notion-mcp-server
command: npx
args: ["-y", "@makenotion/notion-mcp-server"]
env:
NOTION_TOKEN: "${{ secrets.NOTION_TOKEN }}"
allowed: ["search_pages", "create_page"]
---

# Your workflow content here
```

> [!TIP]
> You can inspect test your MCP configuration by running <br/>
> You can inspect and test your MCP configuration by running <br/>
> `gh aw mcp inspect <workflow-file>`


### Adding MCP Servers from the Registry

The easiest way to add MCP servers is using the GitHub MCP registry with the `gh aw mcp add` command:

```bash
# List available MCP servers from the registry
gh aw mcp add

# Add a specific MCP server to your workflow
gh aw mcp add my-workflow makenotion/notion-mcp-server

# Add with specific transport preference
gh aw mcp add my-workflow makenotion/notion-mcp-server --transport stdio

# Add with custom tool ID
gh aw mcp add my-workflow makenotion/notion-mcp-server --tool-id my-notion

# Use a custom registry
gh aw mcp add my-workflow server-name --registry https://custom.registry.com/v1
```

This command automatically:
- Searches the MCP registry for the specified server
- Adds the server configuration to your workflow's `mcp-servers:` section (using the modern format)
- Compiles the workflow to generate the `.lock.yml` file

**Default Registry**: `https://api.mcp.github.com/v0`

### Engine Compatibility

Different AI engines support different MCP features:
Expand All @@ -59,9 +96,8 @@ Different AI engines support different MCP features:
Direct command execution with stdin/stdout communication:

```yaml
tools:
mcp-servers:
python-service:
type: stdio
command: "python"
args: ["-m", "my_mcp_server"]
env:
Expand All @@ -77,9 +113,8 @@ tools:
Containerized MCP servers for isolation and portability:

```yaml
tools:
mcp-servers:
notion:
type: stdio
container: "mcp/notion"
env:
NOTION_TOKEN: "${{ secrets.NOTION_TOKEN }}"
Expand All @@ -97,9 +132,8 @@ The `container` field automatically generates:
Remote MCP servers accessible via HTTP (Claude engine only):

```yaml
tools:
mcp-servers:
remote-api:
type: http
url: "https://api.example.com/mcp"
headers:
Authorization: "Bearer ${{ secrets.API_TOKEN }}"
Expand All @@ -109,6 +143,21 @@ tools:

**Use cases**: Cloud services, remote APIs, shared infrastructure

### 4. Registry-based MCP Servers

MCP servers that reference entries in the GitHub MCP registry:

```yaml
mcp-servers:
markitdown:
registry: https://api.mcp.github.com/v0/servers/microsoft/markitdown
command: npx
args: ["-y", "@microsoft/markitdown"]
allowed: ["convert_html", "convert_pdf"]
```

**Registry Reference**: The `registry` field provides metadata about the MCP server's origin and can help with tooling and documentation.

## GitHub MCP Integration

GitHub Agentic Workflows includes built-in GitHub MCP integration with comprehensive repository access. See [Tools Configuration](/gh-aw/reference/tools/) for details.
Expand All @@ -131,9 +180,8 @@ When using an agentic engine that allows tool whitelisting (e.g. Claude), you ca
### Specific Tools

```yaml
tools:
mcp-servers:
custom-server:
type: stdio
command: "python"
args: ["-m", "my_server"]
allowed: ["tool1", "tool2", "tool3"]
Expand All @@ -148,9 +196,8 @@ When using an agentic engine that allows tool whitelisting (e.g. Claude), this g
### Wildcard Access

```yaml
tools:
mcp-servers:
custom-server:
type: stdio
command: "python"
args: ["-m", "my_server"]
allowed: ["*"] # Allow ALL tools from this server
Expand All @@ -160,10 +207,11 @@ When using an agentic engine that allows tool whitelisting (e.g. Claude), this g

### HTTP Headers

HTTP headers can be configured for remote MCP servers:

```yaml
tools:
mcp-servers:
remote-api:
type: http
url: "https://api.service.com"
headers:
Authorization: "Bearer ${{ secrets.API_TOKEN }}"
Expand All @@ -175,9 +223,8 @@ tools:
Restrict outbound network access for containerized MCP servers using a per‑tool domain allowlist. Define allowed domains under `permissions.network.allowed`.

```yaml
tools:
mcp-servers:
fetch:
type: stdio
container: mcp/fetch
permissions:
network:
Expand All @@ -201,8 +248,8 @@ Notes:

The compiler enforces these network permission rules:

- ❌ **HTTP servers**: `network egress permissions do not apply to remote 'type: http' servers`
- ❌ **Non-container stdio**: `network egress permissions only apply to stdio MCP servers that specify a 'container'`
- ❌ **HTTP servers**: `network egress permissions do not apply to remote HTTP MCP servers`
- ❌ **Non-container stdio**: `network egress permissions only apply to containerized MCP servers`
- ✅ **Container stdio**: Network permissions work correctly

## Debugging and Troubleshooting
Expand Down
47 changes: 34 additions & 13 deletions docs/src/content/docs/reference/tools.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,25 +105,46 @@ tools:
**Available Ecosystem Identifiers:**
Same as `network:` configuration: `defaults`, `github`, `node`, `python`, `containers`, `java`, `rust`, `playwright`, etc.

## Custom MCP Tools
## MCP Server Integration

Add custom Model Context Protocol servers for specialized integrations:
Use the dedicated `mcp-servers:` section for MCP server configuration:

```yaml
tools:
# In your workflow frontmatter
mcp-servers:
custom-api:
mcp:
command: "node"
args: ["custom-mcp-server.js"]
env:
API_KEY: "${{ secrets.CUSTOM_API_KEY }}"
command: "node"
args: ["custom-mcp-server.js"]
env:
API_KEY: "${{ secrets.CUSTOM_API_KEY }}"

# Separate tools section for built-in capabilities
tools:
github:
allowed: [create_issue, update_issue]
playwright:
allowed_domains: ["github.com"]
```

**Tool Execution:**
- Tools are configured as MCP servers that run alongside the AI engine
- Each tool provides specific capabilities (APIs, browser automation, etc.)
- Tools run in isolated environments with controlled access
- Domain restrictions apply to network-enabled tools like Playwright
### Adding MCP Servers from Registry

The easiest way to add MCP servers is from the GitHub MCP registry:

```bash
# List available MCP servers
gh aw mcp add

# Add a specific server to your workflow
gh aw mcp add my-workflow makenotion/notion-mcp-server
```

See the [MCP Integration Guide](/gh-aw/guides/mcps/) for comprehensive MCP server setup and configuration.

**MCP Server Execution:**
- MCP servers run alongside the AI engine to provide specialized capabilities
- Each server provides specific tools (APIs, database access, etc.)
- Servers run in isolated environments with controlled access
- Domain restrictions apply to network-enabled servers

## Neutral Tools (`edit:`, `web-fetch:`, `web-search:`, `bash:`)

Expand Down
17 changes: 16 additions & 1 deletion docs/src/content/docs/tools/cli.md
Original file line number Diff line number Diff line change
Expand Up @@ -305,8 +305,12 @@ gh aw mcp inspect workflow-name --inspector

### MCP Server Management

The MCP commands help you discover, add, and manage MCP servers from the GitHub MCP registry.

#### Adding MCP Servers from Registry

```bash
# List available MCP servers from the registry
# List available MCP servers from the GitHub MCP registry
gh aw mcp add

# Add an MCP server to a workflow from the registry
Expand All @@ -320,7 +324,18 @@ gh aw mcp add weekly-research makenotion/notion-mcp-server --tool-id my-notion

# Use custom MCP registry
gh aw mcp add weekly-research server-name --registry https://custom.registry.com/v1
```

**Key Features:**
- **Automatic Configuration**: Uses the modern `mcp-servers:` format in your workflow frontmatter
- **Registry Integration**: Connects to GitHub's MCP registry at `https://api.mcp.github.com/v0` by default
- **Automatic Compilation**: Compiles the workflow after adding the MCP server
- **Transport Selection**: Supports stdio, HTTP, and Docker transports
- **Custom Registries**: Can connect to private or custom MCP registries

#### MCP Server Development

```bash
# Launch MCP server exposing gh-aw CLI tools
gh aw mcp serve

Expand Down