Skip to main content
Glama

dev-workflow-mcp

An MCP server that gives Claude Code extra tools for everyday development work: reading files, exploring project structure, searching code, checking git state, and generating review checklists.

Install

cd "/Users/asimali/development/mcp servers/dev-workflow-mcp"
npm install

Related MCP server: AI Developer Workspace MCP Server

Add to Claude Code

claude mcp add dev-workflow -- node "/Users/asimali/development/mcp servers/dev-workflow-mcp/server.js"

Option B: Manual config

Add this to your Claude Code MCP config (e.g. .claude.json or the relevant mcpServers block):

{
  "mcpServers": {
    "dev-workflow": {
      "command": "node",
      "args": ["/Users/asimali/development/mcp servers/dev-workflow-mcp/server.js"]
    }
  }
}

The server uses process.cwd() as the project root for all file/search operations, so it reflects whatever directory Claude Code launches it from.

Tools

Tool

Description

read_project_file

Reads and returns the full contents of a file by relative path.

list_project_structure

Lists files/folders recursively from a directory, up to a given depth.

search_code

Searches for a text or regex pattern across .js, .ts, .tsx, .jsx files.

git_info

Returns current branch, git status, and the last 10 commits.

code_review_checklist

Returns a checklist tailored to react, api, or general code, for a given file.

generate_commit_message

Retrieves staged changes and formats them with a conventional commit template.

All tools fail gracefully — errors (missing files, invalid paths, non-git directories, etc.) are returned as readable error messages instead of crashing the server.

Usage Examples

Ask Claude Code to use these tools naturally:

  • "Read package.json" → read_project_file

  • "Show me the project structure" → list_project_structure

  • "Find all imports of React" → search_code

  • "What's the current git status?" → git_info

  • "Give me a code review checklist for this component" → code_review_checklist

  • "Show me what I'm about to commit" → generate_commit_message

Development

# Install dependencies
npm install

# Verify syntax
npm run lint

# Run server (stays open on stdio)
npm start

Requirements

  • Node.js 18+ (uses native modules: fs, path, child_process)

  • Git (for git_info and generate_commit_message tools)

Security

  • Path traversal prevention: All file paths validated against project root

  • Graceful degradation: All tools handle errors without crashing

  • No injection risks: Git commands use template literals with args (safe in Node.js 22+), patterns validated with zod

  • Buffer limits: Large diffs capped at 3000 bytes preview; maxBuffer set to 10MB for git commands

  • Stdio-only: Server uses stdio transport (no network exposure)

Available Tools

6 tools
code_review_checklistCode Review ChecklistA

Returns a tailored code review checklist for a file, based on whether it's React code, API/backend code, or general-purpose code. Use this before or after editing a file to review it systematically.

NameRequiredDescriptionDefault
typeYesThe kind of code to tailor the checklist to.
filepathYesPath to the file being reviewed.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Returns a checklist' implies a non-mutating read, but the description never confirms there are no side effects, nor does it describe the response shape. It adds only modest behavioral context beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the core purpose front-loaded and the usage note following. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter read tool with no annotations and no output schema, the description covers what the tool does and when to use it. It could say more about the checklist's return format, but nothing essential to invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are documented there. The description's mention of React/API/general tailoring loosely maps to the 'type' enum but adds no format or syntax detail beyond what the schema already provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Returns a tailored code review checklist for a file') and explains the tailoring dimension (React vs API/backend vs general). It does not need sibling differentiation since none of the siblings (read_project_file, search_code, git_info, etc.) overlap with checklist generation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this before or after editing a file to review it systematically,' giving a clear usage context. It stops short of naming alternatives or exclusions, so it is not a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_commit_messageGenerate Commit MessageB

Retrieves all staged changes (git diff --staged) and formats them cleanly. Use this to review what's staged before writing a conventional commit message.

NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. "Retrieves" and the underlying git diff --staged command imply a read-only, non-mutating operation, which is useful disclosure. It fails to state prerequisites or edge behavior — that it requires a git repository, that it depends on something actually being staged, or how large diffs are handled — which matters for a git-inspection tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the mechanism front-loaded and the usage hint second; there is no padding. Minor deduction because the opening clause is doing double duty as a description of a tool whose name says something different, which makes the structure feel slightly incoherent rather than wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description covers the core mechanic and the intended moment of use, which is largely sufficient. It is not complete enough given the name/description mismatch and the absence of any annotation profile: an agent cannot tell whether the "clean formatting" output is textual, structured, or truncatable, nor how this differs from git_info.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Parameter count is 0 with 100% schema coverage, so the baseline is 4. The description correctly implies no arguments are required and describes the implicit input (the staged index) that the tool reads instead of parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ("Retrieves all staged changes (git diff --staged)"), but it conflicts with the tool's own name and title, "Generate Commit Message," which promises message generation the description explicitly disclaims. An agent selecting by name could easily expect a commit message and instead get a diff dump, so the purpose is described but not reliably aligned with what the tool is called.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear context ("Use this to review what's staged before writing a conventional commit message"), which is a genuine when-to-use signal. However, it names no alternative and draws no boundary against the sibling git_info, which likely also surfaces repository state, leaving the selection decision partly to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

git_infoGit InfoA

Returns the current git branch, working tree status, and the last 10 commits for the project. Use this to check repository state before making changes or committing.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose the return shape (branch, status, last 10 commits) that no output schema provides. It also implicitly signals a read-only operation via "Returns" and reveals a truncation limit at 10 commits. It stops short of stating failure behavior outside a git repo, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste. The payload is front-loaded and the usage cue follows immediately, with no filler or restated name/title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description does the essential work of naming the returned fields. It leaves minor gaps, such as what specifically constitutes "working tree status" (staged/unstaged/untracked) and behavior outside a repository, but the tool is simple enough that this is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline is 4. The description adds no parameter meaning, but there is nothing to describe.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource with the exact payload enumerated: current branch, working tree status, and last 10 commits. The precision of the returned content makes it unmistakable against siblings like read_project_file, search_code, or generate_commit_message without needing to name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use this to check repository state before making changes or committing" gives clear situational context. It lacks explicit exclusions or named alternatives, but no sibling overlaps enough to create ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_project_structureList Project StructureA

Lists files and folders recursively starting from a directory in the project, up to a given depth. Use this to orient yourself in the project layout before editing or searching.

NameRequiredDescriptionDefault
depthNoMaximum recursion depth. Defaults to 3.
directoryNoDirectory to list, relative to project root. Defaults to ".".

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral burden. It does disclose the recursion behavior and depth cap, and 'Lists' implies a non-mutating read, but it says nothing about output format, handling of large trees, or any failure modes for an invalid directory.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the operation and followed by the use case. No filler, no repetition of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-optional-parameter read tool with no output schema, the description covers the operation, scope, and intended moment of use. The only gap is return-shape/pagination context, which is minor given the tool's low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both 'depth' (default 3) and 'directory' (default '.'). The description restates the recursive/depth concept but adds no syntax, path-format, or boundary guidance beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Lists files and folders'), plus the scope ('recursively starting from a directory in the project, up to a given depth'). It does not explicitly contrast itself with siblings like search_code or read_project_file, but the recursive directory-listing operation is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this to orient yourself in the project layout before editing or searching' gives a clear triggering context and implicitly positions it ahead of search/edit tools. It stops short of naming search_code as the alternative when the goal is finding content rather than layout.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_project_fileRead Project FileA

Reads and returns the full contents of a file in the current project, given a path relative to the project root. Use this to inspect a specific file's contents before editing or discussing it.

NameRequiredDescriptionDefault
filepathYesPath to the file, relative to the project root.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses that it returns 'the full contents' of a file, implying a read-only, non-destructive operation, but says nothing about behavior for missing files, binary/encoding handling, large-file limits, or permissions—gaps that matter for a file-read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, no redundancy, and the core purpose is front-loaded before the usage note. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only tool with a fully covered schema and no output schema, the description is essentially complete: an agent knows what it does, when to use it, and what it returns. Only minor edge-case behavior (errors, encoding) is unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the single parameter is fully documented in the schema ('Path to the file, relative to the project root'). The description restates the same relative-to-root semantics without adding format, extension, or resolution details, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Reads and returns the full contents of a file') with an explicit scope ('in the current project'), which is immediately distinguishable from siblings like list_project_structure and search_code. It does not name those siblings directly, keeping it at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear situational guidance: 'Use this to inspect a specific file's contents before editing or discussing it,' which ties the tool to a concrete workflow. It lacks explicit when-not-to-use or alternative-naming (e.g., use search_code to locate a file), so it falls short of 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_codeSearch CodeA

Searches for a text pattern (plain substring or regex) across all .js, .ts, .tsx, and .jsx files under a directory. Use this to find where a function, variable, string, or pattern is used in the codebase.

NameRequiredDescriptionDefault
patternYesText or regex pattern to search for.
directoryNoDirectory to search, relative to project root. Defaults to ".".

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden. It usefully reveals the searched file extensions and that both plain substring and regex patterns are accepted, but says nothing about case sensitivity, ignore rules (node_modules, .git), result limits, or match/snippet format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with what is searched and scoped by file type, then the use case. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-parameter search tool with no output schema and no annotations, the description covers scope and pattern semantics but leaves out return-shape expectations and search behavior such as traversal/ignore rules. Adequate but with visible gaps an agent would want to know.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters are described in the schema itself. The description's mention that the pattern may be "plain substring or regex" slightly enriches the schema's "Text or regex pattern" but adds no syntax or format detail, so the baseline 3 holds.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (searches) and resource (a text pattern across .js/.ts/.tsx/.jsx files), which implicitly separates it from read_project_file and list_project_structure. It does not name any sibling explicitly, so the differentiation is inferred from the file-type scope rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use this to find where a function, variable, string, or pattern is used in the codebase" gives a clear context for selecting this tool. There is no statement of when NOT to use it or which sibling to prefer for other read/inspection needs, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.1.0
    • First observedcode_review_checklist
    • First observedgenerate_commit_message
    • First observedgit_info
    • First observedlist_project_structure
    • First observedread_project_file
    • First observedsearch_code

TDQS

A3.7/5.0

Scored across 6 tools

Disambiguation4/5

Each tool targets a distinct action and resource: reading a file, listing structure, searching code, checking git state, getting a review checklist, and generating a commit message. The only mild overlap is between git_info and generate_commit_message, both touching repository state, but their descriptions clearly separate status inspection from staged-diff retrieval.

Naming Consistency4/5

Most tools follow a clear verb_noun pattern (read_project_file, list_project_structure, search_code, generate_commit_message). Two deviate to noun phrases (git_info, code_review_checklist), which is a minor inconsistency but still readable and predictable.

Tool Count5/5

Six tools is well-scoped for a focused dev-workflow helper, with each tool covering a distinct facet of inspecting and preparing code changes. No redundant or filler tools pad the set.

Completeness3/5

The surface covers reading, searching, git inspection, and review/commit prep, but it has no write or edit operations despite descriptions referencing 'before editing' and 'before committing' changes. There is no tool to actually apply edits or perform the commit, leaving a notable lifecycle gap.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables ChatGPT to operate authorized local projects through MCP, including reading and modifying code, viewing Git changes, running configured programs, and reading local Codex sessions to continue work.
    40 npm
    7
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables Claude Code to query a local, import-aware graph of a repository, so questions like who calls a function, what breaks if it changes, and what imports a file are answered in one lookup instead of a search-and-read loop. It also persists durable session notes and offers full-text search over past session transcripts, all through MCP tools.
    19 PyPI
    MIT