Merge claudedo/5f664041b046456d8e752f90d193c906
This commit is contained in:
@@ -52,6 +52,9 @@ public sealed class InstallerWorkerConfig
|
||||
[JsonPropertyName("claude_bin")]
|
||||
public string ClaudeBin { get; set; } = "claude";
|
||||
|
||||
[JsonPropertyName("external_mcp_port")]
|
||||
public int ExternalMcpPort { get; set; } = 47_822;
|
||||
|
||||
private static readonly JsonSerializerOptions ReadOpts = new()
|
||||
{
|
||||
ReadCommentHandling = JsonCommentHandling.Skip,
|
||||
|
||||
@@ -5,9 +5,23 @@ namespace ClaudeDo.Installer.Steps;
|
||||
public sealed class RegisterMcpStep : IInstallStep
|
||||
{
|
||||
private const string ServerName = "claudedo";
|
||||
private readonly Func<InstallerWorkerConfig> _loadWorkerConfig;
|
||||
|
||||
public RegisterMcpStep(Func<InstallerWorkerConfig>? loadWorkerConfig = null)
|
||||
{
|
||||
_loadWorkerConfig = loadWorkerConfig ?? InstallerWorkerConfig.Load;
|
||||
}
|
||||
|
||||
public string Name => "Register MCP with Claude";
|
||||
|
||||
// Resolves the URL from the persisted worker.config.json rather than ctx.ExternalMcpPort:
|
||||
// an Update run never repopulates ctx from the existing installation, so ctx would still
|
||||
// hold the wizard default (47822) even when the installed config has a different port.
|
||||
// Returns null when the port is 0 — WorkerConfig treats that as "external listener off",
|
||||
// so registering a URL against it would just point Claude at nothing.
|
||||
public static string? ResolveUrl(InstallerWorkerConfig cfg) =>
|
||||
cfg.ExternalMcpPort == 0 ? null : $"http://127.0.0.1:{cfg.ExternalMcpPort}/mcp";
|
||||
|
||||
public async Task<StepResult> ExecuteAsync(InstallContext ctx, IProgress<string> progress, CancellationToken ct)
|
||||
{
|
||||
if (!ctx.RegisterMcpWithClaude)
|
||||
@@ -16,7 +30,12 @@ public sealed class RegisterMcpStep : IInstallStep
|
||||
return StepResult.Ok();
|
||||
}
|
||||
|
||||
var url = $"http://127.0.0.1:{ctx.ExternalMcpPort}/mcp";
|
||||
var url = ResolveUrl(_loadWorkerConfig());
|
||||
if (url is null)
|
||||
{
|
||||
progress.Report("Skipped (external_mcp_port is 0 — the external MCP listener is disabled).");
|
||||
return StepResult.Ok();
|
||||
}
|
||||
|
||||
// Drop any prior registration first so a re-run (e.g. update, changed port)
|
||||
// overwrites cleanly instead of erroring on a duplicate name.
|
||||
|
||||
Reference in New Issue
Block a user