mirror of
https://github.com/czlonkowski/n8n-mcp.git
synced 2026-01-30 14:32:04 +00:00
Adds zero-configuration anonymous usage statistics to track: - Number of active users with deterministic user IDs - Which MCP tools AI agents use most - What workflows are built (sanitized to protect privacy) - Common errors and issues Key features: - Zero-configuration design with hardcoded write-only credentials - Privacy-first approach with comprehensive data sanitization - Opt-out support via config file and environment variables - Docker-friendly with environment variable support - Multi-process safe with immediate flush strategy - Row Level Security (RLS) policies for write-only access Technical implementation: - Supabase backend with anon key for INSERT-only operations - Workflow sanitization removes all sensitive data - Environment variables checked for opt-out (TELEMETRY_DISABLED, etc.) - Telemetry enabled by default but respects user preferences - Cleaned up all debug logging for production readiness 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
47 lines
1.2 KiB
TypeScript
47 lines
1.2 KiB
TypeScript
#!/usr/bin/env npx tsx
|
|
/**
|
|
* Direct telemetry test with hardcoded credentials
|
|
*/
|
|
|
|
import { createClient } from '@supabase/supabase-js';
|
|
|
|
const TELEMETRY_BACKEND = {
|
|
URL: 'https://ydyufsohxdfpopqbubwk.supabase.co',
|
|
ANON_KEY: 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InlkeXVmc29oeGRmcG9wcWJ1YndrIiwicm9sZSI6ImFub24iLCJpYXQiOjE3Mzc2MzAxMDgsImV4cCI6MjA1MzIwNjEwOH0.LsUTx9OsNtnqg-jxXaJPc84aBHVDehHiMaFoF2Ir8s0'
|
|
};
|
|
|
|
async function testDirect() {
|
|
console.log('🧪 Direct Telemetry Test\n');
|
|
|
|
const supabase = createClient(TELEMETRY_BACKEND.URL, TELEMETRY_BACKEND.ANON_KEY, {
|
|
auth: {
|
|
persistSession: false,
|
|
autoRefreshToken: false,
|
|
}
|
|
});
|
|
|
|
const testEvent = {
|
|
user_id: 'direct-test-' + Date.now(),
|
|
event: 'direct_test',
|
|
properties: {
|
|
source: 'test-telemetry-direct.ts',
|
|
timestamp: new Date().toISOString()
|
|
}
|
|
};
|
|
|
|
console.log('Sending event:', testEvent);
|
|
|
|
const { data, error } = await supabase
|
|
.from('telemetry_events')
|
|
.insert([testEvent]);
|
|
|
|
if (error) {
|
|
console.error('❌ Failed:', error);
|
|
} else {
|
|
console.log('✅ Success! Event sent directly to Supabase');
|
|
console.log('Response:', data);
|
|
}
|
|
}
|
|
|
|
testDirect().catch(console.error);
|