Skip to content

Align .claude/ tooling with the modular FastMCP architecture #2

Description

@AndreaV-Lsi

Problem

The .claude/ tooling still describes the legacy single-file server
(openproject-mcp.py with list_tools() / call_tool() dispatch). The real code is modular
FastMCP
: tools self-register via @mcp.tool in src/tools/*.py, with HTTP in src/client.py
and the server assembled in src/server.py. Anyone following the .claude commands today is led to
the wrong architecture.

Scope — files to change

  • .claude/config.json
    • primaryFiles lists openproject-mcp.py → should point at openproject-mcp-fastmcp.py and
      src/tools/*.py / src/client.py.
    • runCommand = uv run python openproject-mcp.pyuv run python openproject-mcp-fastmcp.py.
    • alwaysInclude references a non-existent .env.example → actual file is env_example.txt
      (see also the README fixups issue).
  • .claude/commands/add-tool.md — rewrite steps 2–4 ("add to list_tools()", "implement in
    call_tool()") to the real pattern: add a @mcp.tool function in the right
    src/tools/<domain>.py, a Pydantic input model (subclassing CoercibleModel where wrapped), and
    a client method in src/client.py. Drop "single-file architecture".
  • .claude/commands/review-tool.md — replace list_tools() / call_tool() language with the
    decorator/module pattern.

Out of scope

  • Any runtime Python change.
  • Rewriting the .claude/README.md wholesale.

Acceptance criteria

  • The .claude config and commands describe steps that actually work against the current src/
    layout; no references to openproject-mcp.py, list_tools(), or call_tool() remain.

Type: docs/tooling, low risk. Label: backlog.

Metadata

Metadata

Assignees

No one assigned

    Labels

    backlogLogged future work item, not yet scheduled

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions