dapr/dapr · error

MCPServer %q: stdio.command path: %w

Error message

MCPServer %q: stdio.command path: %w

What it means

Error "MCPServer %q: stdio.command path: %w" thrown in dapr/dapr.

Source

Thrown at pkg/internal/loader/validate/mcpserver.go:84

// validateStdioCommand rejects relative commands that resolve outside pwd.
// Bare commands (no separator) are deferred to exec.LookPath at run time;
// absolute paths are explicit user choice and pass through.
func validateStdioCommand(serverName, command string) error {
	if !strings.ContainsRune(command, filepath.Separator) || filepath.IsAbs(command) {
		return nil
	}
	pwd, err := os.Getwd()
	if err != nil {
		return fmt.Errorf("MCPServer %q: cannot determine working directory: %w", serverName, err)
	}
	abs, err := filepath.Abs(command)
	if err != nil {
		return fmt.Errorf("MCPServer %q: stdio.command not resolvable: %w", serverName, err)
	}
	resolved, err := filepath.EvalSymlinks(abs)
	if err != nil {
		if !errors.Is(err, os.ErrNotExist) {
			return fmt.Errorf("MCPServer %q: stdio.command path: %w", serverName, err)
		}
		resolved = abs
	}
	rel, err := filepath.Rel(pwd, resolved)
	if err != nil || strings.HasPrefix(rel, "..") {
		return fmt.Errorf("MCPServer %q: stdio.command must not escape working directory", serverName)
	}
	return nil
}

func validateMCPURL(serverName, transport, rawURL string) error {
	u, err := url.Parse(rawURL)
	if err != nil {
		return fmt.Errorf("MCPServer %q: %s.url is not a valid URL: %w", serverName, transport, err)
	}
	switch u.Scheme {
	case "http", "https":
		// ok

View on GitHub (pinned to 74ad417027)

When it happens

Trigger: Thrown at pkg/internal/loader/validate/mcpserver.go:84 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of dapr/dapr@74ad417027 (2026-08-16). Data as JSON: /api/errors/cd4b18554106b8b0. Report an issue: GitHub.