Працюйте з Cold Leads у Cursor, Claude Desktop і Windsurf через MCP
- Для кого
- Розробники, які користуються AI-асистентами в Cursor, Claude Desktop або Windsurf
- Проблема
- Копіювати адреси між асистентом, CRM та інструментом перевірки довго, і легко помилитися, а асистент, якого просять знайти контакти, охоче вигадає їх сам.
- Рішення
- Підключений асистент керує вашими контактами, імпортує структуровані рядки, читає синхронізовані розмови, редагує шаблони й чернетки кампаній та створює веб-форми. Надсилання потребує явного підтвердження користувача та підлягає перевіркам згоди, відписки, DNC і лімітів Cold Leads.
- Що ви отримаєте
- Асистент, підключений до ваших контактів, пошти й чернеток кампаній через MCP або Node SDK.
Адреси, ідентифікатори та результати в прикладах ілюстративні. Домен example.com зарезервовано для документації, тож реальна перевірка цих адрес поверне invalid.
Приклади коду однакові для всіх мов, коментарі в них — англійською.
Що пропонує сервер
| Інструмент | Що робить | Вартість |
|---|---|---|
| search_leads | Контакти, які вже є у вашій CRM Cold Leads, на домені компанії (включно з піддоменами), з необов’язковим ключовим словом ролі, яке зіставляється з іменем, локальною частиною e-mail, тегами, нотатками й типом контакту. Повертає e-mail, ім’я, компанію, телефон, стадію, теги, верифікацію та do_not_contact. | Безкоштовно |
| verify_email | Перевірка синтаксису, одноразових доменів, рольових скриньок і MX, а також SMTP-перевірка скриньки й accept-all, коли Cold Leads може відкрити SMTP-з’єднання з поштовим сервером одержувача. Повертає validity, score, reasons, catch_all, disposable і role_account. | 1 кредит |
| CRM, inbox, шаблони, кампанії та веб-інструменти | Імпортуйте й оновлюйте контакти (до 100 структурованих рядків за виклик; CSV/XLSX спершу розбирає асистент). Переглядайте синхронізовані розмови, керуйте шаблонами й чернетками; окремий лист та кампанія надсилаються лише після підтвердження. Веб-заявки мають inquiry, а не автоматичну згоду на холодний outreach. | Безкоштовно; діють ліміти надсилання |
| provision_account_and_get_payment_link, check_provisioning_status | Підключення без ключа: посилання на оплату в Stripe для власника-людини, а потім API-ключ, виданий один раз. Лише в локальному сервері. | Без кредитів |
Cold Leads не має сторонньої бази людей чи компаній. MCP працює лише з підключеним робочим простором. Імпортовані файли мають бути розібрані на структуровані рядки, імпорт нічого не надсилає. Веб-заявки мають статус inquiry; верифікація не є згодою. Масові кампанії залишаються чернетками, доки людина їх не перевірить і не запустить.
- Локальний сервер (stdio): npx -y --allow-git=root github:anttka4cz/mcp-server-coldleads зі змінною COLDLEADS_API_KEY в оточенні. Його не опубліковано в npm; npx встановлює його з GitHub. Потрібен Node.js 20 або новіший. npm 12 блокує встановлення з git, якщо ви їх не дозволите, — саме це й робить --allow-git=root для цієї команди; npm 10 цей прапорець теж приймає.
- Хостований ендпоінт: https://coldleads.app/api/mcp, MCP Streamable HTTP. Використовуйте секретний API-ключ або OAuth ChatGPT. Інструменти керують контактами, розмовами, шаблонами, чернетками кампаній, дозволеною відправкою, веб-формами, пошуком і верифікацією.
- Ключ — це секретний ключ (sk_…) з Налаштування → API-ключі. API, а разом з ним і MCP, входить у тариф Business.
Cursor
Додайте сервер у ~/.cursor/mcp.json, щоб користуватися ним у всіх проєктах, або в .cursor/mcp.json усередині одного проєкту. Локальний сервер:
{
"mcpServers": {
"coldleads": {
"command": "npx",
"args": ["-y", "--allow-git=root", "github:anttka4cz/mcp-server-coldleads"],
"env": { "COLDLEADS_API_KEY": "sk_your_secret_key" }
}
}
}Cursor також підключається до віддалених серверів із власними заголовками, тож хостований ендпоінт працює без Node.js. Cursor підставляє ${env:NAME} в url і headers, тому ключ не потрапляє у файл:
{
"mcpServers": {
"coldleads": {
"url": "https://coldleads.app/api/mcp",
"headers": { "Authorization": "Bearer ${env:COLDLEADS_API_KEY}" }
}
}
}Claude Desktop
- Відкрийте меню Claude в системному рядку меню (а не налаштування всередині вікна чату), виберіть Settings…, відкрийте вкладку Developer і натисніть Edit Config.
- Файл розташований у ~/Library/Application Support/Claude/claude_desktop_config.json на macOS і в %APPDATA%\Claude\claude_desktop_config.json на Windows. Додайте блок нижче й збережіть.
- Повністю закрийте Claude Desktop і запустіть знову: MCP-сервери він завантажує лише під час запуску.
{
"mcpServers": {
"coldleads": {
"command": "npx",
"args": ["-y", "--allow-git=root", "github:anttka4cz/mcp-server-coldleads"],
"env": { "COLDLEADS_API_KEY": "sk_your_secret_key" }
}
}
}Локальні сервери Claude Desktop запускає з цього файлу. Віддалені сервери натомість додаються як конектори в налаштуваннях застосунку, а надсилання заголовка з API-ключем із конектора — бета-функція, доступна лише деяким організаціям, тож локальний сервер — це шлях, який працює для всіх.
Windsurf (Devin Desktop) і Claude Code
2 червня 2026 року Windsurf став Devin Desktop. На панелі Cascade відкрийте меню … (Actions) у правому верхньому куті й натисніть Open MCP config file у розділі MCPs, потім додайте той самий блок mcpServers, що й для Cursor (локальний сервер), і збережіть. Документація Devin вказує для цього файлу шлях ~/.config/devin/mcp_config.json (%APPDATA%\devin\mcp_config.json на Windows); версії Windsurf до перейменування читають ~/.codeium/windsurf/mcp_config.json. Віддалені сервери задаються через url (або serverUrl) із headers:
{
"mcpServers": {
"coldleads": {
"url": "https://coldleads.app/api/mcp",
"headers": { "Authorization": "Bearer sk_your_secret_key" }
}
}
}У Claude Code додайте будь-який із двох варіантів із термінала:
# local stdio server (Node.js 20 or newer)
claude mcp add --env COLDLEADS_API_KEY=sk_your_secret_key --transport stdio coldleads -- npx -y --allow-git=root github:anttka4cz/mcp-server-coldleads
# or the hosted endpoint
claude mcp add --transport http coldleads https://coldleads.app/api/mcp --header "Authorization: Bearer sk_your_secret_key"Промпти, що відповідають справжнім інструментам
- Знайди в моїй CRM Cold Leads контакти на example.com з тегом cto і перевір їхні адреси. (search_leads з domain example.com і role cto, потім verify_email для кожного ліда без do_not_contact: 1 кредит за адресу.)
- Які з моїх контактів Cold Leads на example.com позначені do_not_contact? (Лише search_leads, безкоштовно.)
- Перевір anna@example.com і скажи, чи перевірялася сама скринька. (verify_email; відповідь — у reasons: ok означає, що поштовий сервер прийняв скриньку, smtp_unreachable — що її не перевіряли.)
- Перевір ці п’ять адрес і розсортуй їх за кодами причин на «надсилати», «переглянути» і «відкинути». (verify_email п’ять разів, 5 кредитів.)
- З локальним сервером і поки без ключа: підключи Cold Leads для owner@example.com. (provision_account_and_get_payment_link повертає посилання на оплату, щодо якого рішення ухвалюєте ви, людина.)
Ключове слово ролі зіставляється з іменем, локальною частиною e-mail, тегами, нотатками й типом контакту; поля посади в Cold Leads немає. Позначайте контакти тегами з їхньою роллю (cto, ceo, sales), якщо хочете, щоб пошук за роллю працював. Результати інструментів повертаються як компактний JSON:
{
"status": "success",
"domain": "example.com",
"count": 1,
"source": "crm",
"leads": [
{
"email": "jan.novak@example.com",
"name": "Jan Novák",
"company": "Acme",
"stage": "lead",
"tags": ["cto"],
"verification": { "status": "valid", "score": 75 },
"do_not_contact": false
}
]
}{
"status": "success",
"email": "jan.novak@example.com",
"validity": "valid",
"catch_all": null,
"score": 75,
"reasons": ["smtp_unreachable"],
"disposable": false,
"role_account": false
}Перевірка хостованого ендпоінта з термінала
Ендпоінт не зберігає стану, тож один POST працює без рукостискання initialize. Це також швидкий спосіб переконатися, що ключ дійсний і належить акаунту Business.
# list the tools of the hosted endpoint (free; counts toward 120 requests per minute)
curl -s https://coldleads.app/api/mcp \
-H "Authorization: Bearer $COLDLEADS_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
# call verify_email once (1 credit)
curl -s https://coldleads.app/api/mcp \
-H "Authorization: Bearer $COLDLEADS_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"verify_email","arguments":{"email":"anna@example.com"}}}'Ліміти та вартість
- search_leads безкоштовний і повертає до 50 контактів за виклик (за замовчуванням 10).
- verify_email коштує 1 кредит за виклик, зокрема й для результатів із 30-денного кешу. Відповідь приходить приблизно за 5 секунд: хостований ендпоінт виділяє кожній перевірці 4,5 секунди, а локальний сервер запитує 4 секунди. Коли цей час вичерпано, результат — risky з причиною timeout, і він не кешується; для довшої перевірки POST /api/v1/verify приймає timeout_ms до 30 000.
- Кожен запит до хостованого ендпоінта, зокрема initialize і tools/list, зараховується до ліміту ключа в 120 запитів на хвилину. Локальний сервер звертається до API лише під час викликів інструментів.
- Тариф Business коштує $99 на місяць і містить 10 000 кредитів на місяць; додаткові пакети по 1 000 кредитів коштують $5.
Питання
Чи може асистент знайти нових людей у компанії?
Ні. Cold Leads не має бази людей чи компаній. search_leads охоплює лише контакти у вашому власному робочому просторі Cold Leads. Для імені, яке ви вже знаєте, POST /api/v1/find повертає найімовірнішу адресу з позначкою pattern, якщо поштовий сервер не підтвердив скриньку.
Локальний сервер чи хостований ендпоінт?
Локальний сервер працює в кожному клієнті, який уміє запускати команду, і також підтримує підключення без ключа. Хостованому ендпоінту не потрібен Node.js, але він працює лише в клієнтах, які можуть надсилати власний заголовок Authorization. Обидва виконують ті самі перевірки.
Чому catch_all дорівнює null?
catch_all відомий лише тоді, коли поштовий сервер відповів на перевірку, — це видно з останньої причини ok, catch_all або mailbox_missing. Інакше і хостований ендпоінт, і локальний сервер повертають null: accept-all не перевірявся, тож дивіться в reasons, що саме було перевірено.
Куди потрапляє мій ключ?
У блок env або в заголовок вашої локальної конфігурації MCP. Сервер надсилає його на coldleads.app як Authorization: Bearer. Не вставляйте ключ у чат, а якщо він витече, перевипустіть його в Налаштування → API-ключі.