{"name":"io.github.programinglive/dev-workflow-mcp-server","slug":"programinglive-dev-workflow-mcp-server","title":"Dev Workflow MCP Server","description":"MCP server to enforce development workflow discipline","url":"https://mcp.market/server/programinglive-dev-workflow-mcp-server","rating":null,"grade":"C","score":55,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":16,"stars":1,"forks":0,"downloads_week":null,"last_push_at":"2026-07-13T02:22:57.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/programinglive/dev-workflow-mcp-server","website":"https://devworkflow.programinglive.com/","version":"1.4.6","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"@programinglive/dev-workflow-mcp-server","version":"1.4.6","transport":{"type":"stdio"}}],"tools":[{"name":"check_ready_to_commit","description":"Check if all workflow steps are completed and you're ready to commit & push.","write_action":false,"price_micros":0,"input_schema":null},{"name":"commit_and_push","description":"Automatically run git add, commit, and push once the ready check passes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"complete_task","description":"Mark the task as complete after successful commit & push. Resets workflow for next task.","write_action":false,"price_micros":0,"input_schema":null},{"name":"continue_workflow","description":"Get guidance on the next workflow step. Automatically performs the ready check when appropriate.","write_action":false,"price_micros":0,"input_schema":null},{"name":"create_documentation","description":"Mark that documentation has been created/updated. This is required before committing.","write_action":true,"price_micros":0,"input_schema":null},{"name":"create_tests","description":"Mark that tests covering the change have been created.","write_action":true,"price_micros":0,"input_schema":null},{"name":"drop_task","description":"Abandon the current task and reset the workflow without completing it.","write_action":true,"price_micros":0,"input_schema":null},{"name":"force_complete_task","description":"Force completion of the current task even if workflow steps are incomplete. Records history entry and resets the workflow.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_workflow_status","description":"Get current workflow status and what needs to be done next.","write_action":false,"price_micros":0,"input_schema":null},{"name":"mark_bug_fixed","description":"Mark that the bug/feature is fixed. Reminder: Now you MUST create tests!","write_action":false,"price_micros":0,"input_schema":null},{"name":"perform_release","description":"Record release details after committing and pushing your changes.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_summary","description":"Get a project knowledge summary that aggregates completed tasks, task types, and recent activity to help understand the project and fix bugs faster over time.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_summary_data","description":"Get the persisted project knowledge summary from a structured JSON file (project-summary.json). Falls back to in-memory if the file doesn't exist. This file can be used as a simple database for future features.","write_action":false,"price_micros":0,"input_schema":null},{"name":"project_summary_db","description":"Get the per-user project knowledge summary from SQLite. Use DEV_WORKFLOW_USER_ID env var to isolate users.","write_action":false,"price_micros":0,"input_schema":null},{"name":"rerun_workflow","description":"Reset and restart the current task from the beginning. Useful when you want to replay the entire workflow from start to finish.","write_action":false,"price_micros":0,"input_schema":null},{"name":"run_full_workflow","description":"Execute every workflow step in sequence using the provided arguments (mark fixed → tests → run tests → docs → ready check → commit → release → complete).","write_action":true,"price_micros":0,"input_schema":null},{"name":"run_tests","description":"Record test results. NEVER commit if tests fail! Only proceed if all tests are green.","write_action":true,"price_micros":0,"input_schema":null},{"name":"skip_tests","description":"Record that tests were intentionally skipped, with a justification.","write_action":false,"price_micros":0,"input_schema":null},{"name":"start_task","description":"Start a new coding task. This is the first step - be conscious about what you're coding.","write_action":false,"price_micros":0,"input_schema":null},{"name":"view_history","description":"View workflow history of completed tasks.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":55,"grade":"C","scanned_at":"2026-10-01T23:12:22.177Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-01T23:12:22.139Z","components":{"code":{"score":3,"max":25,"notes":["42 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":12,"max":15,"notes":["last push 81 days ago"]},"identity":{"score":9,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"install.script","severity":"medium","component":"code","title":"npm install lifecycle script present"},{"id":"install.script","severity":"medium","component":"code","title":"npm install lifecycle script present","evidence":"package.json: … index.js\", \"prepare\": \"husky\", \"postinstall\": \"node install.js\", \"release\": \"node…"},{"id":"exec.shell-concat","severity":"high","component":"code","title":"Shell command built from a string (injection risk)","evidence":"tools/handlers.js: …try { if (commitBody) { await exec( `git commit -m ${utils.shellEscape(generatedSummary)} -m ${utils.shellEscape(commitBody)}` );…"}],"inputs":{"packages":[{"registryType":"npm","identifier":"@programinglive/dev-workflow-mcp-server","version":"1.4.6","found":true,"license":"MIT","hasInstallScripts":true,"dependencyCount":6,"publishedAt":"2025-11-27T16:40:13.455Z","repositoryUrl":"git+https://github.com/programinglive/dev-workflow-mcp-server.git"}],"repo":{"found":true,"owner":"programinglive","repo":"dev-workflow-mcp-server","archived":false,"pushedAt":"2026-07-13T02:22:57Z","stars":1,"forks":0,"openIssues":1,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/75464690?v=4","ownerCreatedAt":"2020-12-04T04:27:27Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/75464690?v=4&s=128","source":"github"},"presence":{"stars":1,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-07-13T02:22:57.000Z","score":16}}}},"grade_history":[],"reviews":[]}