MCPcopy Create free account
hub / github.com/coder/aibridge / main

Function main

example/main.go:24–110  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

22)
23
24func main() {
25 ctx := context.Background()
26 logger := slog.Make(sloghuman.Sink(os.Stderr)).Leveled(slog.LevelDebug)
27
28 // Initialize SQLite database with WAL mode for better concurrency.
29 db, err := sql.Open("sqlite", "aibridge.db?_journal_mode=WAL&_busy_timeout=5000")
30 if err != nil {
31 logger.Fatal(ctx, "open database", slog.Error(err))
32 }
33 defer db.Close()
34 db.SetMaxOpenConns(1) // SQLite only supports one writer at a time.
35
36 if err := initSchema(db); err != nil {
37 logger.Fatal(ctx, "init schema", slog.Error(err))
38 }
39
40 recorder, err := NewSQLiteRecorder(db, logger)
41 if err != nil {
42 logger.Fatal(ctx, "create recorder", slog.Error(err))
43 }
44 defer recorder.Close()
45
46 // Configure providers.
47 providers := []aibridge.Provider{
48 aibridge.NewAnthropicProvider(aibridge.AnthropicConfig{
49 Key: os.Getenv("ANTHROPIC_API_KEY"),
50 }, nil),
51 aibridge.NewOpenAIProvider(aibridge.OpenAIConfig{
52 Key: os.Getenv("OPENAI_API_KEY"),
53 }),
54 }
55
56 // Setup metrics.
57 reg := prometheus.NewRegistry()
58 metrics := aibridge.NewMetrics(reg)
59
60 // Setup tracing
61 tracer := otel.GetTracerProvider().Tracer("exampleTracer")
62
63 // Optional: Configure MCP server for centralized tool injection.
64 // DeepWiki provides free access to public GitHub repo documentation.
65 // See: https://mcp.deepwiki.com
66 var mcpProxy mcp.ServerProxier
67
68 deepwikiProxy, err := mcp.NewStreamableHTTPServerProxy(
69 "deepwiki", // server name (tools prefixed as bmcp_deepwiki_*)
70 "https://mcp.deepwiki.com/mcp", // no auth required for public repos
71 nil, // headers
72 regexp.MustCompile(`^ask_question$`), // allowlist: only ask_question tool
73 nil, // denylist
74 logger.Named("mcp.deepwiki"),
75 tracer,
76 )
77 if err != nil {
78 logger.Fatal(ctx, "create deepwiki mcp proxy", slog.Error(err))
79 }
80
81 mcpProxy = mcp.NewServerProxyManager(map[string]mcp.ServerProxier{"deepwiki": deepwikiProxy}, tracer)

Callers

nothing calls this directly

Calls 13

CloseMethod · 0.95
InitMethod · 0.95
ShutdownMethod · 0.95
NewAnthropicProviderFunction · 0.92
NewOpenAIProviderFunction · 0.92
NewMetricsFunction · 0.92
NewServerProxyManagerFunction · 0.92
NewRequestBridgeFunction · 0.92
initSchemaFunction · 0.85
NewSQLiteRecorderFunction · 0.85
actorMiddlewareFunction · 0.85

Tested by

no test coverage detected