|
3 | 3 | "title": "Read project information", |
4 | 4 | "readOnlyHint": true |
5 | 5 | }, |
6 | | - "description": "Perform read operations on GitHub Projects V2 for a user or organization.\n\nAvailable methods:\n- get_project: Get details of a specific project\n- list_projects: List all projects for a user or organization\n- get_project_field: Get details of a specific project field\n- list_project_fields: List all fields in a project\n- get_project_item: Get details of a specific project item\n- list_project_items: List all items in a project with optional filtering\n\n**Recommended workflow:**\n1. Use list_projects to discover available projects\n2. Use list_project_fields to get field definitions and IDs (essential for step 3)\n3. Use list_project_items with 'fields' parameter (using IDs from step 2) to get items with custom field values\n4. Optionally use 'query' parameter to filter items (e.g., 'is:open', 'assignee:@me', '-is:archived')\n\nAll methods require owner and owner_type parameters. Additional parameters vary by method.", |
| 6 | + "description": "Read operations for GitHub Projects V2.\n\nMethods: get_project, list_projects, get_project_field, list_project_fields, get_project_item, list_project_items\n\n**For list_project_items:**\n1. Call list_project_fields FIRST for field IDs\n2. Use 'query' to filter (e.g., 'is:open priority:p1')\n3. Use 'fields' with IDs from step 1\n\nExamples: query='is:open priority:p1', query='is:closed priority:p1 milestone:\"X\" assignee:@me', query='unblocks:*copilot*'", |
7 | 7 | "inputSchema": { |
8 | 8 | "properties": { |
9 | 9 | "after": { |
10 | | - "description": "Cursor for pagination. Use the endCursor from the previous page's PageInfo for GraphQL APIs.", |
| 10 | + "description": "Next page cursor (from pageInfo.endCursor)", |
| 11 | + "type": "string" |
| 12 | + }, |
| 13 | + "before": { |
| 14 | + "description": "Previous page cursor (from pageInfo.startCursor)", |
11 | 15 | "type": "string" |
12 | 16 | }, |
13 | 17 | "field_id": { |
14 | | - "description": "The field's ID. Required for: get_project_field.", |
| 18 | + "description": "Field ID (required for get_project_field)", |
15 | 19 | "type": "number" |
16 | 20 | }, |
17 | 21 | "fields": { |
18 | | - "description": "Specific list of field IDs to include in the response (e.g. [\"102589\", \"985201\", \"169875\"]). If not provided, only the title field is included. Used by: get_project_item, list_project_items.\n\n**Important:** To get field IDs, you must first call this tool with method=\"list_project_fields\" to retrieve all available fields and their IDs for the project. Then use those field IDs here to include field values in item responses. Without specifying field IDs, you won't get custom field values like Status, Priority, etc.", |
| 22 | + "description": "Field IDs to include (e.g. [\"102589\", \"985201\"]). CRITICAL: Always provide to get field values. Without this, only titles returned. Get IDs from list_project_fields first.", |
19 | 23 | "items": { |
20 | 24 | "type": "string" |
21 | 25 | }, |
22 | 26 | "type": "array" |
23 | 27 | }, |
24 | 28 | "item_id": { |
25 | | - "description": "The item's ID. Required for: get_project_item.", |
| 29 | + "description": "Item ID (required for get_project_item)", |
26 | 30 | "type": "number" |
27 | 31 | }, |
28 | 32 | "method": { |
29 | | - "description": "The read operation to perform.\nOptions are:\n- get_project: Get details of a specific project (requires: project_number)\n- list_projects: List projects (optional: query, per_page)\n- get_project_field: Get a specific field (requires: project_number, field_id)\n- list_project_fields: List project fields (requires: project_number, optional: per_page) - **Call this first before list_project_items to obtain field IDs**\n- get_project_item: Get a specific item (requires: project_number, item_id, optional: fields)\n- list_project_items: List project items (requires: project_number, optional: query, per_page, fields) - **Use 'fields' parameter with IDs from list_project_fields to include custom field values**\n", |
| 33 | + "description": "Read operation: get_project, list_projects, get_project_field, list_project_fields (call FIRST for IDs), get_project_item, list_project_items (use query + fields)", |
30 | 34 | "enum": [ |
31 | 35 | "get_project", |
32 | 36 | "list_projects", |
|
38 | 42 | "type": "string" |
39 | 43 | }, |
40 | 44 | "owner": { |
41 | | - "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.", |
| 45 | + "description": "GitHub username or org name (case-insensitive)", |
42 | 46 | "type": "string" |
43 | 47 | }, |
44 | 48 | "owner_type": { |
|
49 | 53 | ], |
50 | 54 | "type": "string" |
51 | 55 | }, |
52 | | - "perPage": { |
53 | | - "description": "Results per page for pagination (min 1, max 100)", |
54 | | - "maximum": 100, |
55 | | - "minimum": 1, |
56 | | - "type": "number" |
57 | | - }, |
58 | 56 | "per_page": { |
59 | | - "description": "Number of results per page (max 100, default: 30). Used by: list_projects, list_project_fields, list_project_items.", |
| 57 | + "description": "Results per page (max 20)", |
60 | 58 | "type": "number" |
61 | 59 | }, |
62 | 60 | "project_number": { |
63 | | - "description": "The project's number. Required for: get_project, get_project_field, list_project_fields, get_project_item, list_project_items.", |
| 61 | + "description": "Project number (required for most methods)", |
64 | 62 | "type": "number" |
65 | 63 | }, |
66 | 64 | "query": { |
67 | | - "description": "Search query to filter results. Used by: list_projects (matches title and description), list_project_items (filters items using GitHub's project query syntax).\n\nFor list_project_items, supports:\n- State filters: 'is:open', 'is:closed', '-is:archived' (use '-' to negate)\n- Assignee filters: 'assignee:@me', 'assignee:username', 'no:assignee'\n- Label filters: 'label:bug', 'label:\"needs review\"'\n- Field filters: 'status:\"In Progress\"', 'priority:high'\n- Combining filters: 'assignee:@me status:\"In Progress\" is:open'\nExamples: 'is:open -is:archived', 'assignee:@me is:open', 'label:bug status:todo'", |
| 65 | + "description": "Filter string (CRITICAL for list_project_items). Combine filters by SPACE for logical AND (order doesn't matter): e.g. 'is:open is:issue priority:p1 label:bug'. **Content Type:** Use 'is:issue' for issues, 'is:pr' (or 'is:pull-request') for pull requests. Examples: 'is:open is:issue priority:p1', 'is:closed is:pr label:bug', 'is:open is:issue assignee:@me', 'is:pr label:bug priority:high'. Field names with spaces use hyphens (e.g., 'parent-issue:\"github/github-mcp-server#1234\"'). Filters: is:issue/pr/open/closed/merged, assignee:@me/username, label:name, status:value, priority:p1, updated:\u003e@today-7d, title:*text*, -label:wontfix (negate), label:bug,critical (OR with comma), priority:1..3 (range), no:assignee, has:label, iteration:@current", |
68 | 66 | "type": "string" |
69 | 67 | } |
70 | 68 | }, |
|
0 commit comments