From 4c433e343fadc232c14ea80dcb9f680c9207cae5 Mon Sep 17 00:00:00 2001 From: Lukasz Raczylo Date: Sun, 7 Jun 2026 13:27:22 +0100 Subject: [PATCH] feat(cmd): stdio entrypoint wiring config+llm+mcp --- .gitignore | 2 +- cmd/captcha-solver-mcp/main.go | 30 ++++++++++++++++++++++++++++++ go.mod | 3 ++- go.sum | 6 ++++++ 4 files changed, 39 insertions(+), 2 deletions(-) create mode 100644 cmd/captcha-solver-mcp/main.go diff --git a/.gitignore b/.gitignore index 26de5b4..2400526 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,4 @@ dist/ *.log .env bin/ -captcha-solver-mcp +/captcha-solver-mcp diff --git a/cmd/captcha-solver-mcp/main.go b/cmd/captcha-solver-mcp/main.go new file mode 100644 index 0000000..8eed5bc --- /dev/null +++ b/cmd/captcha-solver-mcp/main.go @@ -0,0 +1,30 @@ +// Command captcha-solver-mcp runs the captcha solver MCP server over stdio. +package main + +import ( + "context" + "log" + + "github.com/modelcontextprotocol/go-sdk/mcp" + + "github.com/lukaszraczylo/captcha-solver-mcp/internal/config" + "github.com/lukaszraczylo/captcha-solver-mcp/internal/llm" + mcpserver "github.com/lukaszraczylo/captcha-solver-mcp/internal/mcp" +) + +func main() { + cfg, err := config.Load() + if err != nil { + log.Fatalf("config: %v", err) + } + client, err := llm.New(cfg) + if err != nil { + log.Fatalf("llm: %v", err) + } + server := mcp.NewServer(&mcp.Implementation{Name: "captcha-solver-mcp", Version: "v0.1.0"}, nil) + mcpserver.New(client, cfg.Provider, cfg.Model).Register(server) + + if err := server.Run(context.Background(), &mcp.StdioTransport{}); err != nil { + log.Fatalf("server: %v", err) + } +} diff --git a/go.mod b/go.mod index 32b5fa6..da8f9e0 100644 --- a/go.mod +++ b/go.mod @@ -2,9 +2,10 @@ module github.com/lukaszraczylo/captcha-solver-mcp go 1.26.3 +require github.com/modelcontextprotocol/go-sdk v1.2.0 + require ( github.com/google/jsonschema-go v0.3.0 // indirect - github.com/modelcontextprotocol/go-sdk v1.2.0 // indirect github.com/yosida95/uritemplate/v3 v3.0.2 // indirect golang.org/x/oauth2 v0.30.0 // indirect ) diff --git a/go.sum b/go.sum index 54b584d..3bc80f3 100644 --- a/go.sum +++ b/go.sum @@ -1,3 +1,7 @@ +github.com/golang-jwt/jwt/v5 v5.2.2 h1:Rl4B7itRWVtYIHFrSNd7vhTiz9UpLdi6gZhZ3wEeDy8= +github.com/golang-jwt/jwt/v5 v5.2.2/go.mod h1:pqrtFR0X4osieyHYxtmOUWsAWrfe1Q5UVIyoH402zdk= +github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= +github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= github.com/google/jsonschema-go v0.3.0 h1:6AH2TxVNtk3IlvkkhjrtbUc4S8AvO0Xii0DxIygDg+Q= github.com/google/jsonschema-go v0.3.0/go.mod h1:r5quNTdLOYEz95Ru18zA0ydNbBuYoo9tgaYcxEYhJVE= github.com/modelcontextprotocol/go-sdk v1.2.0 h1:Y23co09300CEk8iZ/tMxIX1dVmKZkzoSBZOpJwUnc/s= @@ -6,3 +10,5 @@ github.com/yosida95/uritemplate/v3 v3.0.2 h1:Ed3Oyj9yrmi9087+NczuL5BwkIc4wvTb5zI github.com/yosida95/uritemplate/v3 v3.0.2/go.mod h1:ILOh0sOhIJR3+L/8afwt/kE++YT040gmv5BQTMR2HP4= golang.org/x/oauth2 v0.30.0 h1:dnDm7JmhM45NNpd8FDDeLhK6FwqbOf4MLCM9zb1BOHI= golang.org/x/oauth2 v0.30.0/go.mod h1:B++QgG3ZKulg6sRPGD/mqlHQs5rB3Ml9erfeDY7xKlU= +golang.org/x/tools v0.34.0 h1:qIpSLOxeCYGg9TrcJokLBG4KFA6d795g0xkBkiESGlo= +golang.org/x/tools v0.34.0/go.mod h1:pAP9OwEaY1CAW3HOmg3hLZC5Z0CCmzjAF2UQMSqNARg=