Skip to content

cloudfall-mcp lacks the fleet-declaring tools: add ssh-key, server-type, server #3

Closed

Description

@romamo

Problem

cloudfall-mcp is the agent's entry point to Cloudfall, but two commands that start a project's life are missing from it: init (lay out a project) and add ssh-key|server-type|server (declare the fleet). The readiness evaluation of 2026-09-14 counted 20 of 26 CLI leaf commands covered by the MCP server and listed init, add, and dashboard as absent.

The result is that an agent operating through MCP can validate, audit, plan, and deploy, but cannot declare the first server. It has to fall back to writing YAML by hand, which is precisely the guessing that cloudfall add exists to remove (schema-validated document, project validated afterwards, failed validation rolled back, existing resources never overwritten).

Proposal

Expose in cloudfall-mcp:

  • add_ssh_key(key_file, owner, id?, environment?, description?)
  • add_server_type(id, description?)
  • add_server(id, address, type?, environment?, hostname?, ssh_user?, ssh_port?, description?)

each returning the same envelope as the CLI. init is a judgment call: the MCP server already runs inside a project, so init may belong to the CLI only. Decide and document it either way.

Acceptance

  • The three add_* tools appear in the tool list and are covered by sdk/tests/test_agent_tools.py
  • The MCP instructions string tells the agent these tools write resources into the project and that the project is re-validated afterwards
  • sdk/README.md lists the tools

Activity

  1. romamo commented on Sep 14, 2026

    @romamo
    CollaboratorAuthor

    Implemented in 206f719: cloudfall-mcp now exposes add_ssh_key, add_server_type, and add_server, each returning the cloudfall add envelope, writing into the project only, and re-validating it. They are covered in sdk/tests/test_agent_tools.py, described in the MCP instructions string, and listed in sdk/README.md. cloudfall init stays CLI-only: the server refuses to start outside a project, so the project exists before any tool can be called.

  2. added 2 commits that reference this issue on Sep 15, 2026
    206f719
    1820088
  3. shipmill-romamo commented on Oct 8, 2026

    @shipmill-romamo
    Contributor

    Triage: close confirmed. The triage script flagged this as a hand-close with no merged PR, but the fix went straight to main in 206f719, which is an ancestor of the current main.

    Checked again on main after the treaty port (#14):

    • add ssh-key, add server-type and add server are treaty commands without mcp=False, so cloudfall mcp serve still exposes them as tools (sdk/src/cloudfall/app.py). Only init, dashboard serve and two others opt out
    • sdk/README.md still lists add_ssh-key, add_server-type and add_server
    • init stays CLI-only, as decided above

    One gap, not a reason to reopen: sdk/tests/test_agent_tools.py went away in the port. sdk/tests/test_authoring.py tests the add_* functions, but no MCP-level test checks that the three tools show up in the tool list. The test at sdk/tests/test_agent_server.py that reads --list-tools would be an easy place to add that check.

  4. shipmill-romamo commented on Oct 10, 2026

    @shipmill-romamo
    Contributor

    Triage: close confirmed again (206f719 is on main). It stays closed. The gate keeps re-flagging this hand-close every tick; the question of how to stop that waits on #31.

  5. shipmill-romamo commented on Oct 11, 2026

    @shipmill-romamo
    Contributor

    Triage: close confirmed. The fix, 206f719, is on main, checked 2026-10-11. This marker clears SUSPECT_CLOSE, so the gate stops re-flagging this issue. It comes back only if the issue is reopened and closed again.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions