mcell-mcp-server 是一个基于 stdio 的 MCP Server,定位为 mcell 常用工具合集。当前内置:
- 内容工具(博客):最新、列表、读取、搜索
- 图片处理:压缩(可选 resize)、格式转换
- S3 对象存储上传
- 任务完成通知:系统通知 + webhook(飞书/企微/自定义)
src/tools/*.ts: 每个工具文件包含工具定义(schema/description)和工具实现(handler)。src/index.ts: 创建 MCP server、集中注册工具并作为 stdio 入口。
读取最新博客列表(按时间倒序)。
count(1-20, optional, default: 1): 返回条数
博客分页列表(按时间倒序)。
count(1-100, optional, default: 20): 每页条数offset(0-10000, optional, default: 0): 偏移量
读取某篇博客正文(仅 blog)。
id(string, optional): 博客 IDslug(string, optional): 博客 slugmax_chars(200-50000, optional, default: 12000): 最大正文字符数
约束:id 和 slug 至少传一个;如果都传,优先 id。
搜索博客(title / slug / description)。
query(string, required): 搜索词count(1-30, optional, default: 10): 最大返回数量
压缩图片,可选调整尺寸。
input_path(string, required): 源图片路径output_path(string, optional): 输出路径quality(1-100, optional, default: 80): 压缩质量format(jpeg|png|webp|avif|tiff|heif|gif, optional): 输出格式width/height(int, optional): resize 尺寸fit(cover|contain|fill|inside|outside, optional): resize 策略
图片格式转换。
input_path(string, required): 源图片路径output_format(jpeg|png|webp|avif|tiff|heif|gif, required): 目标格式output_path(string, optional): 输出路径quality(1-100, optional, default: 85): 编码质量
上传本地文件到 S3 或兼容 S3 的对象存储。
file_path(string, required): 本地文件路径bucket(string, required): 桶名key(string, required): 对象 keyregion(string, optional): 默认AWS_REGION或us-east-1endpoint(url, optional): S3 兼容存储 endpoint(如 MinIO/R2)force_path_style(boolean, optional): 是否使用 path-stylecontent_type(string, optional): 显式 Content-Typemetadata(record<string,string>, optional): 对象元数据
在任务结束时发送通知,可同时发系统通知和多个 webhook 目标。
task_name(string, required): 任务名status(success|failed|cancelled, optional, default:success): 任务状态summary(string, optional): 任务摘要duration_sec(number >= 0, optional): 耗时(秒)target(string[], optional, default:["system"]): 通知目标,如["system", "feishu", "wecom"]webhook_payloads(record<string, unknown>, optional): webhook 的按目标 payload 覆盖webhook_timeout_ms(positive int, optional): webhook 超时(毫秒)
返回特性:
- 采用
Promise.allSettled聚合所有目标结果 - 只要有一个目标失败,工具返回
isError=true - 即使失败,也会返回完整逐目标结果数组
npm install
npm run lint
npm run format:check
npm run check
npm test
npm run build
npm startnpm start 后服务监听 stdio,供 MCP Client 拉起。
说明:
npm run build会使用esbuild直接产出单一 bundle:dist/index.js(已压缩)。npm run ci会执行lint + format:check + check + coverage + build,与 CI 保持一致。
发布 npm 后,用户可直接:
npx -y @mcell/mcell-mcp-server不同 agent 的配置文件格式不同,但核心都是配置 command + args。
[mcp_servers.mcell]
command = "npx"
args = ["-y", "@mcell/mcell-mcp-server"]
[mcp_servers.mcell.env]
AWS_REGION = "us-east-1"
MCELL_NOTIFY_WEBHOOK_FEISHU = "https://open.feishu.cn/open-apis/bot/v2/hook/xxx"
MCELL_NOTIFY_WEBHOOK_WECOM = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=xxx"{
"mcpServers": {
"mcell": {
"command": "npx",
"args": ["-y", "@mcell/mcell-mcp-server"],
"env": {
"AWS_REGION": "us-east-1"
}
}
}
}填写同样的进程启动参数即可:
command:npxargs:["-y", "@mcell/mcell-mcp-server"]
使用 AWS SDK 默认凭证链,建议通过环境变量注入:
AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEYAWS_SESSION_TOKEN(可选)AWS_REGION(可选)
内容工具采用“远端优先 + 本地缓存兜底”,并且只处理 blog 类型条目。
MCELL_CONTENT_INDEX_URL- 默认:
https://stack.mcell.top/mcp/index.json
- 默认:
MCELL_CONTENT_CACHE_DIR- 默认:
~/.cache/mcell-mcp/content
- 默认:
MCELL_CONTENT_CACHE_TTL_SECONDS- 默认:
1800
- 默认:
MCELL_CONTENT_REQUEST_TIMEOUT_SECONDS- 默认:
20
- 默认:
MCELL_NOTIFY_WEBHOOK_<ALIAS>- webhook 地址配置,
<ALIAS>不区分大小写 - 示例:
MCELL_NOTIFY_WEBHOOK_FEISHU、MCELL_NOTIFY_WEBHOOK_WECOM - 内置别名:
feishu、wecom;wechat会自动映射到wecom
- webhook 地址配置,
MCELL_NOTIFY_WEBHOOK_TIMEOUT_MS- 默认:
10000 - webhook 请求超时(毫秒)
- 默认:
调用示例:
{
"name": "notify_task_complete",
"arguments": {
"task_name": "Long analysis",
"status": "success",
"summary": "report generated",
"duration_sec": 132,
"target": ["system", "feishu", "wecom"]
}
}- 更新
package.json的version - 确认
bin指向dist/index.js npm run cinpm publish --access public --provenance
仓库包含两个 workflow:
.github/workflows/ci.ymlpush/pull_request触发- 运行
npm ci、npm run check、npm run test:coverage、npm run build
.github/workflows/publish.ymlmain分支package.json变化时触发- 只有当
version与上一个 commit 不同时才会发布 - 若 npm 上已存在该版本则跳过发布
需要在 GitHub 仓库 Secrets 中配置:
NPM_TOKEN: npm publish token
发布后用户端基本只需 npx -y @mcell/mcell-mcp-server 即可接入。