MCPcopy Index your code
hub / github.com/github/gh-aw / appendMCPScriptToolFile

Function appendMCPScriptToolFile

pkg/workflow/mcp_setup_generator.go:463–518  ·  view source on GitHub ↗
(yaml *strings.Builder, workflowData *WorkflowData, toolName string, toolConfig *MCPScriptToolConfig)

Source from the content-addressed store, hash-verified

461}
462
463func appendMCPScriptToolFile(yaml *strings.Builder, workflowData *WorkflowData, toolName string, toolConfig *MCPScriptToolConfig) error {
464 if toolConfig.Script != "" {
465 toolScript := GenerateMCPScriptJavaScriptToolScript(toolConfig)
466 jsDelimiter := GenerateHeredocDelimiterFromContent("MCP_SCRIPTS_JS_"+strings.ToUpper(toolName), toolScript)
467 if err := ValidateHeredocContent(toolScript, jsDelimiter); err != nil {
468 return fmt.Errorf("mcp-scripts tool %q (js): %w", toolName, err)
469 }
470 fmt.Fprintf(yaml, " cat > \"${RUNNER_TEMP}/gh-aw/mcp-scripts/%s.cjs\" << '%s'\n", toolName, jsDelimiter)
471 for _, line := range FormatJavaScriptForYAML(toolScript) {
472 yaml.WriteString(line)
473 }
474 fmt.Fprintf(yaml, " %s\n", jsDelimiter)
475 return nil
476 }
477 if toolConfig.Run != "" {
478 toolScript := GenerateMCPScriptShellToolScript(toolConfig)
479 shDelimiter := GenerateHeredocDelimiterFromContent("MCP_SCRIPTS_SH_"+strings.ToUpper(toolName), toolScript)
480 if err := ValidateHeredocContent(toolScript, shDelimiter); err != nil {
481 return fmt.Errorf("mcp-scripts tool %q (sh): %w", toolName, err)
482 }
483 fmt.Fprintf(yaml, " cat > \"${RUNNER_TEMP}/gh-aw/mcp-scripts/%s.sh\" << '%s'\n", toolName, shDelimiter)
484 for line := range strings.SplitSeq(toolScript, "\n") {
485 yaml.WriteString(" " + line + "\n")
486 }
487 fmt.Fprintf(yaml, " %s\n", shDelimiter)
488 fmt.Fprintf(yaml, " chmod +x \"${RUNNER_TEMP}/gh-aw/mcp-scripts/%s.sh\"\n", toolName)
489 return nil
490 }
491 if toolConfig.Py != "" {
492 toolScript := GenerateMCPScriptPythonToolScript(toolConfig)
493 pyDelimiter := GenerateHeredocDelimiterFromContent("MCP_SCRIPTS_PY_"+strings.ToUpper(toolName), toolScript)
494 if err := ValidateHeredocContent(toolScript, pyDelimiter); err != nil {
495 return fmt.Errorf("mcp-scripts tool %q (py): %w", toolName, err)
496 }
497 fmt.Fprintf(yaml, " cat > \"${RUNNER_TEMP}/gh-aw/mcp-scripts/%s.py\" << '%s'\n", toolName, pyDelimiter)
498 for line := range strings.SplitSeq(toolScript, "\n") {
499 yaml.WriteString(" " + line + "\n")
500 }
501 fmt.Fprintf(yaml, " %s\n", pyDelimiter)
502 fmt.Fprintf(yaml, " chmod +x \"${RUNNER_TEMP}/gh-aw/mcp-scripts/%s.py\"\n", toolName)
503 return nil
504 }
505 if toolConfig.Go != "" {
506 toolScript := GenerateMCPScriptGoToolScript(toolConfig)
507 goDelimiter := GenerateHeredocDelimiterFromContent("MCP_SCRIPTS_GO_"+strings.ToUpper(toolName), toolScript)
508 if err := ValidateHeredocContent(toolScript, goDelimiter); err != nil {
509 return fmt.Errorf("mcp-scripts tool %q (go): %w", toolName, err)
510 }
511 fmt.Fprintf(yaml, " cat > \"${RUNNER_TEMP}/gh-aw/mcp-scripts/%s.go\" << '%s'\n", toolName, goDelimiter)
512 for line := range strings.SplitSeq(toolScript, "\n") {
513 yaml.WriteString(" " + line + "\n")
514 }
515 fmt.Fprintf(yaml, " %s\n", goDelimiter)
516 }
517 return nil
518}
519
520func generateMCPGatewaySetup(yaml *strings.Builder, tools map[string]any, mcpTools []string, engine CodingAgentEngine, workflowData *WorkflowData, hasAgenticWorkflows bool) error {

Callers 1

generateMCPScriptsSetupFunction · 0.85

Tested by

no test coverage detected