Jarvis

Jarvis

🚀 Jarvis MCP 服务器

Jarvis MCP 服务器是一个基于模型上下文协议(MCP)的实现,它提供了强大的 AI 助手功能,同时集成了丰富的系统工具,为用户与 AI 模型的交互提供了标准化的解决方案。

🚀 快速开始

Jarvis MCP 服务器通过模型上下文协议(MCP)实现与 AI 模型的无缝集成,提供了一种标准化的方式来与 AI 助手进行交互,并有效管理上下文。该服务器采用 Go 语言构建,具有高性能和高可靠性的特点。

✨ 主要特性

  • MCP 协议支持:使用 mark3labs/mcp - go 完整实现模型上下文协议。
  • 安全优先设计:可配置命令阻止和目录访问控制。
  • 系统集成:在安全控制下执行终端命令。
  • 文件系统操作:安全地进行文件读取、写入和操作。
  • 文本编辑工具:基于行操作的高级文本编辑功能。
  • HTTP 抓取工具:内置网页内容抓取功能。
  • 配置管理:通过 MCP 工具进行运行时配置更新。
  • Go 语言实现:用 Go 编写的高性能服务器,具备强大的错误处理能力。

📦 安装指南

前提条件

  • Go 1.24.4 或更高版本
  • Git

安装步骤

  1. 克隆仓库:
git clone (https://github.com/can-acar/jarvis)
cd jarvis
  1. 安装依赖:
go mod download
  1. 构建项目:
go build -o jarvis main.go

💻 使用示例

启动服务器

./jarvis

服务器将启动,并通过标准输入输出使用 MCP 协议进行通信。

配置

服务器使用 config.yaml 文件进行配置:

# 安全设置
blockedCommands:
- rm
- shutdown

# 命令执行的默认 shell
defaultShell: bash

# 文件操作允许的目录
allowedDirectories:
- /tmp
- /var/log

# 文件操作限制
fileReadLineLimit: 1000
fileWriteLineLimit: 50

# 遥测
telemetryEnabled: false

可用工具

服务器提供以下 MCP 工具:

配置工具

  • get - config - 获取当前服务器配置
  • set - config - 更新服务器配置值

终端工具

  • execute - command - 在安全控制下执行 shell 命令
  • get - command - history - 获取命令执行历史

文件系统工具

  • read - file - 支持分页读取文件内容
  • write - file - 向文件写入内容
  • list - directory - 列出目录内容
  • create - directory - 创建新目录
  • delete - file - 删除文件和目录
  • move - file - 移动/重命名文件和目录
  • file - info - 获取文件元数据和信息

文本编辑工具

  • edit - file - 执行复杂的文本编辑操作
  • search - replace - 在文件中搜索和替换文本
  • batch - edit - 对文件应用多个编辑操作

抓取工具

  • fetch - url - 从网页 URL 抓取内容
  • download - file - 从远程源下载文件

📚 详细文档

项目结构

jarvis/
├── main.go                    # 主服务器入口点
├── config.yaml               # 服务器配置
├── go.mod                    # Go 模块定义
├── go.sum                    # Go 模块校验和
├── handlers/                 # MCP 工具处理程序
│   ├── config_handler.go     # 配置管理
│   ├── terminal_handler.go   # 终端操作
│   ├── filesystem_handler.go # 文件系统操作
│   ├── textediting_handler.go # 文本编辑工具
│   └── fetch_handler.go      # HTTP 抓取操作
└── internal/                 # 内部包
├── common/               # 共享实用程序
├── config/               # 配置管理
├── terminal/             # 终端实用程序
├── filesystem/           # 文件系统实用程序
├── textedit/             # 文本编辑实用程序
├── fetch/                # 抓取实用程序
└── types/                # 类型定义

构建和测试

# 构建项目
go build -o jarvis main.go

# 运行测试
go test ./...

# 运行并开启详细日志
go run main.go

# 为不同平台构建
GOOS=windows GOARCH=amd64 go build -o jarvis.exe main.go
GOOS=linux GOARCH=amd64 go build -o jarvis-linux main.go

添加自定义工具

要添加新的 MCP 工具,请按以下步骤操作:

  1. 在相应的处理程序文件中创建处理函数:
func HandleNewTool(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
// 实现代码
return mcp.NewToolResultText("Result"), nil
}
  1. 在相应的内部包中注册工具:
func RegisterNewTools(s *server.MCPServer) {
s.AddTool("new - tool", "Description", map[string]interface{}{
"type": "object",
"properties": map[string]interface{}{
"param": map[string]interface{}{
"type": "string",
"description": "Parameter description",
},
},
"required": []string{"param"},
}, handlers.HandleNewTool)
}
  1. main.go 中调用注册函数。

贡献代码

  1. 分叉仓库
  2. 创建功能分支:git checkout -b feature - name
  3. 进行更改并添加测试
  4. 确保代码遵循 Go 规范:go fmt ./...
  5. 运行测试:go test ./...
  6. 提交更改:git commit -m 'Add feature'
  7. 推送到分支:git push origin feature - name
  8. 提交拉取请求

🔧 技术细节

  • 命令安全:对命令进行清理并与阻止模式进行检查。
  • 文件系统访问:将文件系统访问限制在允许的目录内。
  • 命令执行:命令执行包含超时控制。
  • 操作日志:记录所有操作以便进行审计。
  • 配置限制:可通过配置限制危险操作。

📄 许可证

本项目采用 MIT 许可证,请参阅 LICENSE 文件获取详细信息。

支持与反馈

若您需要支持或有疑问,可以:

  • 在 GitHub 上创建问题
  • 查看文档和代码注释
  • 查看现有的问题和讨论

性能说明

  • 高性能:使用 Go 语言构建,具备高并发和高性能特点。
  • 高效文件操作:文件操作高效,且具有可配置的限制。
  • 内存优化:采用内存敏感设计,可处理大文件。
  • 通信优化:针对通过标准输入输出的 MCP 协议通信进行了优化。
  • 0 关注
  • 0 收藏,8 浏览
  • system 提出于 2025-09-25 00:45

相似服务问题