mcp-tavily-search
by y7ut
package cmd
import (
"fmt"
"os"
"strings"
"github.com/mark3labs/mcp-go/server"
"github.com/spf13/cobra"
"github.com/y7ut/mcp-tavily-search/internal/tavily"
"github.com/y7ut/mcp-tavily-search/internal/tool"
)
// debug flag
var debug bool
// RunCmd
// environment variables:
// TRVILY_API_KEY = "your tavily api key"
// TRVILY_INCLUDE_DOMAINS = "domain1,domain2"
// TRVILY_EXCLUDE_DOMAINS = "domain1,domain2"
var RunCmd = &cobra.Command{
Use: "run",
Short: "Run the server",
Run: func(cmd *cobra.Command, args []string) {
trvilyApiKey, _ := os.LookupEnv("TRVILY_API_KEY")
if len(args) > 0 {
trvilyApiKey = args[0]
}
includeDomain := strings.Split(os.Getenv("TRVILY_INCLUDE_DOMAINS"), ",")
excludeDomain := strings.Split(os.Getenv("TRVILY_EXCLUDE_DOMAINS"), ",")
tavily.Init(trvilyApiKey, debug, includeDomain, excludeDomain)
mcpServerRun()
},
}
func init() {
RootCmd.AddCommand(RunCmd)
RunCmd.Flags().BoolVarP(&debug, "debug", "d", false, "Enable debug mode")
}
// mcpServerRun run the mcp server
func mcpServerRun() {
// Create MCP server
s := server.NewMCPServer(
"MCP Tavily Search 🔍",
"1.0.0",
server.WithLogging(),
)
tool.Bind(s)
// Start the stdio server
if err := server.ServeStdio(s); err != nil {
fmt.Printf("Server error: %v\n", err)
}
}