fvm_mcp/README.md
MCP server that mirrors the FVM CLI as tools (stdio transport). Read-only JSON endpoints are passed through verbatim; writes are non-interactive on FVM ≥ 3.2.
Current release status: alpha (0.0.1-alpha.1).
fvm must be installed and available on PATH.>=3.9.0 <4.0.0.cd fvm_mcp
dart pub get
dart run bin/fvm_mcp.dart
MCP client config (source mode):
{
"command": "dart",
"args": ["run", "bin/fvm_mcp.dart"],
"cwd": "/absolute/path/to/repo/fvm_mcp"
}
fvm_mcp releases publish prebuilt binaries on GitHub for Linux, macOS, and Windows.
fvm_mcp-<version>-linux-x64.tar.gzfvm_mcp-<version>-macos.tar.gzfvm_mcp-<version>-windows-x64.zipPATH.MCP client config (binary mode):
{
"command": "fvm_mcp",
"args": []
}
fvm.api.list, fvm.api.releases, fvm.api.context, fvm.api.project.fvm.install, fvm.remove, fvm.use, fvm.global.fvm.flutter, fvm.dart, fvm.exec, fvm.spawn.JSON API flags and response fields follow the FVM docs. Command flags and routing order follow the FVM commands reference.
--fvm-skip-input (≥ 3.2.0).fvm mcp)Add a subcommand to the FVM CLI that constructs a stdio channel and calls FvmMcpServer.start(...). This keeps the MCP surface version-locked to the installed FVM.
// lib/src/commands/mcp_command.dart (inside FVM CLI)
import 'dart:io';
import 'package:dart_mcp/stdio.dart';
import 'package:fvm_mcp/src/server.dart';
import 'package:args/command_runner.dart';
class McpCommand extends Command<int> {
@override
final name = 'mcp';
@override
final description = 'Start the embedded MCP server over stdio.';
@override
Future<int> run() async {
final channel = stdioChannel(input: stdin, output: stdout);
final server = await FvmMcpServer.start(channel: channel);
await server.done;
return 0;
}
}
// In the CLI entry, add: runner.addCommand(McpCommand());
fvm_mcp/pubspec.yamlfvm_mcp/lib/src/server.dart (FVM_MCP_VERSION default)fvm_mcp/CHANGELOG.md section matching the tagged versionfvm-mcp-v<semver> (example: fvm-mcp-v0.0.1-alpha.1).github/workflows/release-fvm-mcp.ymlSHA256SUMS checksum filePATHrelease-fvm-mcp.yml is fully automated:
fvm-mcp-v*.fvm_mcp/CHANGELOG.md contains a section for the tagged version.remove supports specific version removal only.MIT