JARVIS MCP について
JARVIS MCPは、ローカルのコマンドやファイルへの制御されたアクセスを必要とするアプリ向けのGo製MCPサーバーです。シェル実行、ファイル操作、ディレクトリ表示を備え、標準入出力で構造化された結果を返します。
主な機能
- 01指定ディレクトリでのシェルコマンド実行
- 02ファイルの読み取り、書き込み、移動、検索
- 03ディレクトリ一覧とファイル情報の取得
- 04再帰的なディレクトリツリーの生成
- 05標準出力、標準エラー、エラー情報の返却
活用シーン
- 01MCPクライアント経由でのローカルコマンド実行
- 02タスク中のファイル確認と更新
- 03ファイル検索やディレクトリ構成の確認
MCP 対応
MCPサーバーとして、コマンド実行とローカルファイルシステム操作のツールをMCPクライアントに公開します。標準入出力で通信します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
JARVIS MCP
まさに非常に知的なシステム ― MCP サーバー
JARVIS MCP は、標準化された API インターフェースを通じて、ローカルマシンのコマンドやファイル操作への安全なアクセスを提供する軽量サーバーです。Tony Stark の AI アシスタントをモデルにした JARVIS MCP は、アプリケーションとローカルシステムをつなぐブリッジとして機能します。
概要
JARVIS MCP は、Model Context Protocol(MCP)アーキテクチャを実装し、アプリケーションがローカルマシン上でコマンドを実行し、ファイル操作を行うための、安全で標準化された方法を提供します。明確に定義された API を通じてリクエストを受け付け、管理された環境で操作を実行し、整形した結果を返す仲介レイヤーとして機能します。
特長
- コマンド実行:適切なエラー処理を行いながら、ローカルシステム上でシェルコマンドを実行します
- ファイル操作:ローカルシステム上のファイルの読み取り、書き込み、管理を行います
- ディレクトリの可視化:ファイルシステムの再帰的なツリービューを JSON 構造として生成します
- 作業ディレクトリのサポート:指定したディレクトリでコマンドを実行します
- 堅牢なエラー処理:詳細なエラーメッセージと検証機能を提供します
- 包括的な出力:stdout と stderr の両方を取得して返します
- シンプルな統合:さまざまなクライアントと簡単に統合できる標準 I/O インターフェースを提供します
インストール
前提条件
- Go 1.24.1 以降
- Git(リポジトリのクローン用)
ソースからのビルド
-
リポジトリをクローンします:
git clone <repository-url> cd jarvis-mcp -
提供されているスクリプトを使ってアプリケーションをビルドします:
./build.sh実行ファイルは
outディレクトリに作成されます。
クロスプラットフォームのビルド手順
Linux
# Build for Linux (current architecture)
GOOS=linux GOARCH=amd64 go build -o out/jarvis-mcp-linux-amd64 ./cmd/jarvis
chmod +x ./out/jarvis-mcp-linux-amd64
# For ARM64 (like Raspberry Pi)
GOOS=linux GOARCH=arm64 go build -o out/jarvis-mcp-linux-arm64 ./cmd/jarvis
chmod +x ./out/jarvis-mcp-linux-arm64
macOS
# Build for macOS (Intel)
GOOS=darwin GOARCH=amd64 go build -o out/jarvis-mcp-macos-intel ./cmd/jarvis
chmod +x ./out/jarvis-mcp-macos-intel
# Build for macOS (Apple Silicon)
GOOS=darwin GOARCH=arm64 go build -o out/jarvis-mcp-macos-arm64 ./cmd/jarvis
chmod +x ./out/jarvis-mcp-macos-arm64
Windows
# Build for Windows
GOOS=windows GOARCH=amd64 go build -o out/jarvis-mcp-windows-amd64.exe ./cmd/jarvis
使用方法
サーバーの実行
バイナリを実行します:
# Linux/macOS
./out/jarvis-mcp
# Windows
.\out\jarvis-mcp-windows-amd64.exe
サーバーは標準入出力を介して通信するため、さまざまなクライアントと簡単に統合できます。
Claude Desktop の設定
JARVIS MCP は、ツールインターフェースを通じて Claude Desktop とシームレスに連携するよう設計されています。設定方法は次のとおりです。
セットアップ手順
- 上記の手順に従って、ご利用のプラットフォーム向けに JARVIS MCP をビルドします
- Claude Desktop アプリケーションを開きます
- 環境設定を開きます:
- macOS:「Claude」をメニューバーでクリックし、「環境設定」を選択します
- Windows:右上隅にある設定の歯車アイコンをクリックします
- 左側のサイドバーで ツールセクションに移動します
- **「ツールを追加」**をクリックして、新しいツール設定を作成します
コマンド実行ツールの設定
-
execute_command ツールを設定します:
- 名前:コマンドを実行
- 説明:ローカルマシンでシェルコマンドを実行します
- パス:jarvis-mcp バイナリへの完全なパス(例:
/Users/username/jarvis-mcp/out/jarvis-mcp) - 引数:空欄のままにします(サーバーは stdin/stdout を使用します)
- 作業ディレクトリ:任意。デフォルトの作業ディレクトリを指定します
-
設定を保存します
ファイル操作ツールの設定
特定のファイル操作を行うツールを追加で設定できます。たとえば、次のように設定します。
-
read_file ツールを設定します:
- 名前:ファイルを読み取り
- 説明:システム上のファイルの内容を読み取ります
- パス:jarvis-mcp バイナリと同じパス
- 引数:空欄のままにします
-
write_file ツールを設定します:
- 名前:ファイルに書き込み
- 説明:システム上のファイルに内容を書き込みます
- パス:jarvis-mcp バイナリと同じパス
- 引数:空欄のままにします
-
同じ手順で、次の追加ツールを設定します:
- list_directory:ディレクトリの内容を一覧表示します
- create_directory:新しいディレクトリを作成します
- move_file:ファイルを移動または名前変更します
- search_files:ファイルを検索します
- get_file_info:ファイルのメタデータを取得します
- directory_tree:ファイルとディレクトリの再帰的なツリービューを生成します
会話中のツールの使用
設定が完了すると、Claude との会話中に次のツールを呼び出せます。
- 「.bashrc ファイルの内容を表示してください」のようなリクエストを入力します
- Claude にツール選択インターフェースが表示されます
- 適切なツール(例:「ファイルを読み取る」)を選択します
- Claude が JARVIS MCP を使用して操作を実行します
- 結果が会話に表示されます
プラットフォーム固有のパス形式
macOS/Linux
/Users/username/path/to/jarvis-mcp/out/jarvis-mcp
Windows
C:\Users\username\path\to\jarvis-mcp\out\jarvis-mcp-windows-amd64.exe
トラブルシューティング
- ツールが応答しない:バイナリのパスが正しいことと、ファイルに実行権限があることを確認してください
- 権限エラー:Claude Desktop にバイナリを実行する権限があることを確認してください
- パスの問題:作業ディレクトリに関する問題を避けるため、絶対パスを使用してください
- 実行エラー:要求されたファイルやディレクトリにツールがアクセスするための適切な権限を持っていることを確認してください
API リファレンス
JARVIS MCP は API を通じて以下のツールを公開します。
コマンドツール
execute_command
ローカルシステムでシェルコマンドを実行します。
パラメーター:
command(string、必須):実行するシェルコマンドworking directory(string、省略可能):コマンドを実行するディレクトリ
戻り値:
- 成功時:コマンドの出力(stdout)
- 失敗時:エラーメッセージとコマンドの出力(stderr)
ファイルシステムツール
read_file
ファイルの内容を読み取ります。
パラメーター:
path(string、必須):読み取るファイルのパス
戻り値:
- 成功時:ファイルの内容
- 失敗時:エラーメッセージ
write_file
ファイルに内容を書き込みます。
パラメーター:
path(string、必須):ファイルを書き込むパスcontent(string、必須):ファイルに書き込む内容
戻り値:
- 成功時:成功メッセージ
- 失敗時:エラーメッセージ
create_directory
新しいディレクトリを作成します。
パラメーター:
path(string、必須):作成するディレクトリのパス
戻り値:
- 成功時:成功メッセージ
- 失敗時:エラーメッセージ
list_directory
ディレクトリの内容を一覧表示します。
パラメーター:
path(string、必須):一覧表示するディレクトリのパス
戻り値:
- 成功時:[FILE] および [DIR] の識別子が付いたファイルとディレクトリの一覧
- 失敗時:エラーメッセージ
move_file
ファイルやディレクトリを移動または名前変更します。
パラメーター:
source(string、必須):移動するファイルまたはディレクトリの移動元パスdestination(string、必須):ファイルまたはディレクトリの移動先パス
戻り値:
- 成功時:成功メッセージ
- 失敗時:エラーメッセージ
search_files
パターンに一致するファイルを検索します。
パラメーター:
path(string、必須):検索を開始するパスpattern(string、必須):ファイル名やディレクトリ名に一致させる検索パターン
戻り値:
- 成功時:一致したファイルの一覧
- 失敗時:エラーメッセージ
get_file_info
ファイルまたはディレクトリに関する詳細なメタデータを取得します。
パラメーター:
path(string、必須):情報を取得するファイルまたはディレクトリのパス
戻り値:
- 成功時:ファイルのメタデータ(名前、サイズ、モード、更新日時など)を含む JSON
- 失敗時:エラーメッセージ
directory_tree
ファイルとディレクトリの再帰的なツリービューを生成します。
パラメーター:
path(string、必須):ツリーを生成するディレクトリのパス
戻り値:
- 成功時:ディレクトリツリーを表す JSON 構造
- 失敗時:エラーメッセージ
アーキテクチャ
JARVIS MCP は、Model-Code-Proxy パターンを実装する MCP Go framework 上に構築されています。アーキテクチャは次の要素で構成されます。
- リクエスト処理:受信リクエストの解析と検証
- コマンド実行:システムコマンドの制御された実行
- ファイル操作:ローカルシステム上のファイルの読み取りと書き込み
- レスポンスのフォーマット:構造化された有益なレスポンスの提供
プロジェクト構成
jarvis-mcp/
├── build.sh # Build script
├── cmd/ # Application entry points
│ └── jarvis/ # Main JARVIS MCP application
│ └── main.go # Application entry point
├── pkg/ # Library packages
│ ├── shell/ # Shell command execution package
│ │ ├── execute_command.go # Command execution functionality
│ │ └── shell.go # Core shell operation functions
│ ├── utils/ # Utility functions
│ │ └── utils.go # Utility helper functions
│ └── files/ # File operations package
│ ├── files.go # Core file operation functions
│ ├── files_test.go # Tests for file operations
│ ├── read_file.go # Read file tool implementation
│ ├── write_file.go # Write file tool implementation
│ ├── create_directory.go # Create directory tool implementation
│ ├── list_directory.go # List directory tool implementation
│ ├── move_file.go # Move file tool implementation
│ ├── search_files.go # Search files tool implementation
│ ├── file_info.go # Get file info tool implementation
│ └── directory_tree.go # Directory tree tool implementation
├── go.mod # Go module definition
├── go.sum # Go module checksums
├── go.work # Go workspace file
├── go.work.sum # Go workspace checksums
└── out/ # Build outputs
└── jarvis-mcp # Compiled binary
セキュリティに関する考慮事項
JARVIS MCP は、ローカルシステム上でコマンドの実行やファイル操作を直接行う機能を提供します。以下のセキュリティ対策を検討してください。
- 適切な権限で実行します(root/管理者としての実行は避けてください)
- 信頼できる環境でのみ使用します
- 本番環境で使用する場合は、追加の認可メカニズムの導入を検討してください
- コマンドの実行やファイル操作を許可するディレクトリには注意してください
- システムファイルへの不正アクセスを防ぐため、パスの検証を実装してください
プラットフォーム固有のセキュリティに関する注意事項
Linux/macOS
- 権限を制限した専用ユーザーで実行します
- ファイルシステムへのアクセスを制限するため、chroot 環境の使用を検討してください
chmodを使用して実行権限を制限します:chmod 700 jarvis-mcp
Windows
- 管理者ではなく、標準ユーザーとして実行します
- アクセスを制限するため、Windows のセキュリティ機能の使用を検討してください
- フォルダー/ファイルの権限を使用して、機密性の高いディレクトリへのアクセスを制限します
開発
ツールの追加
JARVIS MCP に機能を追加するには、適切なパッケージに新しいファイルを作成し、以下のパターンに従います。
package mypackage
import (
"context"
"errors"
"github.com/mark3labs/mcp-go/mcp"
"github.com/mark3labs/mcp-go/server"
)
func GetMyTool() (tool mcp.Tool, handler server.ToolHandlerFunc) {
return mcp.NewTool("my_tool",
mcp.WithDescription("Description of the tool"),
mcp.WithString("param_name",
mcp.Required(),
mcp.Description("Parameter description"),
),
), myToolHandler
}
func myToolHandler(ctx context.Context, request mcp.CallToolRequest) (*mcp.CallToolResult, error) {
// Parameter validation
param, ok := request.Params.Arguments["param_name"].(string)
if !ok {
return nil, errors.New("parameter is required")
}
// Tool implementation
result, err := doSomething(param)
if err != nil {
return nil, err
}
return mcp.NewToolResultText(result), nil
}
次に、cmd/jarvis/main.go でツールを登録します。
mcpServer.AddTool(mypackage.GetMyTool())
ライセンス
[ライセンスをここに指定してください]
謝辞
- MCP Go framework を使用して構築されています
- マーベル・シネマティック・ユニバースのトニー・スタークが使用する JARVIS から着想を得ています
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。