🚀 Emlog MCP Server
Emlog MCP Server 是一个基于模型上下文协议(MCP)的 Emlog 博客系统集成服务,它允许 AI 助手通过标准化接口与 Emlog 博客进行交互,为博客管理和内容获取提供了便捷的途径。
🚀 快速开始
你可以选择直接使用该服务,也可以进行本地开发安装:
方法一:直接使用(推荐)
无需本地安装,可直接在 Claude Desktop 配置中使用 emlog-mcp
。请跳至 MCP 客户端配置 部分。
方法二:本地开发安装
1. 克隆项目
git clone https://github.com/eraincc/emlog-mcp.git
cd emlog-mcp
2. 安装依赖
npm install
3. 环境变量配置
复制示例配置文件并进行编辑:
cp .env.example .env
在 .env
文件中设置以下环境变量:
EMLOG_API_URL=https://your-emlog-site.com
EMLOG_API_KEY=your_api_key_here
获取 API 密钥:
- 登录你的 Emlog 后台管理系统。
- 进入“设置”→“API 接口”。
- 启用 API 功能并生成 API 密钥。
- 将生成的密钥复制到
.env
文件中。
4. 构建项目
npm run build
5. 运行服务
npm start
或者使用开发模式:
npm run dev
✨ 主要特性
资源
- 博客文章 (
emlog://articles
) - 获取所有博客文章列表
- 分类 (
emlog://categories
) - 获取所有分类信息
- 评论 (
emlog://comments
) - 获取评论列表(基于最新文章)
- 微笔记 (
emlog://notes
) - 获取微笔记列表
- 草稿文章 (
emlog://drafts
) - 获取所有草稿文章列表
- 用户信息 (
emlog://user
) - 获取当前用户信息
工具
- create_article - 创建新的博客文章
- update_article - 更新现有的博客文章
- get_article - 获取特定文章的详细信息
- search_articles - 搜索文章(支持关键字、标签、分类过滤)
- like_article - 点赞文章
- add_comment - 添加评论
- get_comments - 获取特定文章的评论列表
- create_note - 创建微笔记
- upload_file - 上传文件(图片和其他媒体资源)
- get_user_info - 获取用户信息
- get_draft_list - 获取草稿文章列表
- get_draft_detail - 获取特定草稿的详细信息
🔧 技术细节
本项目使用的技术栈如下:
- TypeScript - 类型安全的 JavaScript 超集
- Node.js - JavaScript 运行时环境
- MCP SDK - 模型上下文协议 TypeScript SDK
- Axios - HTTP 客户端库
- Zod - 以 TypeScript 为先的模式验证库
- form-data - 多部分表单数据处理
📦 安装指南
方法一:直接使用(推荐)
使用 emlog-mcp
直接在 Claude Desktop 配置中,无需本地安装。跳转至 MCP 客户端配置 部分。
方法二:本地开发安装
1. 克隆项目
git clone https://github.com/eraincc/emlog-mcp.git
cd emlog-mcp
2. 安装依赖
npm install
3. 环境变量配置
复制示例配置文件并编辑:
cp .env.example .env
在 .env
文件中设置以下环境变量:
EMLOG_API_URL=https://your-emlog-site.com
EMLOG_API_KEY=your_api_key_here
获取 API 密钥:
- 登录你的 Emlog 后台管理系统。
- 进入“设置”→“API 接口”。
- 启用 API 功能并生成 API 密钥。
- 将生成的密钥复制到
.env
文件中。
4. 构建项目
npm run build
5. 运行服务
npm start
或者使用开发模式:
npm run dev
💻 使用示例
基础用法
创建博客文章
{
"name": "create_article",
"arguments": {
"title": "My New Article",
"content": "This is the article content, supporting HTML and Markdown formats.",
"sort_id": 1,
"tag": "technology,programming,MCP",
"is_private": "n",
"allow_comment": "y"
}
}
搜索文章
{
"name": "search_articles",
"arguments": {
"keyword": "technology",
"page": 1,
"count": 10
}
}
获取文章列表
{
"uri": "emlog://articles"
}
获取草稿列表
{
"name": "get_draft_list",
"arguments": {
"count": 10
}
}
获取草稿详情
{
"name": "get_draft_detail",
"arguments": {
"id": 123
}
}
上传文件
{
"name": "upload_file",
"arguments": {
"file_path": "/path/to/image.jpg"
}
}
创建微笔记
{
"name": "create_note",
"arguments": {
"content": "This is a micro note",
"is_private": false
}
}
📚 详细文档
MCP 客户端配置
Claude Desktop 配置
添加到 Claude Desktop 配置文件(通常位于 ~/Library/Application Support/Claude/claude_desktop_config.json
):
{
"mcpServers": {
"emlog": {
"command": "npx",
"args": ["emlog-mcp"],
"env": {
"EMLOG_API_URL": "https://your-emlog-site.com",
"EMLOG_API_KEY": "your_api_key_here"
}
}
}
}
注意: 此配置直接使用已发布的 npm 包 emlog-mcp
,无需本地安装或编译。npx
将自动下载并运行最新版本。
项目还提供了示例配置文件 claude-desktop-config.json
以供参考。
其他 MCP 客户端
对于其他支持 MCP 的客户端,请参考其各自的文档进行标准输入输出传输配置。
API 接口文档
本服务基于 Emlog 的 REST API 构建,支持以下主要操作:
文章管理
GET /api/article_list
- 获取文章列表
GET /api/article_view
- 获取特定文章的详细信息
POST /api/article_save
- 创建/更新文章
POST /api/article_like
- 点赞文章
草稿管理
GET /api/draft_list
- 获取草稿列表
GET /api/draft_detail
- 获取特定草稿的详细信息
分类管理
GET /api/sort_list
- 获取分类列表
评论管理
GET /api/comment_list
- 获取评论列表
POST /api/comment_save
- 发布评论
微笔记
GET /api/note_list
- 获取微笔记列表
POST /api/note_save
- 发布微笔记
文件上传
用户管理
GET /api/userinfo
- 获取用户信息
🔧 错误处理
本服务包含全面的错误处理机制:
- 网络错误 - 自动重试和超时处理
- API 错误 - 返回详细的错误信息
- 认证错误 - API 密钥验证失败提示
- 参数错误 - 输入参数验证和提示
🛠️ 开发与调试
可用脚本
npm run build
npm start
npm run dev
npm run watch
npm test
日志输出
服务将运行时状态信息输出到标准错误输出(stderr),用于调试:
Emlog MCP server running on stdio
测试服务
项目包含一个简单的测试脚本 test-server.js
,用于验证服务是否正常工作:
node test-server.js
⚠️ 安全考虑
- API 密钥保护 - 确保 API 密钥不被泄露,使用环境变量进行存储。
- HTTPS 连接 - 在生产环境中,建议使用 HTTPS 连接到 Emlog API。
- 权限控制 - 确保 API 密钥具有适当的权限范围。
- 输入验证 - 对所有用户输入进行验证和清理。
🐞 故障排除
常见问题
- 连接失败
- 检查
EMLOG_API_URL
是否正确。
- 确认 Emlog 站点是否可访问。
- 认证失败
- 验证
EMLOG_API_KEY
是否有效。
- 检查 API 密钥权限。
- 工具调用失败
- 在错误消息中检查具体原因。
- 确认参数格式是否正确。
📁 项目结构
emlog-mcp/
├── src/ # 源代码目录
│ ├── index.ts # MCP 服务主入口
│ └── emlog-client.ts # Emlog API 客户端
├── dist/ # 编译输出目录
├── docs/ # 文档目录
│ └── api_doc.md # 详细的 Emlog API 文档
├── .env.example # 环境变量示例文件
├── .gitignore # Git 忽略文件配置
├── claude-desktop-config.json # Claude Desktop 配置示例
├── test-server.js # 测试脚本
├── package.json # 项目配置和依赖
├── tsconfig.json # TypeScript 配置
└── README.md # 项目文档
🤝 贡献
欢迎提交 Issues 和 Pull Requests 来改进本项目。在提交代码之前,请确保:
- 代码通过 TypeScript 编译检查。
- 遵循项目的代码风格。
- 添加适当的错误处理。
- 更新相关文档。
📄 许可证
本项目采用 MIT 许可证。
🔗 相关链接