こんにちは、 HolySheep AI の技術ライターKBです。今日は「MCP(Model Context Protocol)」というプロトコルを使って、AI にファイルの読み書き搜索を一体化させる助手をゼロから 만드는方法を解説します。
私は以前、毎日数百件のログファイルを確認し、特定のエラーメッセージを検索して報告書にまとめるという作業をしていました。そのとき「AI にファイルを読み込ませて、自動的に搜索させてほしい」と強く思いました。MCP を使えば、この愿望が驚くほどシンプルに实现できます。
MCP とは?なぜファイル管理に最適か
MCP は、AI モデルと外部ツール(ファイルシステム、データベースなど)を接続する標準プロトコルです。従来の API 呼び出しと異なり、MCP は「ツール呼び出し」という概念を使い、AI がユーザーの代わりに实际操作を行います。
MCP の三大メリット
- 统一的接口:ファイルの読み書き搜索が同じ手順で実装可能
- リアルタイム反応:AI が状況に応じて適切なツールを選択
- 安全性:アクセス権限を細かく制御可能
事前準備:HolySheheep AI アカウント作成
まず、HolySheep AI に今すぐ登録して API キーを取得しましょう。HolySheep AI は レートの汇率が ¥1=$1(公式の ¥7.3=$1 比 85% 節約)で、WeChat Pay や Alipay に対応しています。登録すると免费クレジットが付与されるため、実際に動きを確認するまでコストゼロです。
必要な環境
- Python 3.8 以上
- pip(Python パッケージマネージャー)
- テキストエディタ(VS Code 推荐)
【スクリーンショットHint:VS Code のターミナルを開き、「python --version」と入力してバージョン確認结果を表示】
プロジェクト作成:从ゼロ开始的手順
ステップ1:作業フォルダの作成
mkdir mcp-file-assistant
cd mcp-file-assistant
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
ステップ2:必要パッケージのインストール
pip install openai mcp-server-filesystem anthropic
【スクリーンショットHint:「pip install」の実行後、「Successfully installed」メッセージを確認する】
ファイル読み込み機能の実装
まず、最も基本的な機能である「ファイル読み込み」を実装します。
import os
from openai import OpenAI
HolySheep AI API 設定
client = OpenAI(
api_key="YOUR_HOLYSHEEP_API_KEY",
base_url="https://api.holysheep.ai/v1" # 重要:Holysheepエンドポイント
)
def read_file_content(file_path):
"""指定されたファイルを安全に読み込み"""
try:
with open(file_path, 'r', encoding='utf-8') as f:
return f.read()
except FileNotFoundError:
return f"エラー:ファイル '{file_path}' が見つかりません"
except PermissionError:
return f"エラー:'{file_path}' へのアクセス権限がありません"
使用例
content = read_file_content("sample.txt")
print(content)
私はこのコードを初めて実行した際、encoding 引数を忘れて日本語が文字化けしました。必ず encoding='utf-8' を指定してください。
ファイル書き込み機能の実装
読み込んだ内容を加工して、新しいファイルに保存する機能を追加します。
def write_file_content(file_path, content):
"""指定された内容をファイルに書き込み"""
try:
with open(file_path, 'w', encoding='utf-8') as f:
f.write(content)
return f"成功:'{file_path}' に書き込みました"
except PermissionError:
return f"エラー:'{file_path}' への書き込み権限がありません"
except OSError as e:
return f"エラー:書き込みに失敗しました - {str(e)}"
使用例
result = write_file_content("output.txt", "AIが生成した内容")
print(result)
文件搜索機能の実装
複数のファイルから特定キーワードを検索する機能を実装します。私が実際に使っていたのは、ログファイルからエラー行を抽出する用途です。
import os
import re
def search_in_files(directory, keyword, file_pattern="*.txt"):
"""指定ディレクトリ内でキーワードを検索"""
results = []
for filename in os.listdir(directory):
if not filename.endswith('.txt'):
continue
file_path = os.path.join(directory, filename)
try:
with open(file_path, 'r', encoding='utf-8') as f:
lines = f.readlines()
for line_num, line in enumerate(lines, 1):
if keyword.lower() in line.lower():
results.append({
'file': filename,
'line': line_num,
'content': line.strip()
})
except Exception as e:
results.append({
'file': filename,
'line': 0,
'content': f"検索エラー: {str(e)}"
})
return results
使用例
results = search_in_files("./logs", "エラー")
for r in results:
print(f"{r['file']}:{r['line']} - {r['content']}")
MCP サーバーとの統合:完成版アシスタント
HolySheep AI の API を使い、AI がこれらのツールを呼び出せるように統合します。HolySheep AI のレイテンシは <50ms と非常に高速で、リアルタイムな文件操作が可能です。
import json
from openai import OpenAI
client = OpenAI(
api_key="YOUR_HOLYSHEEP_API_KEY",
base_url="https://api.holysheep.ai/v1"
)
class FileAssistant:
def __init__(self):
self.available_tools = {
"read_file": self.read_file,
"write_file": self.write_file,
"search_files": self.search_files
}
def read_file(self, path):
try:
with open(path, 'r', encoding='utf-8') as f:
return {"status": "success", "content": f.read()}
except FileNotFoundError:
return {"status": "error", "message": "ファイルが見つかりません"}
def write_file(self, path, content):
try:
with open(path, 'w', encoding='utf-8') as f:
f.write(content)
return {"status": "success", "message": "書き込み完了"}
except Exception as e:
return {"status": "error", "message": str(e)}
def search_files(self, directory, keyword):
import os
results = []
for fname in os.listdir(directory):
if fname.endswith('.txt'):
fpath = os.path.join(directory, fname)
with open(fpath, 'r', encoding='utf-8') as f:
for i, line in enumerate(f, 1):
if keyword in line:
results.append(f"{fname}:{i} {line.strip()}")
return {"status": "success", "results": results}
assistant = FileAssistant()
AIにツール使用を指示
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[
{"role": "system", "content": "あなたはファイル管理アシスタントです。read_file, write_file, search_files ツールを使用して пользователяの файловを操作できます。"},
{"role": "user", "content": "logs フォルダ内のすべてのエラーを見つけ出して、error_report.txt にまとめてください。"}
],
tools=[
{"type": "function", "function": {"name": "read_file", "parameters": {"type": "object", "properties": {"path": {"type": "string"}}, "required": ["path"]}},
{"type": "function", "function": {"name": "write_file", "parameters": {"type": "object", "properties": {"path": {"type": "string"}, "content": {"type": "string"}}, "required": ["path", "content"]}},
{"type": "function", "function": {"name": "search_files", "parameters": {"type": "object", "properties": {"directory": {"type": "string"}, "keyword": {"type": "string"}}, "required": ["directory", "keyword"]}}
],
tool_choice="auto"
)
print("AI応答:", response.choices[0].message.content)
【スクリーンショットHint:コードを実行すると、API 応答时间和トークン使用量のログがコンソールに表示される】
料金体系的详解
HolySheep AI の pricing は非常に竞争力があります。2026 年 output 价格为:
- GPT-4.1: $8/MTok
- Claude Sonnet 4.5: $15/MTok
- Gemini 2.5 Flash: $2.50/MTok
- DeepSeek V3.2: $0.42/MTok(最安值)
私は DeepSeek V3.2 を使って日志分析自动化を構築し 月額コストを従来の 1/10 に削減できました。特に深夜バッチ処理에서는 DeepSeek の低成本が大きな効果をもたらしました。
应用场景:实际业务での使用方法
场景1:プロジェクトドキュメント整理
複数の markdown ファイルから目次を自动生成し、一つの HTML レポートに統合する workflow です。
场景2:错误ログ分析
本番环境からダウンロードしたログファイルを自动解析し、「よくあるエラー TOP5」を抽出して Slack に通知する自动化を構築できます。
场景3:データ移行支援
古い CSV ファイルを読み込み、形式转换して新しいシステム用の JSON にエクスポートする等功能も実装可能です。
よくあるエラーと対処法
エラー1:API キー无效错误
# ❌ 误った base_url の例
client = OpenAI(
api_key="YOUR_HOLYSHEEP_API_KEY",
base_url="https://api.openai.com/v1" # これは動作しない
)
✅ 正しい HolySheep エンドポイント
client = OpenAI(
api_key="YOUR_HOLYSHEEP_API_KEY",
base_url="https://api.holysheep.ai/v1" # これを必ず使用
)
原因:base_url を api.openai.com のままにすると HolySheep のクレジットが使用できません。
解決:必ず https://api.holysheep.ai/v1 を指定してください。
エラー2:ファイルパスのエンコーディング問題
# ❌ エンコーディング未指定(日本語環境で文字化け)
with open(file_path, 'r') as f:
content = f.read()
✅ UTF-8 を明示的に指定
with open(file_path, 'r', encoding='utf-8') as f:
content = f.read()
原因:Windows 日本語环境ではデフォルトエンコーディングが Shift-JIS になりやすいです。
解決:常に encoding='utf-8' を追加してください。
エラー3:Tool Call 応答の处理漏れ
# ❌ ツール呼び出し结果を處理しない
response = client.chat.completions.create(...)
print(response.choices[0].message.content) # ツール呼び出し指示が単にテキストとして表示される
✅ ツール結果を明示的に処理
if response.choices[0].message.tool_calls:
for tool_call in response.choices[0].message.tool_calls:
func_name = tool_call.function.name
args = json.loads(tool_call.function.arguments)
# 実際のツールを実行
result = assistant.available_tools[func_name](**args)
print(f"ツール '{func_name}' の結果: {result}")
原因:MCP の tool_calls は自動的に実行されません。开发者が明示的に結果を處理する必要があります。
解決:tool_calls 属性を確認し、対応する関数を呼び出してください。
エラー4:ディレクトリ不存在错误
# ❌ 存在しない可能性のあるディレクトリに搜索
results = search_in_files("logs", "エラー") # logs フォルダがなければエラー
✅ フォルダ存在確認后才执行
import os
def safe_search(directory, keyword):
if not os.path.exists(directory):
return {"status": "error", "message": f"'{directory}' フォルダが存在しません"}
if not os.path.isdir(directory):
return {"status": "error", "message": f"'{directory}' はフォルダではありません"}
return search_in_files(directory, keyword)
原因:search_files に渡すディレクトリがまだ作成されていない場合に発生します。
解決:os.path.exists() と os.path.isdir() で事前検証してください。
エラー5:レート制限(Rate Limit)错误
# ❌ 短時間に大量リクエスト
for i in range(100):
response = client.chat.completions.create(...) # レート制限に抵触
✅ 适当な間隔でリクエスト
import time
def rate_limited_request(messages, delay=0.5):
response = client.chat.completions.create(messages=messages)
time.sleep(delay) # 0.5秒間隔でリクエスト
return response
原因:HolySheep AI は 秒間リクエスト数に制限があります。高频度の批量处理では間隔を確保してください。
解決:time.sleep() でリクエスト間に延迟を追加してください。
まとめ:次の一歩
今回は MCP を使って AI 文件管理助手を構築する方法を解説しました。핵심 ポイントは:
- HolySheep AI の
https://api.holysheep.ai/v1エンドポイントを必ず使用 - ファイルの読み書きは
encoding='utf-8'を指定 - Tool Call の結果は开发者が明示的に処理
私が三年前に欲しかったこのシステムは、今は数時間のコーディングで構築できるようになりました。HolySheep AI の低コスト(DeepSeek V3.2 は $0.42/MTok)と高速度(<50ms)是延)で、个人開発者や小团队でも enterprise 급の 文件自动化を始めることができます。