Skip to content

Add support for rulesets and custom properties. #821

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 9 commits into
base: main
Choose a base branch
from
100 changes: 100 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,7 @@ The following sets of tools are available (all are on by default):
| `code_security` | Code security related tools, such as GitHub Code Scanning |
| `dependabot` | Dependabot tools |
| `discussions` | GitHub Discussions related tools |
| `enterprise` | GitHub Enterprise related tools |
| `experiments` | Experimental features that are not considered stable yet |
| `gists` | GitHub Gist related tools |
| `issues` | GitHub Issues related tools |
Expand Down Expand Up @@ -473,6 +474,28 @@ The following sets of tools are available (all are on by default):

<details>

<summary>Enterprise</summary>

- **create_enterprise_repository_ruleset** - Create enterprise repository ruleset
- `bypass_actors`: The actors that can bypass the rules in this ruleset (object[], optional)
- `conditions`: Conditions for when this ruleset applies (object, optional)
- `enforcement`: The enforcement level of the ruleset. Can be 'disabled', 'active', or 'evaluate' (string, required)
- `enterprise`: Enterprise name (string, required)
- `name`: The name of the ruleset (string, required)
- `rules`: An array of rules within the ruleset (object[], required)
- `target`: The target of the ruleset. Defaults to 'branch'. Can be one of: 'branch', 'tag', or 'push' (string, optional)

- **create_or_update_enterprise_custom_properties** -
- `enterprise`: Enterprise name (string, required)
- `properties`: Custom properties as JSON array (string, required)

- **get_enterprise_custom_properties** -
- `enterprise`: Enterprise name (string, required)

</details>

<details>

<summary>Gists</summary>

- **create_gist** - Create Gist
Expand Down Expand Up @@ -632,6 +655,31 @@ The following sets of tools are available (all are on by default):

<summary>Organizations</summary>

- **create_or_update_organization_custom_properties** -
- `org`: Organization name (string, required)
- `properties`: Custom properties as JSON array (string, required)

- **create_organization_repository_ruleset** - Create organization repository ruleset
- `bypass_actors`: The actors that can bypass the rules in this ruleset (object[], optional)
- `conditions`: Conditions for when this ruleset applies (object, optional)
- `enforcement`: The enforcement level of the ruleset. Can be 'disabled', 'active', or 'evaluate' (string, required)
- `name`: The name of the ruleset (string, required)
- `org`: Organization name (string, required)
- `rules`: An array of rules within the ruleset (object[], required)
- `target`: The target of the ruleset. Defaults to 'branch'. Can be one of: 'branch', 'tag', or 'push' (string, optional)

- **get_organization_custom_properties** -
- `org`: Organization name (string, required)

- **get_organization_repository_ruleset** - Get organization repository ruleset
- `org`: Organization name (string, required)
- `rulesetId`: Ruleset ID (number, required)

- **list_organization_repository_rulesets** - List organization repository rulesets
- `org`: Organization name (string, required)
- `page`: Page number for pagination (min 1) (number, optional)
- `perPage`: Results per page for pagination (min 1, max 100) (number, optional)

- **search_orgs** - Search organizations
- `order`: Sort order (string, optional)
- `page`: Page number for pagination (min 1) (number, optional)
Expand Down Expand Up @@ -797,12 +845,27 @@ The following sets of tools are available (all are on by default):
- `repo`: Repository name (string, required)
- `sha`: Required if updating an existing file. The blob SHA of the file being replaced. (string, optional)

- **create_or_update_repository_custom_properties** -
- `owner`: Repository owner (string, required)
- `properties`: Custom properties as JSON array (string, required)
- `repo`: Repository name (string, required)

- **create_repository** - Create repository
- `autoInit`: Initialize with README (boolean, optional)
- `description`: Repository description (string, optional)
- `name`: Repository name (string, required)
- `private`: Whether repo should be private (boolean, optional)

- **create_repository_ruleset** - Create repository ruleset
- `bypass_actors`: The actors that can bypass the rules in this ruleset (object[], optional)
- `conditions`: Conditions for when this ruleset applies (object, optional)
- `enforcement`: The enforcement level of the ruleset. Can be 'disabled', 'active', or 'evaluate' (string, required)
- `name`: The name of the ruleset (string, required)
- `owner`: Repository owner (string, required)
- `repo`: Repository name (string, required)
- `rules`: An array of rules within the ruleset (object[], required)
- `target`: The target of the ruleset. Defaults to 'branch'. Can be one of: 'branch', 'tag', or 'push' (string, optional)

- **delete_file** - Delete file
- `branch`: Branch to delete the file from (string, required)
- `message`: Commit message (string, required)
Expand All @@ -829,6 +892,28 @@ The following sets of tools are available (all are on by default):
- `repo`: Repository name (string, required)
- `sha`: Accepts optional commit SHA. If specified, it will be used instead of ref (string, optional)

- **get_repository_custom_properties** -
- `owner`: Repository owner (string, required)
- `repo`: Repository name (string, required)

- **get_repository_rule_suite** - Get repository rule suite
- `owner`: Repository owner (string, required)
- `repo`: Repository name (string, required)
- `ruleSuiteId`: Rule suite ID (number, required)

- **get_repository_rules_for_branch** - Get rules for branch
- `branch`: Branch name (string, required)
- `owner`: Repository owner (string, required)
- `page`: Page number for pagination (min 1) (number, optional)
- `perPage`: Results per page for pagination (min 1, max 100) (number, optional)
- `repo`: Repository name (string, required)

- **get_repository_ruleset** - Get repository ruleset
- `includesParents`: Include rulesets configured at higher levels that also apply (boolean, optional)
- `owner`: Repository owner (string, required)
- `repo`: Repository name (string, required)
- `rulesetId`: Ruleset ID (number, required)

- **get_tag** - Get tag details
- `owner`: Repository owner (string, required)
- `repo`: Repository name (string, required)
Expand All @@ -848,6 +933,21 @@ The following sets of tools are available (all are on by default):
- `repo`: Repository name (string, required)
- `sha`: Commit SHA, branch or tag name to list commits of. If not provided, uses the default branch of the repository. If a commit SHA is provided, will list commits up to that SHA. (string, optional)

- **list_repository_rule_suites** - List repository rule suites
- `actorName`: The handle for the GitHub user account to filter on (string, optional)
- `owner`: Repository owner (string, required)
- `page`: Page number for pagination (min 1) (number, optional)
- `perPage`: Results per page for pagination (min 1, max 100) (number, optional)
- `ref`: The name of the ref (branch, tag, etc.) to filter rule suites by (string, optional)
- `repo`: Repository name (string, required)
- `ruleSuiteResult`: The rule suite result to filter by. Options: pass, fail, bypass (string, optional)
- `timePeriod`: The time period to filter by. Options: hour, day, week, month (string, optional)

- **list_repository_rulesets** - List repository rulesets
- `includesParents`: Include rulesets configured at higher levels that also apply (boolean, optional)
- `owner`: Repository owner (string, required)
- `repo`: Repository name (string, required)

- **list_tags** - List tags
- `owner`: Repository owner (string, required)
- `page`: Page number for pagination (min 1) (number, optional)
Expand Down
1 change: 1 addition & 0 deletions docs/remote-server.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ Below is a table of available toolsets for the remote GitHub MCP Server. Each to
| Code Security | Code security related tools, such as GitHub Code Scanning | https://api.githubcopilot.com/mcp/x/code_security | [Install](https://insiders.vscode.dev/redirect/mcp/install?name=gh-code_security&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fcode_security%22%7D) | [read-only](https://api.githubcopilot.com/mcp/x/code_security/readonly) | [Install read-only](https://insiders.vscode.dev/redirect/mcp/install?name=gh-code_security&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fcode_security%2Freadonly%22%7D) |
| Dependabot | Dependabot tools | https://api.githubcopilot.com/mcp/x/dependabot | [Install](https://insiders.vscode.dev/redirect/mcp/install?name=gh-dependabot&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fdependabot%22%7D) | [read-only](https://api.githubcopilot.com/mcp/x/dependabot/readonly) | [Install read-only](https://insiders.vscode.dev/redirect/mcp/install?name=gh-dependabot&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fdependabot%2Freadonly%22%7D) |
| Discussions | GitHub Discussions related tools | https://api.githubcopilot.com/mcp/x/discussions | [Install](https://insiders.vscode.dev/redirect/mcp/install?name=gh-discussions&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fdiscussions%22%7D) | [read-only](https://api.githubcopilot.com/mcp/x/discussions/readonly) | [Install read-only](https://insiders.vscode.dev/redirect/mcp/install?name=gh-discussions&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fdiscussions%2Freadonly%22%7D) |
| Enterprise | GitHub Enterprise related tools | https://api.githubcopilot.com/mcp/x/enterprise | [Install](https://insiders.vscode.dev/redirect/mcp/install?name=gh-enterprise&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fenterprise%22%7D) | [read-only](https://api.githubcopilot.com/mcp/x/enterprise/readonly) | [Install read-only](https://insiders.vscode.dev/redirect/mcp/install?name=gh-enterprise&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fenterprise%2Freadonly%22%7D) |
| Experiments | Experimental features that are not considered stable yet | https://api.githubcopilot.com/mcp/x/experiments | [Install](https://insiders.vscode.dev/redirect/mcp/install?name=gh-experiments&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fexperiments%22%7D) | [read-only](https://api.githubcopilot.com/mcp/x/experiments/readonly) | [Install read-only](https://insiders.vscode.dev/redirect/mcp/install?name=gh-experiments&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fexperiments%2Freadonly%22%7D) |
| Gists | GitHub Gist related tools | https://api.githubcopilot.com/mcp/x/gists | [Install](https://insiders.vscode.dev/redirect/mcp/install?name=gh-gists&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fgists%22%7D) | [read-only](https://api.githubcopilot.com/mcp/x/gists/readonly) | [Install read-only](https://insiders.vscode.dev/redirect/mcp/install?name=gh-gists&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fgists%2Freadonly%22%7D) |
| Issues | GitHub Issues related tools | https://api.githubcopilot.com/mcp/x/issues | [Install](https://insiders.vscode.dev/redirect/mcp/install?name=gh-issues&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fissues%22%7D) | [read-only](https://api.githubcopilot.com/mcp/x/issues/readonly) | [Install read-only](https://insiders.vscode.dev/redirect/mcp/install?name=gh-issues&config=%7B%22type%22%3A%20%22http%22%2C%22url%22%3A%20%22https%3A%2F%2Fapi.githubcopilot.com%2Fmcp%2Fx%2Fissues%2Freadonly%22%7D) |
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"annotations": {
"title": "Get organization repository ruleset",
"readOnlyHint": true
},
"description": "Get details of a specific organization repository ruleset",
"inputSchema": {
"properties": {
"org": {
"description": "Organization name",
"type": "string"
},
"rulesetId": {
"description": "Ruleset ID",
"type": "number"
}
},
"required": [
"org",
"rulesetId"
],
"type": "object"
},
"name": "get_organization_repository_ruleset"
}
30 changes: 30 additions & 0 deletions pkg/github/__toolsnaps__/get_repository_rule_suite.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"annotations": {
"title": "Get repository rule suite",
"readOnlyHint": true
},
"description": "Get details of a specific repository rule suite",
"inputSchema": {
"properties": {
"owner": {
"description": "Repository owner",
"type": "string"
},
"repo": {
"description": "Repository name",
"type": "string"
},
"ruleSuiteId": {
"description": "Rule suite ID",
"type": "number"
}
},
"required": [
"owner",
"repo",
"ruleSuiteId"
],
"type": "object"
},
"name": "get_repository_rule_suite"
}
41 changes: 41 additions & 0 deletions pkg/github/__toolsnaps__/get_repository_rules_for_branch.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
{
"annotations": {
"title": "Get rules for branch",
"readOnlyHint": true
},
"description": "Get all repository rules that apply to a specific branch",
"inputSchema": {
"properties": {
"branch": {
"description": "Branch name",
"type": "string"
},
"owner": {
"description": "Repository owner",
"type": "string"
},
"page": {
"description": "Page number for pagination (min 1)",
"minimum": 1,
"type": "number"
},
"perPage": {
"description": "Results per page for pagination (min 1, max 100)",
"maximum": 100,
"minimum": 1,
"type": "number"
},
"repo": {
"description": "Repository name",
"type": "string"
}
},
"required": [
"owner",
"repo",
"branch"
],
"type": "object"
},
"name": "get_repository_rules_for_branch"
}
34 changes: 34 additions & 0 deletions pkg/github/__toolsnaps__/get_repository_ruleset.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
{
"annotations": {
"title": "Get repository ruleset",
"readOnlyHint": true
},
"description": "Get details of a specific repository ruleset",
"inputSchema": {
"properties": {
"includesParents": {
"description": "Include rulesets configured at higher levels that also apply",
"type": "boolean"
},
"owner": {
"description": "Repository owner",
"type": "string"
},
"repo": {
"description": "Repository name",
"type": "string"
},
"rulesetId": {
"description": "Ruleset ID",
"type": "number"
}
},
"required": [
"owner",
"repo",
"rulesetId"
],
"type": "object"
},
"name": "get_repository_ruleset"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
{
"annotations": {
"title": "List organization repository rulesets",
"readOnlyHint": true
},
"description": "List all organization repository rulesets",
"inputSchema": {
"properties": {
"org": {
"description": "Organization name",
"type": "string"
},
"page": {
"description": "Page number for pagination (min 1)",
"minimum": 1,
"type": "number"
},
"perPage": {
"description": "Results per page for pagination (min 1, max 100)",
"maximum": 100,
"minimum": 1,
"type": "number"
}
},
"required": [
"org"
],
"type": "object"
},
"name": "list_organization_repository_rulesets"
}
52 changes: 52 additions & 0 deletions pkg/github/__toolsnaps__/list_repository_rule_suites.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
{
"annotations": {
"title": "List repository rule suites",
"readOnlyHint": true
},
"description": "List rule suites for a repository",
"inputSchema": {
"properties": {
"actorName": {
"description": "The handle for the GitHub user account to filter on",
"type": "string"
},
"owner": {
"description": "Repository owner",
"type": "string"
},
"page": {
"description": "Page number for pagination (min 1)",
"minimum": 1,
"type": "number"
},
"perPage": {
"description": "Results per page for pagination (min 1, max 100)",
"maximum": 100,
"minimum": 1,
"type": "number"
},
"ref": {
"description": "The name of the ref (branch, tag, etc.) to filter rule suites by",
"type": "string"
},
"repo": {
"description": "Repository name",
"type": "string"
},
"ruleSuiteResult": {
"description": "The rule suite result to filter by. Options: pass, fail, bypass",
"type": "string"
},
"timePeriod": {
"description": "The time period to filter by. Options: hour, day, week, month",
"type": "string"
}
},
"required": [
"owner",
"repo"
],
"type": "object"
},
"name": "list_repository_rule_suites"
}
Loading
Loading