Hatena博客MCP服务器
为了在博客上投稿、更新报道MCP(Model Context Protocol)服务器。Claude Code等的AI助手可以与博客合作进行报道管理。 因为是个人出于兴趣而开发的,所以请自己负责使用。
🚀 主要功能
- 记事投稿:发布新博客文章
- 记事更新:编辑和更新现有文章
- 记事取得:获取指定文章的详细信息
- 记事一覧:浏览博客文章
- Markdown対応: Markdown直接从文件发布文章
- Front Matter対応: YAML Front Matter元数据管理
📋 必要的准备
1.博客大巴API获取密钥
- 网易博客登录
- 从帐户设置API获取密钥
- 博客用户名和博客域(例如:username.hatenablog.com)确认
2.环境设定
项目根目录 .env 创建文件并设置以下信息:
HATENA_USERNAME=your_username
HATENA_BLOG_DOMAIN=your_username.hatenablog.com
HATENA_API_KEY=your_api_key_here🛠️ 安装,安装
前提条件
- Python 3.12以上
- uv(Python 包管理器)
安装说明
- 克隆存储库
git clone https://github.com/YusukeHayashiii/hatena-mcp-server.git
cd hatena-mcp-server- 安装相关性
uv sync --extra dev- 环境设定
cp .env.example .env
# .env ファイルを編集して認証情報を設定- 测试运行
uv run pytest -q🏃 使用方法
MCP启动服务器
uv run src/hatena_blog_mcp/server.pyClaude Code 在中使用
- Claude Code 单击功能区上MCP 连接到服务器
- 查看可用工具
- 使用工具执行博客操作
Claude Code(VS Code/Claude Desktop)利用设定
- 创建配置文件(或添加到现有文件中)
~/.claude.json在中添加以下内容(在用户范围中添加)
※正式文档 那么,那么claude add [args...] 虽然写着,但是因为没能设定好所以直接设定了……
{
"mcpServers": {
"hatena-mcp": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/hatena-mcp-server",
"run",
"src/hatena_blog_mcp/server.py"
]
}
}
}- 注意:
- /absolute/path/to/hatena-mcp-server 替换为实际项目路径 - .env 位于项目正下方(.env 自动加载假定存储库正下方) - 依赖关系需要提前 uv sync(也进行开发时 uv sync --extra dev)
- Claude Code 重新启动
- 重新启动后连接成功后
hatena-mcp的工具群可用
- 动作确认
- 在工具列表中
create_blog_post,update_blog_post,get_blog_post,list_blog_posts,create_blog_post_from_markdown显示 - 示例(请求获取列表):
list_blog_posts(limit=5) を実行してください- 常见错误
- 未显示工具:
.mcp.json路径/拼写错误--directory确认路径错误
- 验证错误:
.env的,之HATENA_USERNAME,HATENA_BLOG_DOMAIN,HATENA_API_KEY重新确认
- 参考:设置文件的放置位置为官方文档(Claude Code 配置指南),模板名称将采用不同的格式
🔧 可用的MCP工具
create_blog_post
发布新的博客文章。
参数:
title(必需):文章标题content(必须):记事の本文(HTML形式)categories(可选):类别列表
使用例:
create_blog_post(
title="新しい記事",
content="
記事の本文です。
",
categories=["技術", "Python"]
)update_blog_post
更新现有文章。
参数:
post_id(必需):更新文章的IDtitle(可选):新标题content(可选):新正文categories(可选):新类别
get_blog_post
获取指定文章的详细信息。
参数:
post_id(必需):获取的文章的ID
list_blog_posts
获取博客文章列表。
参数:
limit(可选):获取的文章数量上限(默认值:10,最大值:100)
create_blog_post_from_markdown
Markdown从文件中发布文章。
参数:
path(必需):Markdown文件路径
Front Matter例:
---
title: 記事のタイトル
categories: [技術, Python]
---
# 記事本文
Markdownで記述された本文がHTMLに変換されます。🧪 测试
运行所有测试
uv run pytest -v仅运行单元测试
uv run pytest tests/unit/ -v仅运行集成测试
uv run pytest tests/integration/ -v覆盖测试
uv run pytest --cov=src --cov-report=html📁 项目结构
hatena-mcp-server/
├── src/
│ └── hatena_blog_mcp/
│ ├── server.py # MCP サーバーのメイン実装
│ ├── auth.py # WSSE 認証管理
│ ├── blog_service.py # ブログ操作サービス
│ ├── config.py # 設定管理
│ ├── error_handler.py # エラーハンドリング
│ ├── http_client.py # HTTP クライアント
│ ├── markdown_importer.py # Markdown インポーター
│ ├── models.py # データモデル
│ ├── rate_limiter.py # レート制限
│ ├── service_factory.py # サービスファクトリ
│ └── xml_processor.py # AtomPub XML 処理
├── tests/
│ ├── unit/ # ユニットテスト
│ └── integration/ # 統合テスト
├── .env.example # 環境変数テンプレート
├── pyproject.toml # プロジェクト設定
└── README.md # このファイル🛠️ 开発
开发环境设置
# 開発用依存関係込みでインストール
uv sync --extra dev
# プリコミットフックの設定
uv run pre-commit install代码质量检查
# リンティング
uv run ruff check src tests
# 型チェック
uv run mypy src
# フォーマット
uv run ruff format src tests🐛 故障排除
发生认证错误时
.env确认文件的设定值- 在博客的设定画面上API确认密钥是否有效
- 验证用户名和博客域是否正确
发生网络错误时
- 检查互联网连接
- 检查防火墙设置
- 如果需要代理设置,则设置环境变量
如果测试失败
# テスト用環境変数を設定
export HATENA_USERNAME=test_user
export HATENA_BLOG_DOMAIN=test_user.hatenablog.com
export HATENA_API_KEY=test_key
# テスト実行
uv run pytest -v📚 参考资料
📝 许可证
MIT许可证
📧 联系我们
如果有问题或建议问题 请通知我。
