あらかじめ用意されたBlogger投稿用のPythonスクリプトを、ClaudeなどのAIアシスタントから直接呼び出せるようにする方法をご存知でしょうか?
今回は、MCP(Model Context Protocol)に対応した専用サーバー「Blogger_mcp_server」を構築し、AIエディタから直接操作できる環境を作成します。これにより、チャット画面で「この記事をBloggerに投稿して!」と指示するだけで、AI自身がブログへ自動投稿できるようになります。

【ソースコードの公開について】
本MCPサーバーのコードは、以下のGitHubリポジトリで公開しています。
👉 https://github.com/tai1mo/blogger-cli-mcp
はじめに:なぜ「サーバー化」が必要なのか?
そもそも、「AIにターミナルからスクリプトを実行させるシェルコマンドを叩かせればいいのでは?」と思うかもしれません。実際、これも可能ですが、大きな落とし穴があります。
コマンドライン実行の限界(エスケープ問題)
ブログ本文のような複雑なHTML文字列や、ダブルクォーテーション(")を含む長文をシェルコマンドの引数として渡すと、エスケープ処理が破綻しやすく、エラーが頻発します。
しかし、MCPサーバーとして専用のツール(関数)をAIに提供すれば、JSON-RPC通信(標準入出力)を利用して文字列を安全な引数として直接受け渡せるため、エスケープ問題が解消しやすくなり、非常に安定した動作が実現します。
システム構成と技術スタック
- 使用言語: Python 3
- 主要ライブラリ:
mcp(FastMCP): 軽量かつ簡潔にMCPサーバーを構築するためのフレームワーク。- Bloggerへの投稿を行うカスタムモジュール(例:
post_article関数) - 通信方式: JSON-RPC over stdio
Blogger_mcp_serverの仕組みと実装
今回は、Python向けのMCPフレームワークである「FastMCP」を使用します。コアロジックを関数としてモジュール化しておけば、サーバー側のコードは非常にシンプルです。
from mcp.server.fastmcp import FastMCP
from blogger_post import post_article
# サーバーの初期化
mcp = FastMCP("Blogger MCP Server")
@mcp.tool()
def post_to_blogger(title: str, content: str, labels: list = None, status: str = "draft") -> str:
"""Bloggerへ記事を投稿します。"""
try:
# モジュール化した関数を呼び出す
url = post_article(title=title, content=content, labels=labels, status=status)
return f"記事の投稿に成功しました!\nURL: {url}"
except Exception as e:
return f"エラーが発生しました。対処法を確認してください: {e}"
if __name__ == "__main__":
mcp.run()
このように、@mcp.tool() デコレータをつけるだけで、AI側が「どのような引数が必要なツールか」を自動で認識し、利用できるようになります。
実装のポイント:AIに寄り添ったエラーハンドリング
MCPサーバーの実装で重要なのは、「AI(またはその先のユーザー)がエラーの原因と対処法を理解できるようにする」ことです。
システムを強制終了(sys.exit)させたり、難解なスタックトレースを投げるのではなく、try-except で細かく捕捉し、「トークンが失効しています。ターミナルから直接実行して再認証してください」といった具体的な対処法を分かりやすい日本語の文字列として返すように工夫しています。
これにより、AI自身がエラー文を解釈し、ユーザーに対して的確なアドバイスを行えるようになります。
AIアシスタントへの組み込み方法(Claude Desktop)
作成したサーバーをClaude Desktopに認識させるには、設定ファイル(claude_desktop_config.json)に追記します。
{
"mcpServers": {
"blogger-server": {
"command": "path/to/venv/bin/python",
"args": [
"path/to/Blogger_mcp_server.py"
]
}
}
}
設定後、Claude Desktopを再起動すると、チャットUI上にBlogger投稿ツールが認識されます。あとは「記事を書いて、そのままBloggerに下書き保存して」と頼むだけで、シームレスな自動投稿が実現します。
まとめ
自作のPythonスクリプトをFastMCPでラップすることで、AIアシスタントの機能を簡単に拡張できました。エスケープの煩わしさから解放され、執筆から投稿までがAI環境内で完結する環境を構築できます。MCPを活用したブログ運用にぜひ挑戦してみてください。
0 件のコメント:
コメントを投稿