npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@brojs/mcp

v1.10.1

Published

MCP (Model Context Protocol) сервер для AI агентов с поддержкой email и генерации изображений

Readme

@brojs/mcp

MCP (Model Context Protocol) сервер для AI агентов с поддержкой email и генерации изображений через Stable Diffusion.

Установка

npm install -g @brojs/mcp

Или использовать через npx:

npx @brojs/mcp

Переменные окружения

Сервер поддерживает настройку через переменные окружения:

# Stable Diffusion настройки
SD_URL=http://127.0.0.1:7860
SD_OUTPUT_DIR=./output
SD_STEPS=30
SD_CFG_SCALE=8.0

# SMTP настройки для отправки email
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_SECURE=false
[email protected]
SMTP_PASS=your-app-password

Приоритет настроек

Настройки применяются в следующем порядке (каждый следующий перезаписывает предыдущий):

  1. Переменные окружения (самый низкий приоритет)
  2. Конфигурационный файл (--config)
  3. Параметры командной строки (самый высокий приоритет)

Использование

Запуск с переменными окружения

# Установите переменные окружения
export SD_URL=http://127.0.0.1:7860
export SMTP_HOST=smtp.gmail.com
export [email protected]
export SMTP_PASS=your-password

# Запустите сервер
npx @brojs/mcp

Запуск с параметрами командной строки

# Базовый запуск
npx @brojs/mcp

# С конфигурацией Stable Diffusion
npx @brojs/mcp --sd-url http://127.0.0.1:7860 --sd-output ./generated-images

# С конфигурацией email
npx @brojs/mcp --mailer-host smtp.gmail.com --mailer-port 587 --mailer-user [email protected] --mailer-pass password

# Полная конфигурация
npx @brojs/mcp \
  --sd-url http://127.0.0.1:7860 \
  --sd-output ./images \
  --sd-steps 30 \
  --mailer-host smtp.gmail.com \
  --mailer-port 587 \
  --mailer-user [email protected] \
  --mailer-pass password

Запуск с файлом конфигурации

Создайте файл mcp-config.json:

{
  "stableDiffusion": {
    "url": "http://127.0.0.1:7860",
    "outputDir": "./generated-images",
    "defaultSteps": 30,
    "defaultCfgScale": 8.0
  },
  "mailer": {
    "host": "smtp.gmail.com",
    "port": 587,
    "secure": false,
    "auth": {
      "user": "[email protected]",
      "pass": "your-app-password"
    }
  }
}

Затем запустите:

npx @brojs/mcp --config ./mcp-config.json

Доступные инструменты (Tools)

Email инструменты

send_email

Отправка email сообщения.

Параметры:

  • to (string, обязательный) - Email получателя
  • subject (string, обязательный) - Тема письма
  • text (string) - Текст письма (plain text)
  • html (string) - HTML содержимое письма

Пример:

{
  "to": "[email protected]",
  "subject": "Привет от AI агента",
  "text": "Это автоматическое сообщение",
  "html": "<h1>Привет!</h1><p>Это автоматическое сообщение</p>"
}

Stable Diffusion инструменты

generate_image

Генерация изображения из текстового описания (text-to-image).

Параметры:

  • prompt (string, обязательный) - Текстовое описание изображения
  • negative_prompt (string) - Что НЕ должно быть на изображении
  • steps (number) - Количество шагов диффузии (20-50)
  • width (number) - Ширина изображения (кратно 64)
  • height (number) - Высота изображения (кратно 64)
  • batch_size (number) - Количество изображений

Пример:

{
  "prompt": "a beautiful sunset over the ocean, golden hour, cinematic",
  "negative_prompt": "blurry, lowres, deformed",
  "steps": 30,
  "width": 768,
  "height": 512,
  "batch_size": 1
}

upscale_image

Улучшение качества и увеличение разрешения изображения.

Параметры:

  • image_base64 (string, обязательный) - Изображение в base64
  • upscaling_resize (number) - Коэффициент увеличения (2, 4)
  • upscaler_1 (string) - Модель upscaler (R-ESRGAN 4x+, LDSR)

Пример:

{
  "image_base64": "iVBORw0KGgoAAAANSUhEUgAA...",
  "upscaling_resize": 2,
  "upscaler_1": "R-ESRGAN 4x+"
}

interrogate_image

Получение текстового описания (промпта) из изображения.

Параметры:

  • image_base64 (string, обязательный) - Изображение в base64
  • model (string) - Модель анализа: clip или deepdanbooru

Пример:

{
  "image_base64": "iVBORw0KGgoAAAANSUhEUgAA...",
  "model": "clip"
}

img2img

Модификация существующего изображения на основе нового промпта.

Параметры:

  • image_base64 (string, обязательный) - Исходное изображение в base64
  • prompt (string, обязательный) - Описание желаемого результата
  • denoising_strength (number) - Сила изменений (0.0-1.0, рекомендуется 0.75)

Пример:

{
  "image_base64": "iVBORw0KGgoAAAANSUhEUgAA...",
  "prompt": "same image but in anime style",
  "denoising_strength": 0.75
}

Интеграция с AI ассистентами

Claude Desktop

Добавьте в конфигурацию Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json на macOS):

{
  "mcpServers": {
    "brojs": {
      "command": "npx",
      "args": [
        "@brojs/mcp",
        "--config",
        "/path/to/your/mcp-config.json"
      ]
    }
  }
}

Cline (VS Code)

Добавьте в настройки MCP серверов:

{
  "mcpServers": {
    "brojs": {
      "command": "npx",
      "args": ["@brojs/mcp", "--sd-url", "http://127.0.0.1:7860"]
    }
  }
}

Параметры командной строки

| Параметр | Описание | По умолчанию | |----------|----------|--------------| | -c, --config <path> | Путь к файлу конфигурации JSON | - | | --sd-url <url> | URL Stable Diffusion API | http://127.0.0.1:7860 | | --sd-output <dir> | Директория для изображений | текущая | | --sd-steps <number> | Шаги диффузии по умолчанию | 30 | | --mailer-host <host> | SMTP хост | - | | --mailer-port <port> | SMTP порт | 587 | | --mailer-user <user> | SMTP пользователь | - | | --mailer-pass <password> | SMTP пароль | - |

Требования

Для Stable Diffusion:

  • Запущенный Stable Diffusion WebUI с флагом --api
  • По умолчанию подключается к http://127.0.0.1:7860

Для Email:

  • SMTP сервер (Gmail, Outlook и др.)
  • Учетные данные для аутентификации

Примеры использования

Пример 1: Генерация изображения через AI агента

После подключения MCP сервера к вашему AI ассистенту, вы можете попросить:

"Сгенерируй изображение красивого заката над океаном"

AI агент вызовет инструмент generate_image и вернёт путь к сгенерированному файлу.

Пример 2: Отправка email

"Отправь email на [email protected] с темой 'Отчет' и текстом 'Отчет готов'"

AI агент вызовет инструмент send_email.

Пример 3: Улучшение изображения

"Улучши это изображение, увеличь в 4 раза" (прикладывая изображение)

AI агент конвертирует изображение в base64 и вызовет upscale_image.

Разработка

# Клонировать репозиторий
git clone <repo-url>
cd packages/mcp

# Установить зависимости
npm install

# Сборка
npm run build

# Разработка с автоматической пересборкой
npm run dev

# Запуск локально
node bin/server.js

Тестирование с LangChain

В пакете предоставлен минималистичный тестовый скрипт для проверки работы MCP сервера с LangChain:

# 1. Скопируйте пример настроек
cp env.example .env
# Отредактируйте .env файл с вашими настройками

# 2. Установите dev зависимости
npm install

# 3. Соберите проект
npm run build

# 4. Запустите тест
npx ts-node test-langchain.ts

Что делает тест:

  • ✅ Подключается к MCP серверу
  • ✅ Загружает все доступные инструменты
  • ✅ Создает LangChain агента с LLM
  • Агент автоматически выбирает и вызывает нужные инструменты
  • ✅ Демонстрирует генерацию изображений через естественный запрос
  • ✅ Демонстрирует отправку email через естественный запрос

Пример кода:

import { MultiServerMCPClient } from '@langchain/mcp-adapters';
import { ChatOpenAI } from '@langchain/openai';
import { createReactAgent } from '@langchain/langgraph/prebuilt';

// 1. Загружаем конфигурацию из JSON файла
const config = JSON.parse(readFileSync('./mcp-servers.json', 'utf-8'));

// 2. Создаем клиент и получаем инструменты
const client = new MultiServerMCPClient({
  mcpServers: config.mcpServers,
  useStandardContentBlocks: true,
});
const tools = await client.getTools();

// 3. Создаем агента
const llm = new ChatOpenAI({ /* ... */ });
const agent = createReactAgent({ llm, tools });

// 4. Агент сам выбирает инструмент
const result = await agent.invoke({
  messages: [{ 
    role: 'user', 
    content: 'Сгенерируй изображение заката над морем' 
  }],
});

Формат mcp-servers.json:

{
  "mcpServers": {
    "brojs": {
      "command": "node",
      "args": ["bin/server.js"],
      "env": {
        "SD_URL": "http://127.0.0.1:7860",
        "SMTP_HOST": "smtp.gmail.com",
        "SMTP_USER": "[email protected]",
        "SMTP_PASS": "password"
      }
    }
  }
}

Использование как библиотека

import { BrojsMCPServer, MCPConfig } from '@brojs/mcp';

const config: MCPConfig = {
  stableDiffusion: {
    url: 'http://127.0.0.1:7860',
    outputDir: './images',
  },
  mailer: {
    host: 'smtp.gmail.com',
    port: 587,
    auth: {
      user: '[email protected]',
      pass: 'your-password',
    },
  },
};

const server = new BrojsMCPServer(config);
await server.run();

Зависимости

  • @brojs/mailer - Отправка email
  • @brojs/stable-diffusion - Генерация изображений
  • @modelcontextprotocol/sdk - MCP SDK
  • commander - CLI парсинг

Лицензия

ISC

Ссылки