mcpField
J
JARVIS MCP

JARVIS MCP

本地服务
github.com/eugener开发工具176 周前更新

关于 JARVIS MCP

JARVIS MCP 是面向需要受控访问本地命令和文件的应用的 Go MCP 服务,提供 Shell 执行、文件管理和目录视图,并通过标准输入输出返回结构化结果。

主要功能

  1. 01在指定目录运行 Shell 命令
  2. 02读取、写入、移动和搜索文件
  3. 03列出目录并获取文件元数据
  4. 04生成递归目录树
  5. 05返回标准输出、标准错误和错误信息

适用场景

  1. 01通过 MCP 客户端运行本地命令
  2. 02在任务中检查和更新文件
  3. 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(用于克隆仓库)
从源代码构建
  1. 克隆仓库:

    git clone <repository-url>
    cd jarvis-mcp
    
  2. 使用提供的脚本构建应用程序:

    ./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 无缝协作而设计。设置方法如下:

设置流程
  1. 构建 JARVIS MCP:按照上述说明为你的平台构建
  2. 打开 Claude Desktop 应用程序
  3. 打开偏好设置:
    • macOS:点击菜单栏中的 “Claude”,然后选择 “Preferences”
    • Windows:点击右上角的设置齿轮图标
  4. 在左侧边栏中进入工具部分
  5. 点击 “Add Tool” 创建新的工具配置
配置命令执行工具
  1. 配置 execute_command 工具:

    • 名称:执行命令
    • 说明:在本地机器上执行 shell 命令
    • 路径:jarvis-mcp 二进制文件的完整路径(例如,/Users/username/jarvis-mcp/out/jarvis-mcp)
    • 参数:留空(服务使用 stdin/stdout)
    • 工作目录:可选;指定默认工作目录
  2. 保存配置

配置文件操作工具

你可以为特定文件操作配置其他工具。例如:

  1. 配置 read_file 工具:

    • 名称:读取文件
    • 说明:读取系统中文件的内容
    • 路径:与 jarvis-mcp 二进制文件相同的路径
    • 参数:留空
  2. 配置 write_file 工具:

    • 名称:写入文件
    • 说明:将内容写入系统中的文件
    • 路径:与 jarvis-mcp 二进制文件相同的路径
    • 参数:留空
  3. 按照相同方式配置其他工具:

    • list_directory:列出目录内容
    • create_directory:创建新目录
    • move_file:移动或重命名文件
    • search_files:搜索文件
    • get_file_info:获取文件元数据
    • directory_tree:生成文件和目录的递归树状视图
对话中的工具使用

配置完成后,您可以在与 Claude 的对话中调用这些工具:

  1. 输入类似“请显示我的 .bashrc 文件内容”的请求
  2. Claude 会显示工具选择界面
  3. 选择合适的工具(例如,“读取文件”)
  4. Claude 会使用 JARVIS MCP 执行操作
  5. 结果会显示在对话中
特定平台的路径格式
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 模式。其架构包括:

  1. 请求处理:解析并验证传入的请求
  2. 命令执行:以受控方式运行系统命令
  3. 文件操作:读取和写入本地系统上的文件
  4. 响应格式化:提供结构化且信息丰富的响应
项目结构
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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。