Back to Browse

Mirrorkit Go MCP Server

Developer ToolsLow Risk10.0MCP RegistryRemote
Free

Server data from the Official MCP Registry

AI agent testing: replay real sessions against a rebuilt staging environment to catch regressions.

About

AI agent testing: replay real sessions against a rebuilt staging environment to catch regressions.

Remote endpoints: streamable-http: https://api.runmirrors.com/mcp

Security Report

10.0
Low Risk10.0Low Risk

Valid MCP server (1 strong, 0 medium validity signals). No known CVEs in dependencies. Imported from the Official MCP Registry.

Endpoint verified · Requires authentication · 1 issue found

Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.

Permissions Required

This plugin requests these system permissions. Most are normal for its category.

HTTP Network Access

Connects to external APIs or services over the internet.

How to Connect

Remote Plugin

No local installation needed. Your AI client connects to the remote endpoint directly.

Add this to your MCP configuration to connect:

{
  "mcpServers": {
    "com-runmirrors-mirrors": {
      "url": "https://api.runmirrors.com/mcp"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

mirrorkit (Go)

A lightweight, drop-in production trace collector for LLM agents — the Go sibling of the Python mirrorkit and TypeScript mirrorkit (npm) packages.

It does exactly one thing: take traces you hand it and send them to your Mirrors backend — batched in the background, non-blocking, and safe (it never panics into your app after Init). It does not instrument SDKs and does not run agents; you build the trace, it ships it.

Install

go get github.com/ai-singhal/mirrorkit-go

Requires Go ≥ 1.21. Zero dependencies (standard library only).

Usage

package main

import (
	"time"

	mirrorkit "github.com/ai-singhal/mirrorkit-go"
)

func main() {
	mirrorkit.Init(mirrorkit.Options{APIKey: "mk_live_...", Project: "my-agent"})
	defer mirrorkit.Shutdown(5 * time.Second)

	mirrorkit.LogTrace([]mirrorkit.Message{
		mirrorkit.SystemMessage("You are a helpful assistant."),
		mirrorkit.UserMessage("What's the weather in Paris?"),
		mirrorkit.AssistantMessage("It's 18C and sunny."),
	}, mirrorkit.WithModel("claude-opus-4-8"))
}

Each trace is enqueued and flushed to {endpoint}/api/collect by a background goroutine (Authorization: Bearer <apiKey>, body {project, traces}).

Tool calls

Build tool-call and tool-result messages with the helpers:

mirrorkit.LogTrace([]mirrorkit.Message{
	mirrorkit.UserMessage("Cancel booking BK-4471."),
	mirrorkit.AssistantToolCalls(
		mirrorkit.NewToolCall("call_1", "cancel_booking", map[string]any{"id": "BK-4471"}),
	),
	mirrorkit.ToolResult("call_1", `{"status":"cancelled"}`),
	mirrorkit.AssistantMessage("Done — BK-4471 is cancelled."),
})

Options

mirrorkit.Init(mirrorkit.Options{
	APIKey:        "mk_live_...",           // required
	Project:       "my-agent",              // default "default"
	Endpoint:      "https://api.mirror.dev", // else MIRRORKIT_ENDPOINT / MIRROR_ENDPOINT / prod
	FlushInterval: 2 * time.Second,         // ms between background flushes
	MaxBatch:      50,                      // max traces per POST
	MaxQueue:      10_000,                  // in-memory cap; oldest dropped past this
	Debug:         false,                   // internal debug logs (or MIRRORKIT_DEBUG=1)
})

Endpoint resolution: Options.EndpointMIRRORKIT_ENDPOINTMIRROR_ENDPOINT → the production default.

Lifecycle

mirrorkit.Flush(5 * time.Second)     // block until the queue drains
mirrorkit.Shutdown(5 * time.Second)  // stop the background goroutine (flushes first)

Prefer one collector per process via the package-level Init / LogTrace / Flush / Shutdown. For multiple independent collectors, use NewClient and call LogTrace / Flush / Shutdown on the returned *Client.

Testing

cd mirrorkit-go && go vet ./... && go test ./...

Reviews

No reviews yet

Be the first to review this server!