MCP Tools について
MCP Tools は FastMCP で実装されたカスタム MCP サーバーで、Claude Desktop などの LLM クライアントにローカルのファイル操作とコマンド実行を提供します。モデルにローカルシステムへのアクセスを定義されたツールインターフェース経由で与えたい利用者向けです。
主な機能
- 01シェルコマンドの実行と stdout/stderr の取得
- 02行範囲を指定したファイル内容の表示
- 03正規表現によるファイル内検索
- 04文字列置換や行操作によるファイル編集
- 05ファイルへの書き込みと追記
活用シーン
- 01モデルによるローカルのコードファイルの読み取りと検索
- 02Claude Desktop からのローカルスクリプトの実行と出力確認
- 03設定ファイルへの部分的な修正
MCP 対応
本プロジェクトは MCP サーバーであり、ファイルの表示・検索・編集・書き込みおよびコマンド実行を MCP クライアントへツールとして公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP ツール
Claude Desktop やその他の LLM クライアント向けに、ファイルシステムおよびコマンド実行ツールを提供するカスタム Model Context Protocol(MCP)サーバーの実装です。
Model Context Protocol とは?
Model Context Protocol(MCP)は、アプリケーションが大規模言語モデル(LLM)にコンテキストを提供する方法を標準化するオープンプロトコルです。USB-C ポートがさまざまな周辺機器にデバイスを接続する標準的な方法を提供するのと同様に、MCP は AI モデルをさまざまなデータソースやツールに接続する標準的な方法を提供します。
このプロジェクトは、Claude やその他の LLM がローカルファイルシステムと対話し、コマンドを実行できる便利なツールをいくつか備えた FastMCP サーバーを実装しています。明確に定義されたツールインターフェースを通じて制御された方法でローカルシステムへのアクセスを提供し、LLM の機能を拡張します。
MCP の主なメリット
- 標準化された統合:MCP は、LLM が直接接続して利用できる、増え続ける事前構築済みの統合機能を提供します
- ベンダーの柔軟性:LLM プロバイダーやベンダー(Claude、GPT-4o、Gemini など)を簡単に切り替えられます
- セキュリティ:インフラストラクチャ内でデータを保護するためのベストプラクティスを提供します
- ツールの公開:既存のツールをカプセル化し、MCP 互換のあらゆる LLM クライアントから利用できるようにします
機能
MCP サーバーは、以下のファイルシステムおよびコマンド実行ツールを提供します。
- execute_shell_command:シェルコマンドを実行し、標準出力/標準エラーの結果を取得します
- show_file:行範囲を指定してファイルの内容を表示します(指定は任意です)
- search_in_file:正規表現を使用してファイル内のパターンを検索します
- edit_file:文字列置換や行単位の操作によってファイルを正確に変更します
- write_file:ファイルに内容を書き込むか、追記します
MCP アーキテクチャ
MCP はクライアント/サーバーアーキテクチャに従います。
- ホスト:接続を開始する LLM アプリケーション(Claude Desktop や IDE など)
- クライアント:ホストアプリケーション内で、サーバーとの 1 対 1 の接続を維持します
- サーバー:クライアントにコンテキスト、ツール、プロンプトを提供します(このプロジェクトではサーバーを実装しています)
前提条件
- Python 3.10 以降
- MCP 互換のクライアント(Claude Desktop、または MCP をサポートするその他のクライアント)
インストール
- uv をインストールします
- このリポジトリをクローンするか、ソースコードをダウンロードします
uv run mcp installを実行して MCP サーバーをインストールしますwhich uvを実行して、uv実行ファイルの絶対パスを取得します- Claude Desktop の MCP サーバー設定を更新し、
uv実行ファイルの絶対パスを指定します
私の MCP サーバー設定は次のようになっています。
{
"globalShortcut": "",
"mcpServers": {
"zbigniew-mcp": {
"command": "/Users/zbigniewtomanek/.local/bin/uv",
"args": [
"run",
"--with",
"mcp[cli]",
"--with",
"marker-pdf",
"mcp",
"run",
"/Users/zbigniewtomanek/PycharmProjects/my-mcp-tools/server.py"
]
}
}
}
使い方
Claude Desktop から接続する
- Claude Desktop を開きます
- 識別子「zbigniew-mcp」を使用して MCP サーバーに接続します
注:この実装では Claude Desktop に重点を置いていますが、MCP はあらゆる MCP 互換ツールや LLM クライアントと互換性を持つように設計されており、柔軟な実装と統合が可能です。
利用可能なツール
execute_shell_command
引数のリストを使用して、シェルコマンドを安全に実行します。
execute_shell_command(["ls", "-la"])
execute_shell_command(["grep", "-r", "TODO", "./src"])
execute_shell_command(["python", "analysis.py", "--input", "data.csv"])
execute_shell_command(["uname", "-a"])
show_file
行範囲を指定してファイルの内容を表示します(指定は任意です)。
show_file("/path/to/file.txt")
show_file("/path/to/file.txt", num_lines=10)
show_file("/path/to/file.txt", start_line=5, num_lines=10)
search_in_file
正規表現を使用してファイル内のパターンを検索します。
search_in_file("/path/to/script.py", r"def\s+\w+\s*\(")
search_in_file("/path/to/code.py", r"#\s*TODO", case_sensitive=False)
edit_file
ファイルを正確に変更します。
# Replace text
edit_file("config.json", replacements={"\"debug\": false": "\"debug\": true"})
# Insert at line 5
edit_file("script.py", line_operations=[{"operation": "insert", "line": 5, "content": "# New comment"}])
# Delete lines 10-15
edit_file("file.txt", line_operations=[{"operation": "delete", "start_line": 10, "end_line": 15}])
# Replace line 20
edit_file("file.txt", line_operations=[{"operation": "replace", "line": 20, "content": "Updated content"}])
write_file
ファイルに内容を書き込むか、追記します。
# Overwrite file
write_file("/path/to/file.txt", "New content")
# Append to file
write_file("/path/to/log.txt", "Log entry", mode="a")
fetch_page
ウェブページの内容を PDF に取得し(chromium のインストールが必要です)、その後、ローカル LLM を使用して Markdown に解析します。
fetch_page("https://example.com")
トランスポート方式
MCP は、クライアントとサーバー間の通信に複数のトランスポート方式をサポートしています。
- 標準入力/標準出力(stdio):通信に標準入力/標準出力を使用します。ローカルプロセスに適しています
- サーバー送信イベント(SSE):サーバーからクライアントへのストリーミングを可能にし、クライアントからサーバーへの通信には HTTP POST リクエストを使用します
この実装では、テキスト入出力を介して通信するローカル MCP サーバーを使用します。
独自のツールで拡張する
@mcp.tool デコレーターを使って新しいツールを追加することで、この MCP サーバーを簡単に拡張できます。server.py のパターンに従って新しいツールを作成し、LLM クライアントに追加機能を公開してください。
関連プロジェクト
- langchain-mcp-adapters:MCP を LangChain と併用します
- MCP-Bridge:MCP ツールを OpenAI の形式に変換します
セキュリティに関する考慮事項
MCP サーバーは Claude にローカルシステムへのアクセスを提供します。次の点にご注意ください。
- サーバーはユーザーとしてシェルコマンドを実行します
- システム上のファイルの読み取り、書き込み、変更が可能です
- セキュリティが懸念される場合は、特定のディレクトリにアクセスを制限することをご検討ください
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。