update_project_view
Modify a GitHub project view's name or layout to organize tasks and track progress effectively.
Instructions
Update a view in a GitHub project
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes | ||
| viewId | Yes | ||
| name | No | ||
| layout | No |
Input Schema (JSON Schema)
{
"properties": {
"layout": {
"enum": [
"board",
"table",
"timeline",
"roadmap"
]
},
"name": {
"type": "string"
},
"projectId": {
"type": "string"
},
"viewId": {
"type": "string"
}
},
"required": [
"projectId",
"viewId"
],
"type": "object"
}
Implementation Reference
- The core handler function that executes the GitHub GraphQL mutation to update a project view's name and/or layout.async updateProjectView(data: { projectId: string; viewId: string; name?: string; layout?: 'board' | 'table' | 'timeline' | 'roadmap'; }): Promise<ProjectView> { try { const mutation = ` mutation($input: UpdateProjectV2ViewInput!) { updateProjectV2View(input: $input) { projectV2View { id name layout } } } `; interface UpdateViewResponse { updateProjectV2View: { projectV2View: { id: string; name: string; layout: string; } } } const input: Record<string, any> = { projectId: data.projectId, id: data.viewId }; if (data.name) { input.name = data.name; } if (data.layout) { input.layout = data.layout.toUpperCase(); } const response = await this.factory.graphql<UpdateViewResponse>(mutation, { input }); const view = response.updateProjectV2View.projectV2View; return { id: view.id, name: view.name, layout: view.layout.toLowerCase() as 'board' | 'table' | 'timeline' | 'roadmap', fields: [], sortBy: [], groupBy: undefined, filters: [] }; } catch (error) { throw this.mapErrorToMCPError(error); } }
- Zod schema defining input arguments for the update_project_view tool: projectId, viewId, optional name and layout.// Schema for update_project_view tool export const updateProjectViewSchema = z.object({ projectId: z.string().min(1, "Project ID is required"), viewId: z.string().min(1, "View ID is required"), name: z.string().optional(), layout: z.enum(["board", "table", "timeline", "roadmap"]).optional(), }); export type UpdateProjectViewArgs = z.infer<typeof updateProjectViewSchema>;
- src/infrastructure/tools/ToolRegistry.ts:176-176 (registration)Registers the updateProjectViewTool in the central ToolRegistry during initialization.this.registerTool(updateProjectViewTool);
- src/index.ts:329-330 (registration)Tool dispatcher in main server that routes 'update_project_view' calls to ProjectManagementService.updateProjectView.case "update_project_view": return await this.service.updateProjectView(args);
- ToolDefinition export including name, description, schema reference, and usage examples for update_project_view.export const updateProjectViewTool: ToolDefinition<UpdateProjectViewArgs> = { name: "update_project_view", description: "Update a view in a GitHub project", schema: updateProjectViewSchema as unknown as ToolSchema<UpdateProjectViewArgs>, examples: [ { name: "Update view to timeline", description: "Change a view's name and layout to timeline", args: { projectId: "PVT_kwDOLhQ7gc4AOEbH", viewId: "PVV_lADOLhQ7gc4AOEbHzM4AOAL9", name: "Development Timeline", layout: "timeline" } } ] };