Smart Conversion Debugging MCP Server
Smart Conversion Debugging MCP Server
An MCP server that helps debug conversion tracking issues across GoHighLevel, Meta CAPI, webhooks, and GTM.
Quick Start
# Install dependencies
npm install
# Test tools locally
node test.js
# Run interactive CLI agent
node agent.js
# Start MCP server (for AI client connections)
node index.jsAvailable Tools
Tool | Description |
| Returns stored webhook events |
| Fetch contacts from GoHighLevel |
| Returns Meta CAPI tracked events |
| Returns frontend GTM events |
| Returns error logs |
| Full analysis with issues + fixes |
Connecting to MCP Clients
1. Claude Desktop
Edit your Claude Desktop config file:
Windows: %APPDATA%\Claude\claude_desktop_config.json
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"conversion-debugger": {
"command": "node",
"args": ["D:/first mcp server/index.js"],
"env": {
"USE_MOCK_DATA": "true"
}
}
}
}Restart Claude Desktop after saving. You'll see the tools available in the chat.
2. VS Code with GitHub Copilot
Add to your VS Code settings.json or workspace settings:
{
"github.copilot.chat.mcpServers": {
"conversion-debugger": {
"command": "node",
"args": ["D:/first mcp server/index.js"],
"env": {
"USE_MOCK_DATA": "true"
}
}
}
}Or create .vscode/mcp.json in your workspace:
{
"servers": {
"conversion-debugger": {
"command": "node",
"args": ["${workspaceFolder}/index.js"],
"env": {
"USE_MOCK_DATA": "true"
}
}
}
}3. Cursor IDE
Add to Cursor settings (~/.cursor/mcp.json or project .cursor/mcp.json):
{
"mcpServers": {
"conversion-debugger": {
"command": "node",
"args": ["D:/first mcp server/index.js"],
"env": {
"USE_MOCK_DATA": "true"
}
}
}
}4. Continue.dev
Add to your Continue config (~/.continue/config.json):
{
"experimental": {
"modelContextProtocolServers": [
{
"transport": {
"type": "stdio",
"command": "node",
"args": ["D:/first mcp server/index.js"]
}
}
]
}
}5. Custom MCP Client (Node.js)
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
import { spawn } from "child_process";
const transport = new StdioClientTransport({
command: "node",
args: ["D:/first mcp server/index.js"],
});
const client = new Client({ name: "my-client", version: "1.0.0" });
await client.connect(transport);
// List available tools
const tools = await client.listTools();
console.log(tools);
// Call a tool
const result = await client.callTool({
name: "debugConversion",
arguments: {},
});
console.log(result);
await client.close();Environment Variables
Copy .env.example to .env and configure:
# Use mock data (set to false for live API calls)
USE_MOCK_DATA=true
# GoHighLevel
GHL_API_KEY=your_api_key
GHL_LOCATION_ID=your_location_id
# Meta CAPI
META_ACCESS_TOKEN=your_access_token
META_PIXEL_ID=your_pixel_idExample AI Prompts
Once connected to an MCP client, try these prompts:
"Debug my conversion tracking"
The AI will call
debugConversionand explain the issues
"Show me all GHL contacts from today"
Calls
getGHLContactswith date filters
"Compare webhook events with Meta events"
Calls multiple tools and cross-references data
"Why are some conversions not reaching Meta?"
Full debugging workflow with root cause analysis
Project Structure
first mcp server/
├── index.js # MCP server entry point
├── agent.js # Interactive CLI agent
├── test.js # Tool testing script
├── package.json
├── .env.example
├── config/
│ └── env.js # Environment configuration
├── clients/
│ ├── httpClient.js # HTTP utilities
│ ├── ghlClient.js # GoHighLevel API client
│ └── metaClient.js # Meta CAPI client
├── data/
│ ├── mockData.js # Mock data for testing
│ └── dataProvider.js # Live/mock data switching
└── tools/
├── utils.js
├── getWebhookEvents.js
├── getGHLContacts.js
├── getMetaEvents.js
├── getGTMEvents.js
├── getSystemLogs.js
└── debugConversion.js