本地系统API服务器

JARVIS MCP是一个轻量级服务器,通过标准化API接口提供对本地机器命令和文件操作的安全访问,充当应用程序与本地系统之间的桥梁。

  • by eugener
  • Go
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 eugener/jarvis-mcp

使用说明

贾维斯MCP

一个非常智能的系统-MCP服务器

JARVIS MCP是一个轻量级服务器,通过标准化的API接口提供对本地机器命令和文件操作的安全访问。受Tony Stark的人工智能助手的启发,JARVIS MCP充当应用程序和本地系统之间的桥梁。

概述

JARVIS MCP实现了模型上下文协议(MCP)架构,为应用程序在本地机器上执行命令和执行文件操作提供了一种安全、标准化的方式。它作为一个中间层,通过定义良好的API接受请求,在受控环境中执行操作,并返回格式化的结果。

特性

  • 命令执行:在本地系统上运行shell命令,并进行适当的错误处理
  • 文件操作:读取、写入和管理本地系统上的文件
  • 目录可视化:生成JSON结构的文件系统递归树视图
  • 工作目录支持:在特定目录中执行命令
  • 稳健的错误处理:详细的错误消息和验证
  • 综合产出:捕获并返回stdout和stderr
  • 简单集成:标准I/O接口,便于与各种客户端集成

安装

先决条件

  • 达到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

视窗

# 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. 打开克劳德桌面 应用
  3. 访问首选项:
    • macOS:点击菜单栏中的“Claude”,然后选择“首选项”
    • Windows:点击右上角的设置齿轮图标
  4. 导航到“工具”部分 在左侧边栏中
  5. 点击“添加工具” 创建新的工具配置

配置命令执行工具

  1. 配置 execute_命令 工具:

    • 名字:执行命令
    • 描述:在本地计算机上执行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:移动或重命名文件
    • 搜索文件:搜索文件
    • 获取_文件_信息:获取文件元数据
    • 目录树:生成文件和目录的递归树视图

对话中的工具使用

配置后,您可以在与Claude对话时调用这些工具:

  1. 键入类似“请向我显示.bashrc文件的内容”的请求
  2. Claude将显示工具选择界面
  3. 选择适当的工具(例如“读取文件”)
  4. Claude将使用JARVIS MCP执行操作
  5. 结果将显示在您的对话中

平台特定路径格式

macOS/Linux

/Users/username/path/to/jarvis-mcp/out/jarvis-mcp

视窗

C:\Users\username\path\to\jarvis-mcp\out\jarvis-mcp-windows-amd64.exe

故障排除

  • 工具没有响应:确保二进制路径正确,文件可执行
  • 权限错误:检查Claude Desktop是否有权执行二进制文件
  • 路径问题:使用绝对路径以避免工作目录问题
  • 执行错误:确保该工具具有访问所请求文件/目录的适当权限

api参考

JARVIS MCP通过其API公开了以下工具:

命令工具

execute_命令

在本地系统上执行shell命令。

参数:

  • command (string,必填):要执行的shell命令
  • 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,必填):文件或目录将移动到的目标路径

退货:

  • 关于成功:成功信息
  • 失败时:错误消息
搜索文件

搜索与模式匹配的文件。

参数:

  • path (字符串,必填):搜索的起始路径
  • pattern (字符串,必填):搜索模式以匹配文件名和目录名

退货:

  • 成功时:匹配文件列表
  • 失败时:错误消息
获取_文件_信息

检索有关文件或目录的详细元数据。

参数:

  • path (string,必填):获取有关信息的文件或目录的路径

退货:

  • 成功时:JSON与文件元数据(名称、大小、模式、修改时间等)
  • 失败时:错误消息
目录树

生成文件和目录的递归树视图。

参数:

  • path (string,必填):生成树的目录路径

退货:

  • 成功时:JSON结构表示目录树
  • 失败时:错误消息

建筑

JARVIS MCP基于 MCP Go框架,它实现了模型代码代理模式。该架构由以下部分组成:

  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安全功能来限制访问
  • 使用文件夹/文件权限限制对敏感目录的访问

发展

添加新工具

要使用其他功能扩展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框架
  • 灵感来自漫威电影宇宙中托尼·斯塔克的《绝地求生》