undoom-sketch-mcp


Nameundoom-sketch-mcp JSON
Version 0.1.4 PyPI version JSON
download
home_pageNone
SummaryA MCP server for converting images to sketch effects with multiple styles and batch processing capabilities
upload_time2025-08-07 15:53:15
maintainerNone
docs_urlNone
authorNone
requires_python>=3.8
licenseMIT
keywords ai computer-vision image-processing mcp opencv sketch
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # MCP 图片素描转换器

一个基于 MCP (Model Context Protocol) 的图片素描化服务器,可以将普通图片转换为素描效果。

## 功能特性

- 🎨 **多种素描风格**:支持经典、详细、柔和三种不同的素描风格
- 📁 **批量处理**:支持批量转换文件夹中的所有图片
- 🖼️ **多格式支持**:支持 JPG、PNG、BMP、GIF、TIFF、WEBP 等常见图片格式
- 🌏 **中文路径支持**:完美支持中文文件名和路径
- ⚙️ **参数可调**:可自定义模糊程度和对比度参数
- 📊 **图片信息查看**:提供图片基本信息和推荐参数

## 安装要求

- Python >= 3.13
- 依赖包:
  - mcp[cli] >= 1.12.3
  - opencv-python >= 4.8.0
  - numpy >= 1.24.0

## 安装方法

1. 克隆项目:
```bash
git clone <repository-url>
cd mcp-test
```

2. 安装依赖:
```bash
pip install -e .
```

或使用 uv:
```bash
uv sync
```

## 使用方法

### 启动服务器

```bash
python main.py
```

### 可用工具

#### 1. 单张图片转换
```python
convert_image_to_sketch(
    image_path="/path/to/image.jpg",
    blur_size=21,
    contrast=256.0,
    style="classic"
)
```

#### 2. 批量图片转换
```python
batch_convert_images(
    folder_path="/path/to/folder",
    blur_size=21,
    contrast=256.0,
    style="detailed"
)
```

#### 3. 获取图片信息
```python
get_image_info(image_path="/path/to/image.jpg")
```

### 素描风格说明

- **classic**:经典素描风格,平衡的线条和对比度
- **detailed**:详细素描风格,更清晰的线条和细节
- **soft**:柔和素描风格,更柔和的效果,适合风景图

### 参数说明

- `image_path`:图片文件的完整路径(必需)
- `blur_size`:高斯模糊核大小(3-101,必须为奇数,默认21)
- `contrast`:对比度参数(50-500,默认256.0)
- `style`:素描风格(classic/detailed/soft,默认classic)

### 参数建议

- **大图片**(>200万像素):blur_size=31-51,contrast=200-300
- **中等图片**(50万-200万像素):blur_size=21-31,contrast=256
- **小图片**(<50万像素):blur_size=11-21,contrast=300-400

## 输出文件

转换后的素描图片会保存在原图片相同目录下,文件名格式为:
```
Sketch_{style}_{原文件名}.jpg
```

例如:`Sketch_classic_photo.jpg`

## 支持的图片格式

- JPG / JPEG
- PNG
- BMP
- GIF
- TIFF
- WEBP

## 技术实现

本项目使用以下技术:

- **OpenCV**:图像处理和计算机视觉
- **NumPy**:数值计算
- **MCP (Model Context Protocol)**:与AI模型的通信协议
- **FastMCP**:快速MCP服务器实现

## 核心算法

素描效果通过以下步骤实现:
1. 将彩色图片转换为灰度图
2. 创建反转的灰度图
3. 对反转图像应用高斯模糊
4. 使用颜色减淡混合模式生成素描效果
5. 根据风格进行后处理优化

## 注意事项

- 确保图片文件存在且可读
- 处理大图片时可能需要较长时间
- 建议在处理前备份原图片
- 支持中文路径和文件名

## 许可证

本项目采用开源许可证,具体请查看 LICENSE 文件。

## 贡献

欢迎提交 Issue 和 Pull Request 来改进这个项目!
            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "undoom-sketch-mcp",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.8",
    "maintainer_email": null,
    "keywords": "ai, computer-vision, image-processing, mcp, opencv, sketch",
    "author": null,
    "author_email": "Undoom <kaikaihuhu666@163.com>",
    "download_url": "https://files.pythonhosted.org/packages/55/2f/136215c4b41403433ef73ac0b237baa46195839b69353783e6b69adf2f91/undoom_sketch_mcp-0.1.4.tar.gz",
    "platform": null,
    "description": "# MCP \u56fe\u7247\u7d20\u63cf\u8f6c\u6362\u5668\n\n\u4e00\u4e2a\u57fa\u4e8e MCP (Model Context Protocol) \u7684\u56fe\u7247\u7d20\u63cf\u5316\u670d\u52a1\u5668\uff0c\u53ef\u4ee5\u5c06\u666e\u901a\u56fe\u7247\u8f6c\u6362\u4e3a\u7d20\u63cf\u6548\u679c\u3002\n\n## \u529f\u80fd\u7279\u6027\n\n- \ud83c\udfa8 **\u591a\u79cd\u7d20\u63cf\u98ce\u683c**\uff1a\u652f\u6301\u7ecf\u5178\u3001\u8be6\u7ec6\u3001\u67d4\u548c\u4e09\u79cd\u4e0d\u540c\u7684\u7d20\u63cf\u98ce\u683c\n- \ud83d\udcc1 **\u6279\u91cf\u5904\u7406**\uff1a\u652f\u6301\u6279\u91cf\u8f6c\u6362\u6587\u4ef6\u5939\u4e2d\u7684\u6240\u6709\u56fe\u7247\n- \ud83d\uddbc\ufe0f **\u591a\u683c\u5f0f\u652f\u6301**\uff1a\u652f\u6301 JPG\u3001PNG\u3001BMP\u3001GIF\u3001TIFF\u3001WEBP \u7b49\u5e38\u89c1\u56fe\u7247\u683c\u5f0f\n- \ud83c\udf0f **\u4e2d\u6587\u8def\u5f84\u652f\u6301**\uff1a\u5b8c\u7f8e\u652f\u6301\u4e2d\u6587\u6587\u4ef6\u540d\u548c\u8def\u5f84\n- \u2699\ufe0f **\u53c2\u6570\u53ef\u8c03**\uff1a\u53ef\u81ea\u5b9a\u4e49\u6a21\u7cca\u7a0b\u5ea6\u548c\u5bf9\u6bd4\u5ea6\u53c2\u6570\n- \ud83d\udcca **\u56fe\u7247\u4fe1\u606f\u67e5\u770b**\uff1a\u63d0\u4f9b\u56fe\u7247\u57fa\u672c\u4fe1\u606f\u548c\u63a8\u8350\u53c2\u6570\n\n## \u5b89\u88c5\u8981\u6c42\n\n- Python >= 3.13\n- \u4f9d\u8d56\u5305\uff1a\n  - mcp[cli] >= 1.12.3\n  - opencv-python >= 4.8.0\n  - numpy >= 1.24.0\n\n## \u5b89\u88c5\u65b9\u6cd5\n\n1. \u514b\u9686\u9879\u76ee\uff1a\n```bash\ngit clone <repository-url>\ncd mcp-test\n```\n\n2. \u5b89\u88c5\u4f9d\u8d56\uff1a\n```bash\npip install -e .\n```\n\n\u6216\u4f7f\u7528 uv\uff1a\n```bash\nuv sync\n```\n\n## \u4f7f\u7528\u65b9\u6cd5\n\n### \u542f\u52a8\u670d\u52a1\u5668\n\n```bash\npython main.py\n```\n\n### \u53ef\u7528\u5de5\u5177\n\n#### 1. \u5355\u5f20\u56fe\u7247\u8f6c\u6362\n```python\nconvert_image_to_sketch(\n    image_path=\"/path/to/image.jpg\",\n    blur_size=21,\n    contrast=256.0,\n    style=\"classic\"\n)\n```\n\n#### 2. \u6279\u91cf\u56fe\u7247\u8f6c\u6362\n```python\nbatch_convert_images(\n    folder_path=\"/path/to/folder\",\n    blur_size=21,\n    contrast=256.0,\n    style=\"detailed\"\n)\n```\n\n#### 3. \u83b7\u53d6\u56fe\u7247\u4fe1\u606f\n```python\nget_image_info(image_path=\"/path/to/image.jpg\")\n```\n\n### \u7d20\u63cf\u98ce\u683c\u8bf4\u660e\n\n- **classic**\uff1a\u7ecf\u5178\u7d20\u63cf\u98ce\u683c\uff0c\u5e73\u8861\u7684\u7ebf\u6761\u548c\u5bf9\u6bd4\u5ea6\n- **detailed**\uff1a\u8be6\u7ec6\u7d20\u63cf\u98ce\u683c\uff0c\u66f4\u6e05\u6670\u7684\u7ebf\u6761\u548c\u7ec6\u8282\n- **soft**\uff1a\u67d4\u548c\u7d20\u63cf\u98ce\u683c\uff0c\u66f4\u67d4\u548c\u7684\u6548\u679c\uff0c\u9002\u5408\u98ce\u666f\u56fe\n\n### \u53c2\u6570\u8bf4\u660e\n\n- `image_path`\uff1a\u56fe\u7247\u6587\u4ef6\u7684\u5b8c\u6574\u8def\u5f84\uff08\u5fc5\u9700\uff09\n- `blur_size`\uff1a\u9ad8\u65af\u6a21\u7cca\u6838\u5927\u5c0f\uff083-101\uff0c\u5fc5\u987b\u4e3a\u5947\u6570\uff0c\u9ed8\u8ba421\uff09\n- `contrast`\uff1a\u5bf9\u6bd4\u5ea6\u53c2\u6570\uff0850-500\uff0c\u9ed8\u8ba4256.0\uff09\n- `style`\uff1a\u7d20\u63cf\u98ce\u683c\uff08classic/detailed/soft\uff0c\u9ed8\u8ba4classic\uff09\n\n### \u53c2\u6570\u5efa\u8bae\n\n- **\u5927\u56fe\u7247**\uff08>200\u4e07\u50cf\u7d20\uff09\uff1ablur_size=31-51\uff0ccontrast=200-300\n- **\u4e2d\u7b49\u56fe\u7247**\uff0850\u4e07-200\u4e07\u50cf\u7d20\uff09\uff1ablur_size=21-31\uff0ccontrast=256\n- **\u5c0f\u56fe\u7247**\uff08<50\u4e07\u50cf\u7d20\uff09\uff1ablur_size=11-21\uff0ccontrast=300-400\n\n## \u8f93\u51fa\u6587\u4ef6\n\n\u8f6c\u6362\u540e\u7684\u7d20\u63cf\u56fe\u7247\u4f1a\u4fdd\u5b58\u5728\u539f\u56fe\u7247\u76f8\u540c\u76ee\u5f55\u4e0b\uff0c\u6587\u4ef6\u540d\u683c\u5f0f\u4e3a\uff1a\n```\nSketch_{style}_{\u539f\u6587\u4ef6\u540d}.jpg\n```\n\n\u4f8b\u5982\uff1a`Sketch_classic_photo.jpg`\n\n## \u652f\u6301\u7684\u56fe\u7247\u683c\u5f0f\n\n- JPG / JPEG\n- PNG\n- BMP\n- GIF\n- TIFF\n- WEBP\n\n## \u6280\u672f\u5b9e\u73b0\n\n\u672c\u9879\u76ee\u4f7f\u7528\u4ee5\u4e0b\u6280\u672f\uff1a\n\n- **OpenCV**\uff1a\u56fe\u50cf\u5904\u7406\u548c\u8ba1\u7b97\u673a\u89c6\u89c9\n- **NumPy**\uff1a\u6570\u503c\u8ba1\u7b97\n- **MCP (Model Context Protocol)**\uff1a\u4e0eAI\u6a21\u578b\u7684\u901a\u4fe1\u534f\u8bae\n- **FastMCP**\uff1a\u5feb\u901fMCP\u670d\u52a1\u5668\u5b9e\u73b0\n\n## \u6838\u5fc3\u7b97\u6cd5\n\n\u7d20\u63cf\u6548\u679c\u901a\u8fc7\u4ee5\u4e0b\u6b65\u9aa4\u5b9e\u73b0\uff1a\n1. \u5c06\u5f69\u8272\u56fe\u7247\u8f6c\u6362\u4e3a\u7070\u5ea6\u56fe\n2. \u521b\u5efa\u53cd\u8f6c\u7684\u7070\u5ea6\u56fe\n3. \u5bf9\u53cd\u8f6c\u56fe\u50cf\u5e94\u7528\u9ad8\u65af\u6a21\u7cca\n4. \u4f7f\u7528\u989c\u8272\u51cf\u6de1\u6df7\u5408\u6a21\u5f0f\u751f\u6210\u7d20\u63cf\u6548\u679c\n5. \u6839\u636e\u98ce\u683c\u8fdb\u884c\u540e\u5904\u7406\u4f18\u5316\n\n## \u6ce8\u610f\u4e8b\u9879\n\n- \u786e\u4fdd\u56fe\u7247\u6587\u4ef6\u5b58\u5728\u4e14\u53ef\u8bfb\n- \u5904\u7406\u5927\u56fe\u7247\u65f6\u53ef\u80fd\u9700\u8981\u8f83\u957f\u65f6\u95f4\n- \u5efa\u8bae\u5728\u5904\u7406\u524d\u5907\u4efd\u539f\u56fe\u7247\n- \u652f\u6301\u4e2d\u6587\u8def\u5f84\u548c\u6587\u4ef6\u540d\n\n## \u8bb8\u53ef\u8bc1\n\n\u672c\u9879\u76ee\u91c7\u7528\u5f00\u6e90\u8bb8\u53ef\u8bc1\uff0c\u5177\u4f53\u8bf7\u67e5\u770b LICENSE \u6587\u4ef6\u3002\n\n## \u8d21\u732e\n\n\u6b22\u8fce\u63d0\u4ea4 Issue \u548c Pull Request \u6765\u6539\u8fdb\u8fd9\u4e2a\u9879\u76ee\uff01",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A MCP server for converting images to sketch effects with multiple styles and batch processing capabilities",
    "version": "0.1.4",
    "project_urls": {
        "Homepage": "https://github.com/undoom/undoom-sketch-mcp",
        "Issues": "https://github.com/undoom/undoom-sketch-mcp/issues",
        "Repository": "https://github.com/undoom/undoom-sketch-mcp"
    },
    "split_keywords": [
        "ai",
        " computer-vision",
        " image-processing",
        " mcp",
        " opencv",
        " sketch"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "2fee3958e4ce2089a19a30abb3cdfbc69037b0f59489605cd6ba520534b2b72a",
                "md5": "afe2046f819f0768875b72010aca6d26",
                "sha256": "ca46822d5a0d69ffc30a0d0aec8f3a55c95629e3f784a56ad936bb3a385028bc"
            },
            "downloads": -1,
            "filename": "undoom_sketch_mcp-0.1.4-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "afe2046f819f0768875b72010aca6d26",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.8",
            "size": 9044,
            "upload_time": "2025-08-07T15:53:10",
            "upload_time_iso_8601": "2025-08-07T15:53:10.412680Z",
            "url": "https://files.pythonhosted.org/packages/2f/ee/3958e4ce2089a19a30abb3cdfbc69037b0f59489605cd6ba520534b2b72a/undoom_sketch_mcp-0.1.4-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "552f136215c4b41403433ef73ac0b237baa46195839b69353783e6b69adf2f91",
                "md5": "7694e323fa1c22e1efdbd279b04ea3af",
                "sha256": "d84f67652a1865b833be49f5fc629579d9fbd5f6ac127ae01e84b860b8e54ef9"
            },
            "downloads": -1,
            "filename": "undoom_sketch_mcp-0.1.4.tar.gz",
            "has_sig": false,
            "md5_digest": "7694e323fa1c22e1efdbd279b04ea3af",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.8",
            "size": 3251142,
            "upload_time": "2025-08-07T15:53:15",
            "upload_time_iso_8601": "2025-08-07T15:53:15.299288Z",
            "url": "https://files.pythonhosted.org/packages/55/2f/136215c4b41403433ef73ac0b237baa46195839b69353783e6b69adf2f91/undoom_sketch_mcp-0.1.4.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-08-07 15:53:15",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "undoom",
    "github_project": "undoom-sketch-mcp",
    "github_not_found": true,
    "lcname": "undoom-sketch-mcp"
}
        
Elapsed time: 1.20913s