Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия | |||
| vm:n8n_mcp:02-install_windows_clien_claude [2025/08/13 14:21] – удалено - внешнее изменение (Дата неизвестна) 127.0.0.1 | vm:n8n_mcp:02-install_windows_clien_claude [2025/08/13 14:21] (текущий) – ↷ Имя страницы vm:n8n_mcp:03-install_windows_clien_claude изменено на vm:n8n_mcp:02-install_windows_clien_claude admin | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| + | ====== Настройка Claude Desktop на Windows с MCP сервером n8n (HTTP) через client-wrapper.js ====== | ||
| + | ==== Введение ==== | ||
| + | В этой инструкции описан полный процесс установки и настройки Claude Desktop на Windows с подключением к вашему MCP HTTP серверу n8n с помощью специального локального прокси-скрипта client-wrapper.js. Это необходимо, | ||
| + | |||
| + | ==== Требования ==== | ||
| + | • Windows 10 или новее | ||
| + | • Установленный Node.js (для запуска client-wrapper.js) | ||
| + | • MCP сервер n8n, запущенный по HTTP (например, | ||
| + | • Файл client-wrapper.js (локальная прослойка проксирующая запросы с stdio в HTTP MCP) | ||
| + | • Доступ к файлу конфигурации Claude Desktop | ||
| + | |||
| + | ==== Шаг 1. Установка Node.js на Windows ==== | ||
| + | 1. Перейдите на официальный сайт: https:// | ||
| + | 2. Скачайте версию LTS для Windows. | ||
| + | 3. Запустите инсталлятор и следуйте инструкциям. | ||
| + | 4. В процессе установки убедитесь, | ||
| + | 5. По завершении откройте " | ||
| + | node -v | ||
| + | |||
| + | Если версия отображается — установка прошла успешно. | ||
| + | |||
| + | ==== Шаг 2. Сохранение файла client-wrapper.js ==== | ||
| + | 1. Создайте папку, например, | ||
| + | 2. Создайте в этой папке файл client-wrapper.js. | ||
| + | 3. Скопируйте и вставьте в него следующий код: | ||
| + | |||
| + | < | ||
| + | const http = require(' | ||
| + | const https = require(' | ||
| + | |||
| + | const url = process.env.MCP_SERVER_URL; | ||
| + | const token = process.env.MCP_AUTH_TOKEN; | ||
| + | |||
| + | if (!url) { | ||
| + | console.error(' | ||
| + | process.exit(1); | ||
| + | } | ||
| + | |||
| + | if (!token) { | ||
| + | console.error(' | ||
| + | process.exit(1); | ||
| + | } | ||
| + | |||
| + | const { stdin, stdout } = process; | ||
| + | stdin.setEncoding(' | ||
| + | |||
| + | let buffer = ''; | ||
| + | |||
| + | stdin.on(' | ||
| + | buffer += chunk; | ||
| + | let newlineIndex; | ||
| + | while ((newlineIndex = buffer.indexOf(' | ||
| + | const rawMsg = buffer.slice(0, | ||
| + | buffer = buffer.slice(newlineIndex + 1); | ||
| + | |||
| + | if (!rawMsg) continue; | ||
| + | |||
| + | let msg; | ||
| + | try { | ||
| + | msg = JSON.parse(rawMsg); | ||
| + | } catch (e) { | ||
| + | console.error(' | ||
| + | continue; | ||
| + | } | ||
| + | |||
| + | // Проверка на обязательные поля | ||
| + | if ((msg.id === undefined || msg.method === undefined) && !msg.result && !msg.error) { | ||
| + | console.error(' | ||
| + | continue; | ||
| + | } | ||
| + | |||
| + | postToMcp(msg) | ||
| + | .then((response) => { | ||
| + | if (msg.id !== undefined && response.id === undefined) { | ||
| + | response.id = msg.id; | ||
| + | } | ||
| + | stdout.write(JSON.stringify(response) + ' | ||
| + | }) | ||
| + | .catch((err) => { | ||
| + | const errorResponse = { | ||
| + | jsonrpc: ' | ||
| + | id: msg.id || null, | ||
| + | error: { | ||
| + | code: -32603, | ||
| + | message: err.toString(), | ||
| + | }, | ||
| + | }; | ||
| + | stdout.write(JSON.stringify(errorResponse) + ' | ||
| + | }); | ||
| + | } | ||
| + | }); | ||
| + | |||
| + | function postToMcp(data) { | ||
| + | return new Promise((resolve, | ||
| + | const urlObj = new URL(url); | ||
| + | const protocol = urlObj.protocol === ' | ||
| + | |||
| + | const options = { | ||
| + | hostname: urlObj.hostname, | ||
| + | port: urlObj.port, | ||
| + | path: urlObj.pathname, | ||
| + | method: ' | ||
| + | headers: { | ||
| + | ' | ||
| + | ' | ||
| + | }, | ||
| + | }; | ||
| + | |||
| + | const req = protocol.request(options, | ||
| + | let body = ''; | ||
| + | res.setEncoding(' | ||
| + | res.on(' | ||
| + | res.on(' | ||
| + | try { | ||
| + | const json = JSON.parse(body); | ||
| + | resolve(json); | ||
| + | } catch (error) { | ||
| + | reject(`Response parsing error: ${error.message}`); | ||
| + | } | ||
| + | }); | ||
| + | }); | ||
| + | |||
| + | req.on(' | ||
| + | req.write(JSON.stringify(data)); | ||
| + | req.end(); | ||
| + | }); | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | 4. Сохраните файл. | ||
| + | |||
| + | ==== Шаг 3. Подготовка конфигурационного файла claude_desktop_config.json ==== | ||
| + | 1. Найдите файл конфигурации Claude Desktop: | ||
| + | o На Windows он обычно находится по пути: | ||
| + | %APPDATA%\Claude\claude_desktop_config.json | ||
| + | |||
| + | o Чтобы быстро открыть, | ||
| + | %APPDATA%\Claude | ||
| + | |||
| + | и нажмите Enter. | ||
| + | 2. Если файла нет — создайте его. | ||
| + | 3. Откройте этот JSON-файл в любом текстовом редакторе (например, | ||
| + | 4. Добавьте или измените раздел " | ||
| + | { | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | } | ||
| + | |||
| + | • Убедитесь, | ||
| + | • Замените MCP_SERVER_URL на URL вашего MCP HTTP сервера, | ||
| + | • Замените MCP_AUTH_TOKEN на текущий токен из вашей Docker-конфигурации MCP. | ||
| + | 5. Если в JSON уже есть другие корневые свойства (например, | ||
| + | 6. Сохраните файл. | ||
| + | |||
| + | ==== Шаг 4. Запуск Claude Desktop ==== | ||
| + | 1. Завершите все запущенные процессы Claude Desktop. | ||
| + | 2. Запустите Claude Desktop через меню " | ||
| + | 3. При успешной загрузке в логах появится сообщение о подключении к MCP серверу. | ||
| + | 4. Проверьте, | ||
| + | |||
| + | ==== Шаг 5. Проверка работоспособности ==== | ||
| + | • Откройте окно чата Claude в приложении. | ||
| + | • Введите команду для получения документации MCP: | ||
| + | tools_documentation() | ||
| + | |||
| + | • Если вы получили список доступных нод и функций — значит связь с MCP сервером установлена корректно. | ||
| + | • Далее можно создавать и запускать workflow через команды: | ||
| + | build_workflow({...}) | ||
| + | n8n_create_workflow(workflow) | ||
| + | n8n_trigger_webhook_workflow({workflowId: | ||
| + | |||
| + | • В случае ошибок смотрите логи в Claude Desktop и вывод консоли. | ||
| + | |||
| + | ==== Полезные советы и рекомендации ==== | ||
| + | • Всегда сохраняйте резервную копию файла claude_desktop_config.json перед изменениями. | ||
| + | • Следите, | ||
| + | • Если при запуске есть ошибки связанные с Node.js, убедитесь, | ||
| + | • При изменении конфигурации — обязательно перезапускайте Claude Desktop. | ||
| + | • Для более сложных сценариев можно создавать дополнительные MCP серверы и добавлять их в конфиг. | ||
| + | |||
| + | ==== Заключение ==== | ||