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
29 changes: 29 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -974,6 +974,35 @@ The following sets of tools are available:
- `per_page`: Results per page (max 50) (number, optional)
- `query`: Filter projects by title text and open/closed state; permitted qualifiers: is:open, is:closed; examples: "roadmap is:open", "is:open feature planning". (string, optional)

- **projects_get** - Get details of GitHub Projects resources
- `field_id`: The field's ID. Required for 'get_project_field' method. (number, optional)
- `fields`: Specific list of field IDs to include in the response when getting a project item (e.g. ["102589", "985201", "169875"]). If not provided, only the title field is included. Only used for 'get_project_item' method. (string[], optional)
- `item_id`: The item's ID. Required for 'get_project_item' method. (number, optional)
- `method`: The method to execute (string, required)
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
- `owner_type`: Owner type (string, required)
- `project_number`: The project's number. (number, required)

- **projects_list** - List GitHub Projects resources
- `after`: Forward pagination cursor from previous pageInfo.nextCursor. (string, optional)
- `before`: Backward pagination cursor from previous pageInfo.prevCursor (rare). (string, optional)
- `fields`: Field IDs to include when listing project items (e.g. ["102589", "985201"]). CRITICAL: Always provide to get field values. Without this, only titles returned. Only used for 'list_project_items' method. (string[], optional)
- `method`: The action to perform (string, required)
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
- `owner_type`: Owner type (string, required)
- `per_page`: Results per page (max 50) (number, optional)
- `project_number`: The project's number. Required for 'list_project_fields' and 'list_project_items' methods. (number, optional)
- `query`: Filter/query string. For list_projects: filter by title text and state (e.g. "roadmap is:open"). For list_project_items: advanced filtering using GitHub's project filtering syntax. (string, optional)

- **projects_write** - Modify GitHub Project items
- `item_id`: The project item ID. Required for 'update_project_item' and 'delete_project_item' methods. For add_project_item, this is the numeric ID of the issue or pull request to add. (number, optional)
- `item_type`: The item's type, either issue or pull_request. Required for 'add_project_item' method. (string, optional)
- `method`: The method to execute (string, required)
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
- `owner_type`: Owner type (string, required)
- `project_number`: The project's number. (number, required)
- `updated_field`: Object consisting of the ID of the project field to update and the new value for the field. To clear the field, set value to null. Example: {"id": 123456, "value": "New Value"}. Required for 'update_project_item' method. (object, optional)

- **update_project_item** - Update project item
- `item_id`: The unique identifier of the project item. This is not the issue or pull request ID. (number, required)
- `owner`: If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive. (string, required)
Expand Down
59 changes: 59 additions & 0 deletions pkg/github/__toolsnaps__/projects_get.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
{
"annotations": {
"readOnlyHint": true,
"title": "Get details of GitHub Projects resources"
},
"description": "Get details about specific GitHub Projects resources.\nUse this tool to get details about individual projects, project fields, and project items by their unique IDs.\n",
"inputSchema": {
"type": "object",
"required": [
"method",
"owner_type",
"owner",
"project_number"
],
"properties": {
"field_id": {
"type": "number",
"description": "The field's ID. Required for 'get_project_field' method."
},
"fields": {
"type": "array",
"description": "Specific list of field IDs to include in the response when getting a project item (e.g. [\"102589\", \"985201\", \"169875\"]). If not provided, only the title field is included. Only used for 'get_project_item' method.",
"items": {
"type": "string"
}
},
"item_id": {
"type": "number",
"description": "The item's ID. Required for 'get_project_item' method."
},
"method": {
"type": "string",
"description": "The method to execute",
"enum": [
"get_project",
"get_project_field",
"get_project_item"
]
},
"owner": {
"type": "string",
"description": "If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive."
},
"owner_type": {
"type": "string",
"description": "Owner type",
"enum": [
"user",
"org"
]
},
"project_number": {
"type": "number",
"description": "The project's number."
}
}
},
"name": "projects_get"
}
66 changes: 66 additions & 0 deletions pkg/github/__toolsnaps__/projects_list.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
{
"annotations": {
"readOnlyHint": true,
"title": "List GitHub Projects resources"
},
"description": "Tools for listing GitHub Projects resources.\nUse this tool to list projects for a user or organization, or list project fields and items for a specific project.\n",
"inputSchema": {
"type": "object",
"required": [
"method",
"owner_type",
"owner"
],
"properties": {
"after": {
"type": "string",
"description": "Forward pagination cursor from previous pageInfo.nextCursor."
},
"before": {
"type": "string",
"description": "Backward pagination cursor from previous pageInfo.prevCursor (rare)."
},
"fields": {
"type": "array",
"description": "Field IDs to include when listing project items (e.g. [\"102589\", \"985201\"]). CRITICAL: Always provide to get field values. Without this, only titles returned. Only used for 'list_project_items' method.",
"items": {
"type": "string"
}
},
"method": {
"type": "string",
"description": "The action to perform",
"enum": [
"list_projects",
"list_project_fields",
"list_project_items"
]
},
"owner": {
"type": "string",
"description": "If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive."
},
"owner_type": {
"type": "string",
"description": "Owner type",
"enum": [
"user",
"org"
]
},
"per_page": {
"type": "number",
"description": "Results per page (max 50)"
},
"project_number": {
"type": "number",
"description": "The project's number. Required for 'list_project_fields' and 'list_project_items' methods."
},
"query": {
"type": "string",
"description": "Filter/query string. For list_projects: filter by title text and state (e.g. \"roadmap is:open\"). For list_project_items: advanced filtering using GitHub's project filtering syntax."
}
}
},
"name": "projects_list"
}
60 changes: 60 additions & 0 deletions pkg/github/__toolsnaps__/projects_write.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
{
"annotations": {
"destructiveHint": true,
"title": "Modify GitHub Project items"
},
"description": "Add, update, or delete project items in a GitHub Project.",
"inputSchema": {
"type": "object",
"required": [
"method",
"owner_type",
"owner",
"project_number"
],
"properties": {
"item_id": {
"type": "number",
"description": "The project item ID. Required for 'update_project_item' and 'delete_project_item' methods. For add_project_item, this is the numeric ID of the issue or pull request to add."
},
"item_type": {
"type": "string",
"description": "The item's type, either issue or pull_request. Required for 'add_project_item' method.",
"enum": [
"issue",
"pull_request"
]
},
"method": {
"type": "string",
"description": "The method to execute",
"enum": [
"add_project_item",
"update_project_item",
"delete_project_item"
]
},
"owner": {
"type": "string",
"description": "If owner_type == user it is the handle for the GitHub user account. If owner_type == org it is the name of the organization. The name is not case sensitive."
},
"owner_type": {
"type": "string",
"description": "Owner type",
"enum": [
"user",
"org"
]
},
"project_number": {
"type": "number",
"description": "The project's number."
},
"updated_field": {
"type": "object",
"description": "Object consisting of the ID of the project field to update and the new value for the field. To clear the field, set value to null. Example: {\"id\": 123456, \"value\": \"New Value\"}. Required for 'update_project_item' method."
}
}
},
"name": "projects_write"
}
11 changes: 11 additions & 0 deletions pkg/github/deprecated_tool_aliases.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,4 +28,15 @@ var DeprecatedToolAliases = map[string]string{
"rerun_failed_jobs": "actions_run_trigger",
"cancel_workflow_run": "actions_run_trigger",
"delete_workflow_run_logs": "actions_run_trigger",

// Projects tools consolidated
"list_projects": "projects_list",
"list_project_fields": "projects_list",
"list_project_items": "projects_list",
"get_project": "projects_get",
"get_project_field": "projects_get",
"get_project_item": "projects_get",
"add_project_item": "projects_write",
"update_project_item": "projects_write",
"delete_project_item": "projects_write",
}
Loading