English README | 中文说明
一个基于 Model Context Protocol (MCP) 的多模态 AI 工具箱,集成了智谱 GLM 和 Pollinations.AI 两大平台的强大能力。
- 🖼️ 图片分析 - 使用 GLM-4.5V 模型进行图像识别和分析
- 🎬 视频分析 - 支持视频内容分析和理解
- 🎨 图片生成 - 使用 CogView-4 系列模型生成高质量图片
- 🖼️ 图片生成 - 支持多种模型和参数配置
- 📝 文本生成 - 智能文本生成和对话
- 🔊 音频生成 - 文字转语音,支持多种声音
- 👁️ 图片分析 - OpenAI 兼容的视觉分析能力
- 📚 块级内容获取 - 获取思源笔记块的 Kramdown 源码
- 🔍 全文搜索 - 支持复杂查询语法的笔记搜索
- ✏️ 内容更新 - 直接更新思源笔记块内容
- 🔧 灵活的环境变量配置
- 📝 完整的日志记录系统
- 🚀 轻量级,易于集成和部署
- 🛡️ TypeScript 类型安全
pnpm install
访问 智谱AI开放平台 获取 API Key:
export GLM_API_KEY=your_glm_api_key_here
# GLM 模型配置
GLM_IMAGE_MODEL=glm-4.5v
GLM_VIDEO_MODEL=glm-4.5v
GLM_GENERATION_MODEL=cogview-3-flash
# 思源笔记配置(可选)
SIYUAN_API_TOKEN=your_siyuan_token
SIYUAN_API_BASE=http://127.0.0.1:6806
- 系统环境变量(推荐)
- 执行目录下的
.env
文件 - 项目根目录下的
.env
文件
pnpm dev
pnpm build
pnpm start
./build/index.js
参数:
image_path
(string): 图片文件路径prompt
(string): 分析提示文本temperature
(number, 可选): 采样温度 (0.0-1.0)top_p
(number, 可选): 采样参数 (0.0-1.0)max_tokens
(number, 可选): 最大输出令牌数
示例:
{
"image_path": "/path/to/image.jpg",
"prompt": "请详细描述这张图片的内容"
}
参数:
video_url
(string): 视频文件 URLprompt
(string): 分析提示文本temperature
(number, 可选): 采样温度 (0.0-1.0)top_p
(number, 可选): 采样参数 (0.0-1.0)max_tokens
(number, 可选): 最大输出令牌数
示例:
{
"video_url": "https://example.com/video.mp4",
"prompt": "分析这个视频的主要内容"
}
参数:
prompt
(string): 图片描述文本quality
(string, 可选): 图片质量 (hd/standard)size
(string, 可选): 图片尺寸save_path
(string, 可选): 图片保存路径
示例:
{
"prompt": "一只可爱的小猫咪,卡通风格",
"quality": "standard",
"size": "1024x1024",
"save_path": "./cat.png"
}
参数:
prompt
(string): 图片描述文本model
(string, 可选): 生成模型 (默认: flux)width
(number, 可选): 图片宽度 (64-2048)height
(number, 可选): 图片高度 (64-2048)seed
(number, 可选): 随机种子nologo
(boolean, 可选): 禁用 logoprivate
(boolean, 可选): 私有生成enhance
(boolean, 可选): 增强提示词safe
(boolean, 可选): 安全过滤transparent
(boolean, 可选): 透明背景
示例:
{
"prompt": "A beautiful landscape with mountains",
"model": "flux",
"width": 1024,
"height": 768
}
参数:
prompt
(string): 文本提示model
(string, 可选): 生成模型 (默认: openai)temperature
(number, 可选): 随机性 (0.0-3.0)top_p
(number, 可选): 核心采样 (0.0-1.0)json
(boolean, 可选): JSON 格式输出system
(string, 可选): 系统提示词stream
(boolean, 可选): 流式输出
示例:
{
"prompt": "写一首关于春天的诗",
"model": "openai",
"temperature": 0.8
}
参数:
prompt
(string): 要转换的文本voice
(string, 可选): 声音选择 (alloy/echo/fable/onyx/nova/shimmer)model
(string, 可选): 音频模型 (默认: openai-audio)
示例:
{
"prompt": "你好,欢迎使用我们的服务!",
"voice": "nova"
}
参数:
image_path
(string, 可选): 本地图片路径image_url
(string, 可选): 图片 URLprompt
(string): 分析提示文本model
(string, 可选): 分析模型 (默认: openai)max_tokens
(number, 可选): 最大输出令牌数
示例:
{
"image_path": "/path/to/image.jpg",
"prompt": "What's in this image?",
"model": "openai"
}
参数:
block_id
(string|array): 单个块ID或块ID数组
示例:
{
"block_id": "20240825123456-1a2b3c4d"
}
多块获取示例:
{
"block_id": ["20240825123456-1a2b3c4d", "20240825123456-5e6f7g8h"]
}
参数:
block_id
(string): 要更新的块IDdata
(string): 新的Kramdown内容数据data_type
(string, 可选): 数据类型 (markdown/dom,默认: markdown)
示例:
{
"block_id": "20240825123456-1a2b3c4d",
"data": "# 新标题\n\n更新后的内容",
"data_type": "markdown"
}
参数:
query
(string): 搜索查询文本,支持完整全文查询语法paths
(array, 可选): 指定搜索路径page
(number, 可选): 分页页码
搜索语法示例:
{
"query": "机器学习 OR 深度学习",
"paths": ["/笔记/技术/"],
"page": 1
}
高级查询示例:
{
"query": "NEAR(人工智能 算法, 10) -广告",
"page": 1
}
支持的查询操作符:
- OR - 逻辑或:包含任一即可
- NEAR(词1 词2, N) - 邻近搜索:距离在N词内
- AND - 逻辑与:必须同时包含
- ^词 - 权重提升:提高重要性
- -词 - 排除:明确排除
- (查询) - 分组:组合逻辑
项目包含完整的日志记录系统,所有工具调用都会记录到项目根目录的 mcpserver.log
文件中:
- INFO: 工具调用和成功操作
- ERROR: 错误和异常信息
- DEBUG: 详细调试信息
- WARN: 警告信息
src/
├── config/
│ ├── index.ts # GLM 配置
│ └── pollinations.ts # Pollinations 配置
├── tools/
│ ├── bigmodel/ # 智谱 GLM 工具
│ │ ├── image-analysis.ts
│ │ ├── video-analysis.ts
│ │ └── image-generation.ts
│ ├── pollinations/ # Pollinations.AI 工具
│ │ ├── image-generation.ts
│ │ ├── text-generation.ts
│ │ ├── audio-generation.ts
│ │ └── image-analysis.ts
│ └── siyuan/ # 思源笔记工具
│ ├── block-kramdown.ts
│ ├── search.ts
│ └── client.ts
├── utils/
│ ├── helpers.ts # 通用助手函数
│ ├── common.ts # 通用响应函数
│ └── logger.ts # 日志系统
└── index.ts # 主服务器入口
ISC
欢迎提交 Issue 和 Pull Request!
如有问题,请创建 Issue 或联系维护者。