MCP Tracking
Track which tools AI clients call on your MCP server, how often, which clients (Claude, Cursor, Windsurf) drive the most usage, and error rates.
import { BetterMeter } from "@bettermeter/node";
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
const bm = new BetterMeter({
siteId: "my-mcp-server",
apiKey: "bm_...",
});
const server = new McpServer({
name: "my-server",
version: "1.0.0",
});
// Wraps server.tool() — auto-tracks every invocation
bm.wrapMcpServer(server);
// Tools registered after wrapping are automatically tracked
server.tool("search_docs", { query: z.string() }, async (args) => {
// ... your tool logic (unchanged)
});bm.trackTool({
tool: "search_docs",
client: "claude-code",
protocolVersion: "2024-11-05",
durationMs: 250,
success: true,
inputTokens: 150,
outputTokens: 800,
});What gets tracked
Tool names, client names, duration, success/failure, and optional token counts. Tool input parameters and output content are never sent.
MCP Tools Reference
BetterMeter runs as an MCP server for AI assistants. Every CLI command has a matching MCP tool with the bettermeter_ prefix.
{
"mcpServers": {
"bettermeter": {
"command": "npx",
"args": ["bettermeter"]
}
}
}Mutating MCP tools require an exact confirmation phrase (CONFIRM <action> <target>) for the specific action and target before they create, update, delete, scan, or send paid requests.
All analytics tools accept site_id (string), range (today|7d|30d|90d|12m), and limit (number). The bettermeter_export MCP tool supports json and md formats (the CLI export command also supports csv). Usage examples for AI assistants:
bettermeter_live_visitors with activity=truebettermeter_live_displaybettermeter_statsbettermeter_ai_trafficbettermeter_cli_commandsbettermeter_mcp_clientsbettermeter_api_endpoints with range=7dbettermeter_pulse_askbettermeter_pulse_healthbettermeter_pulse_insightsbettermeter_pulse_briefing with period=weeklybettermeter_ad_spend_sync with CONFIRM sync ad spend <site_id>bettermeter_crm_sync with CONFIRM sync crm <connection_id>Full Tool List
Human-traffic tools exclude known and high-confidence automated traffic by default. Set include_bots=true when you explicitly need the unfiltered totals.
Real-Time
bettermeter_live_visitorsbettermeter_live_displayWeb Analytics
bettermeter_statsbettermeter_pagesbettermeter_sourcesbettermeter_ai_trafficbettermeter_botsbettermeter_timeseriesbettermeter_countriesbettermeter_devicesbettermeter_browsersbettermeter_visitorsbettermeter_visitorbettermeter_update_visitorbettermeter_visitor_propertiesbettermeter_tag_visitorbettermeter_eventsbettermeter_campaignsbettermeter_campaign_detailbettermeter_campaign_visitorsbettermeter_keywordsbettermeter_marketingbettermeter_landing_page_screenshotbettermeter_channelsbettermeter_exportCLI Analytics
bettermeter_cli_overviewbettermeter_cli_commandsbettermeter_cli_timeseriesMCP Analytics
bettermeter_mcp_overviewbettermeter_mcp_toolsbettermeter_mcp_clientsbettermeter_mcp_timeseriesAPI Analytics
bettermeter_api_overviewbettermeter_api_endpointsbettermeter_api_timeseriesPaid Media
bettermeter_ad_spendbettermeter_ad_spend_syncbettermeter_ad_creativeCRM & Conversions
bettermeter_conversionsbettermeter_crm_connectionsbettermeter_crm_syncBuilder
bettermeter_dashboardsbettermeter_create_dashboardbettermeter_delete_dashboardbettermeter_reportsbettermeter_create_reportbettermeter_report_previewbettermeter_delete_reportConversion Goals & Evolution
bettermeter_goalsbettermeter_goal_detailbettermeter_create_goalbettermeter_delete_goalbettermeter_suggest_goalsSite Management
bettermeter_sites_listbettermeter_sites_addbettermeter_sites_removebettermeter_sites_infobettermeter_sites_updatebettermeter_installTeam Management
bettermeter_members_listbettermeter_members_addbettermeter_members_removebettermeter_members_update_roleSearch Rankings and AI Visibility
bettermeter_brand_reportbettermeter_brand_configbettermeter_brand_comparebettermeter_brand_alertsbettermeter_ai_mentionsbettermeter_backlinksBilling
bettermeter_billingPulse AI
bettermeter_pulse_askbettermeter_pulse_threadsbettermeter_pulse_threadbettermeter_pulse_insightsbettermeter_pulse_healthbettermeter_pulse_briefingbettermeter_pulse_forecastbettermeter_pulse_comparebettermeter_pulse_alerts_listbettermeter_pulse_alerts_createbettermeter_pulse_alerts_deletebettermeter_pulse_notificationsMeta spend is commercially sensitive and requires EDITOR or ADMIN access in both direct tools and Pulse; VIEWER Pulse catalogs omit only the spend tool. bettermeter_ad_spend_sync calls Meta and updates stored spend, so it also requires the exact phrase CONFIRM sync ad spend <site_id>.