start_capstone_build
Begin or enhance a guided capstone project to learn all 30 certification task statements through hands-on building.
Instructions
Start or refine a guided capstone build. Build your own project while learning all 30 certification task statements hands-on.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| theme | No | Your project idea or theme. Omit to see the 30 criteria first. |
Implementation Reference
- src/tools/start-capstone-build.ts:67-105 (handler)The handler function for the `start_capstone_build` tool, which manages starting, updating, or returning the state of a capstone build.
async ({ theme }) => { const userId = userConfig.userId; ensureUser(db, userId); // Case 1: No theme — return criteria with instructions if (!theme) { return { content: [{ type: 'text' as const, text: buildResponse(null) }], }; } const activeBuild = getActiveBuild(db, userId); // Case 4: Active build in 'building' status — error if (activeBuild && activeBuild.status === 'building') { return { content: [{ type: 'text' as const, text: "You have an active build in progress. Use capstone_build_step with action 'abandon' to start over.", }], isError: true, }; } // Case 3: Active build in 'shaping' status — update theme if (activeBuild && activeBuild.status === 'shaping') { updateBuildTheme(db, activeBuild.id, theme); return { content: [{ type: 'text' as const, text: buildResponse(theme) }], }; } // Case 2: No active build — create new build createBuild(db, userId, theme); return { content: [{ type: 'text' as const, text: buildResponse(theme) }], }; } ); - Input schema for the `start_capstone_build` tool, defining the optional `theme` parameter.
{ theme: z.string().optional().describe("Your project idea or theme. Omit to see the 30 criteria first."), }, - src/tools/start-capstone-build.ts:60-60 (registration)Registration function that binds the `start_capstone_build` tool to the MCP server.
export function registerStartCapstoneBuild(server: McpServer, db: Database.Database, userConfig: UserConfig): void {