open-index/open-npm huggingface dataset:
npm package: @mcpcn/text-watermark-mcp
Description: 文字水印叠加 MCP 服务器
Latest version: 1.0.1

# 文字水印叠加 MCP 服务器

一个用于图片文字水印处理的 Model Context Protocol (MCP) 服务器，支持单个水印和重复平铺水印效果。

## 功能特性

- 🎨 **单个文字水印**: 在指定位置添加文字水印
- 🔄 **重复平铺水印**: 在整个图片上添加重复的文字水印
- 📍 **灵活定位**: 支持预设位置和自定义坐标
- 🎨 **丰富样式**: 字体大小、颜色、不透明度、旋转角度等
- 🖼️ **多格式支持**: JPEG、PNG、WebP 格式
- 🔤 **描边效果**: 可选的文字描边功能

## 安装和使用

### 1. 安装依赖

```bash
npm install
```

### 2. 构建项目

```bash
npm run build
```

### 3. 运行服务器

```bash
npm start
```

## 可用工具

### 1. add_text_watermark

为图片添加单个文字水印。

**参数:**

| 参数名 | 类型 | 必需 | 默认值 | 描述 |
|--------|------|------|--------|------|
| `inputPath` | string | ✅ | - | 输入图片路径 |
| `outputPath` | string | ✅ | - | 输出图片路径 |
| `text` | string | ✅ | - | 水印文字内容 |
| `position` | string | ❌ | `bottom-right` | 水印位置 (`top-left`, `top-right`, `bottom-left`, `bottom-right`, `center`, `custom`) |
| `x` | number | ❌ | - | X坐标（position为custom时使用） |
| `y` | number | ❌ | - | Y坐标（position为custom时使用） |
| `fontSize` | number | ❌ | 32 | 字体大小（像素） |
| `fontColor` | string | ❌ | `white` | 字体颜色 |
| `opacity` | number | ❌ | 0.7 | 不透明度（0-1） |
| `rotation` | number | ❌ | 0 | 文字旋转角度（度） |
| `padding` | number | ❌ | 20 | 距离边缘的填充距离（像素） |
| `strokeWidth` | number | ❌ | 0 | 描边宽度（像素，0为无描边） |
| `strokeColor` | string | ❌ | `black` | 描边颜色 |

**示例:**

```javascript
{
  "inputPath": "/path/to/input.jpg",
  "outputPath": "/path/to/output.jpg",
  "text": "© 2024 我的水印",
  "position": "bottom-right",
  "fontSize": 24,
  "fontColor": "white",
  "opacity": 0.8
}
```

### 2. add_repeated_text_watermark

为图片添加重复文字水印（平铺效果）。

**参数:**

| 参数名 | 类型 | 必需 | 默认值 | 描述 |
|--------|------|------|--------|------|
| `inputPath` | string | ✅ | - | 输入图片路径 |
| `outputPath` | string | ✅ | - | 输出图片路径 |
| `text` | string | ✅ | - | 水印文字内容 |
| `fontSize` | number | ❌ | 24 | 字体大小（像素） |
| `fontColor` | string | ❌ | `white` | 字体颜色 |
| `opacity` | number | ❌ | 0.3 | 不透明度（0-1） |
| `rotation` | number | ❌ | -45 | 文字旋转角度（度） |
| `spacingX` | number | ❌ | 150 | 水平间距（像素） |
| `spacingY` | number | ❌ | 100 | 垂直间距（像素） |

**示例:**

```javascript
{
  "inputPath": "/path/to/input.jpg",
  "outputPath": "/path/to/output.jpg",
  "text": "CONFIDENTIAL",
  "fontSize": 18,
  "fontColor": "rgba(255,255,255,0.3)",
  "rotation": -30,
  "spacingX": 120,
  "spacingY": 80
}
```

## 支持的位置

- `top-left`: 左上角
- `top-right`: 右上角
- `bottom-left`: 左下角
- `bottom-right`: 右下角
- `center`: 居中
- `custom`: 自定义位置（需要提供 x, y 坐标）

## 支持的图片格式

- **输入**: JPEG, PNG, WebP, GIF, TIFF, SVG
- **输出**: JPEG, PNG, WebP

## 技术依赖

- **[@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/typescript-sdk)**: MCP SDK
- **[Sharp](https://sharp.pixelplumbing.com/)**: 高性能图像处理库
- **TypeScript**: 类型安全的开发

## 开发脚本

```bash
# 开发模式
npm run dev

# 构建项目
npm run build

# 构建并运行
npm start
```

## 使用注意事项

1. 确保输入路径的图片文件存在且可读
2. 输出路径的目录必须存在
3. 字体颜色支持 CSS 颜色格式（如 `white`, `#FF0000`, `rgb(255,0,0)`）
4. 不透明度值范围为 0-1，其中 0 为完全透明，1 为完全不透明
5. 旋转角度为正值时顺时针旋转，负值时逆时针旋转

## 错误处理

服务器会处理以下错误情况：

- 输入文件不存在
- 图片格式不支持
- 文件读写权限问题
- 图片损坏或无效
- 参数格式错误

所有错误都会返回详细的错误信息，方便调试和处理。

## 许可证

本项目使用 MIT 许可证。