关于 JARVIS MCP
JARVIS MCP 是面向需要受控访问本地命令和文件的应用的 Go MCP 服务,提供 Shell 执行、文件管理和目录视图,并通过标准输入输出返回结构化结果。
主要功能
- 01在指定目录运行 Shell 命令
- 02读取、写入、移动和搜索文件
- 03列出目录并获取文件元数据
- 04生成递归目录树
- 05返回标准输出、标准错误和错误信息
适用场景
- 01通过 MCP 客户端运行本地命令
- 02在任务中检查和更新文件
- 03搜索文件或查看目录结构
MCP 相关
该 MCP 服务向 MCP 客户端提供命令执行和本地文件系统操作工具,并通过标准输入输出通信。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
JARVIS MCP
只是一个相当智能的系统 - MCP 服务
JARVIS MCP 是一款轻量级服务,可通过标准化 API 接口安全地访问本地机器命令和文件操作。JARVIS MCP 的灵感来自 Tony Stark 的 AI 助手,在应用程序与本地系统之间充当桥梁。
概述
JARVIS MCP 实现了 Model Context Protocol(MCP)架构,为应用程序提供一种安全、标准化的方式,以便在本地机器上执行命令和进行文件操作。它充当中间层,通过定义完善的 API 接收请求,在受控环境中执行操作,并返回格式化结果。
功能
- 命令执行:在本地系统上运行 shell 命令,并进行适当的错误处理
- 文件操作:读取、写入和管理本地系统上的文件
- 目录可视化:将文件系统生成为递归树状视图,并以 JSON 结构表示
- 工作目录支持:在指定目录中执行命令
- 完善的错误处理:提供详细的错误消息和验证
- 全面的输出:捕获并返回 stdout 和 stderr
- 简单集成:提供标准输入/输出接口,便于与各种客户端集成
安装
前提条件
- 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”,然后选择 “Preferences”
- Windows:点击右上角的设置齿轮图标
- 在左侧边栏中进入工具部分
- 点击 “Add Tool” 创建新的工具配置
配置命令执行工具
-
配置 execute_command 工具:
- 名称:执行命令
- 说明:在本地机器上执行 shell 命令
- 路径: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
在本地系统上执行 shell 命令。
参数:
command(字符串,必填):要执行的 shell 命令working directory(字符串,可选):要执行命令的目录
返回值:
- 成功时:命令输出(stdout)
- 失败时:错误消息及任何命令输出(stderr)
文件系统工具
read_file
读取文件内容。
参数:
path(字符串,必填):要读取的文件路径
返回值:
- 成功时:文件内容
- 失败时:错误消息
write_file
将内容写入文件。
参数:
path(字符串,必填):文件的写入路径content(字符串,必填):要写入文件的内容
返回值:
- 成功时:成功消息
- 失败时:错误消息
create_directory
创建新目录。
参数:
path(字符串,必填):要创建的目录路径
返回值:
- 成功时:成功消息
- 失败时:错误消息
list_directory
列出目录内容。
参数:
path(字符串,必填):要列出的目录路径
返回值:
- 成功时:文件和目录列表,并带有 [FILE] 和 [DIR] 标记
- 失败时:错误消息
move_file
移动或重命名文件和目录。
参数:
source(字符串,必填):要移动的文件或目录的源路径destination(字符串,必填):文件或目录要移动到的目标路径
返回值:
- 成功时:成功消息
- 失败时:错误消息
search_files
搜索符合模式的文件。
参数:
path(字符串,必填):搜索的起始路径pattern(字符串,必填):用于匹配文件和目录名称的搜索模式
返回值:
- 成功时:匹配的文件列表
- 失败时:错误消息
get_file_info
获取有关文件或目录的详细元数据。
参数:
path(字符串,必填):要获取信息的文件或目录路径
返回值:
- 成功时:包含文件元数据(名称、大小、模式、修改时间等)的 JSON
- 失败时:错误消息
directory_tree
生成文件和目录的递归树状视图。
参数:
path(字符串,必填):要生成目录树的目录路径
返回值:
- 成功时:表示目录树的 JSON 结构
- 失败时:错误消息
架构
JARVIS MCP 基于 MCP Go 框架 构建,该框架实现了 Model-Code-Proxy 模式。其架构包括:
- 请求处理:解析并验证传入的请求
- 命令执行:以受控方式运行系统命令
- 文件操作:读取和写入本地系统上的文件
- 响应格式化:提供结构化且信息丰富的响应
项目结构
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 框架 构建
- 灵感来自漫威电影宇宙中的 Tony Stark 的 JARVIS
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。