```go title="Go" package main import ( "bufio" "encoding/json" "fmt" "log" "os/exec" ) type MCPRequest struct { Method string `json:"method"` Params MCPParams `json:"params"` } type MCPParams struct { Name string `json:"name"` Arguments map[string]interface{} `json:"arguments"` } func main() { cmd := exec.Command("kreuzberg", "mcp") stdin, err := cmd.StdinPipe() if err != nil { log.Fatalf("create stdin pipe: %v", err) } stdout, err := cmd.StdoutPipe() if err != nil { log.Fatalf("create stdout pipe: %v", err) } if err := cmd.Start(); err != nil { log.Fatalf("start command: %v", err) } request := MCPRequest{ Method: "tools/call", Params: MCPParams{ Name: "extract_file", Arguments: map[string]interface{}{ "path": "document.pdf", "async": true, }, }, } data, err := json.Marshal(request) if err != nil { log.Fatalf("marshal request: %v", err) } fmt.Fprintf(stdin, "%s\n", string(data)) scanner := bufio.NewScanner(stdout) if scanner.Scan() { fmt.Println(scanner.Text()) } if err := cmd.Wait(); err != nil { log.Fatalf("wait for command: %v", err) } } ```