Token导航 LogoToken导航TokenDH.com
awful MCP logo
开发工具未说明官方级别未说明来源级核验

awful MCP

MCP Server

一个全面的MCP(模型上下文协议)服务器,为AI编程代理提供34+开发者工具,涵盖Nushell管道、代码搜索、文件操作、Git操作等功能。

工具数

34

提示词数

0

GitHub Stars

0

资源数

0
AI编程辅助代码分析RustClaude开发工具ClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

graves

提供方

graves

最后核验

2026/5/17 20:22

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

awful_mcp

一个全面的MCP(模型上下文协议)服务器,为AI编码代理提供强大的开发工具。使用Rust构建,使用官方 rmcp SDK,该服务器提供34多种工具,分为8类:Nushell管道、进程执行、文件系统操作、代码搜索、多文件替换、git操作、cargo命令和基于AST的代码分析。

特性

  • 努谢尔一体化:使用结构化JSON输出运行Nushell管道
  • 代码搜索:使用ripgrep和fd快速搜索
  • 多文件替换:安全搜索并替换为ruplacer(默认为干运行)
  • AST分析:使用astgrep进行语法感知代码搜索和转换
  • Git操作:状态、差异、添加、提交、推送
  • 货物整合:构建、测试、fmt、剪贴
  • 文件系统工具:读取、写入、追加、列表、glob
  • 安全执行:所有命令都有超时和输出限制

依赖项

必需

  • (1.70+)-用于构建服务器
  • 努谢尔 (nu)-用于运行Nushell命令
  # macOS
  brew install nushell

  # Linux
  cargo install nu

可选(适用于特定工具)

  • ripgrep (rg)-为 search.rg 工具
  brew install ripgrep  # macOS
  apt install ripgrep   # Debian/Ubuntu
  • 文件描述符 -For search.fd 工具
  brew install fd       # macOS
  apt install fd-find   # Debian/Ubuntu
  • ruplacer -For replace.ruplacer 工具
  cargo install ruplacer
  • ast grep -For ast.grep 工具
  cargo install ast-grep
  # or
  npm install -g @ast-grep/cli
  • 版本控制系统 -用于git工具(通常预装)
  • 货物 -用于货运工具(安装有防锈漆)

安装

# Clone the repository
git clone 
cd awful_mcp

# Build release binary
cargo build --release

# Binary will be at: target/release/awful_mcp

设置

适用于克劳德桌面

添加到MCP配置文件(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):

{
  "mcpServers": {
    "awful_mcp": {
      "command": "/absolute/path/to/awful_mcp/target/release/awful_mcp"
    }
  }
}

适用于Cursor或其他MCP客户端

添加到客户的MCP配置中:

{
  "mcpServers": {
    "awful_mcp": {
      "command": "/absolute/path/to/awful_mcp/target/release/awful_mcp"
    }
  }
}

环境变量

  • NU_PATH -通往 nu 二进制(默认为 nu 在PATH中)
  • RUST_LOG -设置日志记录级别(例如。, RUST_LOG=info)

用法

配置后,MCP服务器将在您的MCP客户端连接时自动启动。该服务器公开了8个类别的34个工具。

可用工具

Nushell工具(15个工具)

使用结构化数据处理运行Nushell命令和管道。

nu.run

运行任何Nushell命令并获取stdout/stderr。

论据:

  • command (string,必填)-要执行的Nushell命令
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)(默认值:60000)
  • env (对象,可选)-环境变量

例子:

{
  "command": "ls | where size > 1mb | get name"
}

nu.json

运行一个输出JSON的Nushell命令并获取结构化数据。

论据:

  • command (string,必填)-输出JSON的Nushell命令
  • allow_stderr (布尔值,可选)-允许stderr输出(默认值:false)
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)

例子:

{
  "command": "sys | to json"
}

nu.ls

使用Nushell丰富的元数据列出目录内容。

论据:

  • path (字符串,可选)-要列出的目录(默认:当前)
  • all (布尔值,可选)-包含隐藏文件
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)

nu.open

使用Nushell打开和解析文件(JSON、YAML、TOML、CSV等)。

论据:

  • path (字符串,必填)-要打开的文件
  • raw (布尔值,可选)-作为原始文本读取
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)

nu.save

以各种格式将结构化数据保存到文件中。

论据:

  • path (字符串,必填)-输出文件路径
  • content (字符串,必填)-要保存的内容
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)

nu.str_contains

检查字符串是否包含模式。

论据:

  • input (string,必填)-输入字符串
  • pattern (字符串,必填)-要搜索的模式
  • insensitive (布尔值,可选)-不区分大小写的搜索

例子:

{
  "input": "Hello World",
  "pattern": "world",
  "insensitive": true
}

nu.str_replace

替换字符串中的文本。

论据:

  • input (string,必填)-输入字符串
  • find (字符串,必填)-要查找的文本
  • replace (字符串,必填)-替换文本
  • all (布尔值,可选)-替换所有出现的内容(默认值:false)

例子:

{
  "input": "foo bar foo",
  "find": "foo",
  "replace": "baz",
  "all": true
}

nu.ps

使用Nushell运行进程。

论据:

  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)

nu.sys

获取系统信息(CPU、内存、主机、磁盘等)。

论据:

  • subsystem (字符串,可选)-特定子系统:cpu、mem、主机、磁盘、临时、网络、用户
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)

nu.find_by_extension

按扩展名查找带有元数据和排序的文件。

论据:

  • extensions (数组,必填)-要搜索的文件扩展名(例如,\[“rs”,“toml”\])
  • path (字符串,可选)-要搜索的目录(默认:当前)
  • sort_by (字符串,可选)-排序方式:名称、大小、已修改(默认:已修改)
  • limit (数字,可选)-限制结果数量
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)

例子:

{
  "extensions": ["rs", "toml"],
  "sort_by": "size",
  "limit": 10
}

nu.recent_files

查找时间窗口内最近修改的文件。

论据:

  • minutes (数字,可选)-回顾时间(默认值:60)
  • path (字符串,可选)-要搜索的目录(默认:当前)
  • limit (数字,可选)-限制结果数量
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)

nu.large_files

查找大于大小阈值的文件。

论据:

  • min_size (数字,可选)-最小字节大小(默认值:1000000=1MB)
  • path (字符串,可选)-要搜索的目录(默认:当前)
  • limit (数字,可选)-限制结果数量(默认值:20)
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)

nu.code_stats

按文件类型分析代码存储库统计信息。

论据:

  • path (字符串,可选)-要分析的目录(默认:当前)
  • extensions (数组,可选)-要包含的文件扩展名(默认:通用代码扩展名)
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)

例子:

{
  "path": "src",
  "extensions": ["rs", "toml"]
}

nu.grep_stats

搜索模式并返回聚合统计数据。

论据:

  • pattern (字符串,必填)-要搜索的模式
  • path (字符串,可选)-要搜索的目录(默认:当前)
  • extensions (数组,可选)-要筛选的文件扩展名
  • insensitive (布尔值,可选)-不区分大小写的搜索
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)

nu.dir_tree

使用文件计数和大小生成目录树可视化。

论据:

  • path (字符串,可选)-要可视化的目录(默认:当前)
  • max_depth (数字,可选)-最大深度(默认值:3)
  • all (布尔值,可选)-显示隐藏文件
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)

______________________________________________________________________

工艺工具(1个工具)

process.run

运行任何带参数的二进制文件(无shell)。

论据:

  • program (string,必填)-要执行的程序
  • args (数组,可选)-命令参数
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)(默认值:60000)
  • env (对象,可选)-环境变量

例子:

{
  "program": "cargo",
  "args": ["test", "--", "--nocapture"],
  "timeout_ms": 120000
}

______________________________________________________________________

文件系统工具(5个工具)

fs.read_text

读取UTF-8文本文件。

论据:

  • path (字符串,必填)-要读取的文件路径

退货: { path, content, size }

fs.write_text

以原子方式写入(覆盖)文本文件。

论据:

  • path (字符串,必填)-要写入的文件路径
  • content (字符串,必填)-要写入的内容

fs.append_text

将文本附加到文件中(如果缺少,则创建)。

论据:

  • path (字符串,必填)-要附加到的文件路径
  • content (string,必填)-要附加的内容

fs.list

列出包含元数据的目录内容。

论据:

  • path (字符串,可选)-要列出的目录(默认:当前)
  • include_hidden (布尔值,可选)-包含隐藏文件

退货: 一大批 { name, path, kind, size, modified }

fs.glob

展开Unix风格的glob模式。

论据:

  • pattern (字符串,必填)-全局模式(例如“\*\*/\*.rs”)
  • cwd (字符串,可选)-工作目录

______________________________________________________________________

搜索工具(2个工具)

search.rg

使用ripgrep进行快速代码搜索(返回JSON)。

论据:

  • pattern (字符串,必填)-搜索模式
  • path (字符串,可选)-要搜索的文件或目录
  • extra (数组,可选)-额外的ripgrep标志
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)(默认值:60000)

例子:

{
  "pattern": "fn main",
  "path": "src",
  "extra": ["-i", "--type", "rust"]
}

search.fd

快速文件/目录查找器(尊重.gitignore)。

论据:

  • pattern (字符串,可选)-搜索模式
  • path (字符串,可选)-要搜索的目录
  • type_filter (字符串,可选)-类型:f(文件),d(目录),l(符号链接),x(可执行文件)
  • extension (字符串,可选)-文件扩展名(例如“rs”、“ts”)
  • max_depth (数字,可选)-最大搜索深度
  • hidden (布尔值,可选)-包含隐藏文件
  • no_ignore (布尔值,可选)-包括忽略的文件
  • case_sensitive (布尔值,可选)-区分大小写的搜索
  • absolute_path (boolean,可选)-返回绝对路径
  • extra (数组,可选)-额外的fd标志
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)

例子:

{
  "extension": "rs",
  "type_filter": "f",
  "max_depth": 3
}

______________________________________________________________________

更换工具(1个工具)

replace.ruplacer

安全的多文件搜索和替换(默认情况下为模拟运行)。

论据:

  • pattern (字符串,必填)-要搜索的模式
  • replacement (string,必填)-替换字符串
  • path (字符串,可选)-要搜索的目录或文件
  • regex (布尔值,可选)-使用正则表达式模式
  • file_type (字符串,可选)-文件类型过滤器(例如“\*.rs”)
  • go (布尔值,可选)-实际执行替换(默认值:false=模拟运行)
  • ignore_case (布尔值,可选)-不区分大小写的搜索
  • hidden (布尔值,可选)-包含隐藏文件
  • no_ignore (布尔值,可选)-包括忽略的文件
  • word (布尔值,可选)-单词边界匹配
  • extra (数组,可选)-额外的ruplacer标志
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)(默认值:120000)

示例(干运行):

{
  "pattern": "old_name",
  "replacement": "new_name",
  "file_type": "*.rs"
}

示例(实际替换):

{
  "pattern": "old_name",
  "replacement": "new_name",
  "file_type": "*.rs",
  "go": true
}

______________________________________________________________________

Git工具(5个工具)

git.status

git status --porcelain=v2.

论据:

  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)(默认值:30000)

git.diff

git diff 带有可选参数。

论据:

  • extra (数组,可选)-额外的git diff标志(例如,\[“--cached”\])
  • paths (数组,可选)-diff的特定路径
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)(默认值:60000)

git.add

git add 对于给定的路径。

论据:

  • paths (数组,必填)-要添加的路径(至少一个必填)
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)

例子:

{
  "paths": ["src/main.rs", "Cargo.toml"]
}

git.commit

git commit 与消息。

论据:

  • message (字符串,必填)-提交消息
  • signoff (布尔值,可选)-添加--签收标志
  • allow_empty (boolean,可选)-允许空提交
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)

git.push

git push 远程。

论据:

  • remote (字符串,必填)-远程名称(例如“origin”)
  • branch (字符串,必填)-分支机构名称(例如“main”)
  • force (boolean,可选)-使用--force with lease
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)(默认值:120000)

______________________________________________________________________

货运工具(4个工具)

cargo.build

cargo build.

论据:

  • extra (数组,可选)-额外的货物标志(例如,\[“--release”\])
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)(默认值:300000)

cargo.test

cargo test.

论据:

  • extra (数组,可选)-额外的货物标志(例如,\[“--”,“--nocapture”\])
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)(默认值:300000)

cargo.fmt

cargo fmt.

论据:

  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)

cargo.clippy

cargo clippy.

论据:

  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)

______________________________________________________________________

AST工具(1个工具)

ast.grep

基于AST的代码搜索和操作。

论据:

  • pattern (字符串,必填)-AST模式(例如,“fn$NAME(){}”)
  • language (字符串,可选)-语言:rust、typescript、python、javascript等。
  • path (字符串,可选)-要搜索的目录或文件
  • regex (布尔值,可选)-使用正则表达式模式
  • rewrite (字符串,可选)-重写转换模式
  • json (布尔值,可选)-JSON输出格式
  • hidden (布尔值,可选)-包含隐藏文件
  • no_ignore (布尔值,可选)-包括忽略的文件
  • file_type (字符串,可选)-文件类型筛选器
  • interactive (布尔值,可选)-交互模式
  • update_all (布尔值,可选)-就地更新文件
  • extra (数组,可选)-额外的ast-grep标志
  • cwd (字符串,可选)-工作目录
  • timeout_ms (数字,可选)-超时(毫秒)(默认值:120000)

示例(搜索):

{
  "pattern": "fn $NAME() {}",
  "language": "rust",
  "json": true
}

示例(转换):

{
  "pattern": "fn $NAME() {}",
  "rewrite": "async fn $NAME() {}",
  "language": "rust",
  "update_all": true
}

______________________________________________________________________

安全功能

  • 超时:所有命令都有可配置的超时和合理的默认值
  • 输出限制:截断Stout/stderr以防止内存问题
  • 二进制验证: process.run 用途 which 在执行之前验证二进制文件
  • 无外壳注射:直接二进制执行绕过shell(使用 nu.run 对于有意使用的壳体管道)
  • 安全默认值:破坏性行动,如 replace.ruplacer 默认为干运行模式

发展

# Run tests
cargo test

# Run with logging
RUST_LOG=info cargo run

# Format code
cargo fmt

# Lint
cargo clippy

建筑

服务器采用模块化架构,关注点分离:

  • 主服务器 (src/main.rs)-MCP协议处理和路由
  • 工具模块 (src/tools/)-单独的工具实施

- nushell.rs -Nushell管道工具 - process.rs -流程执行 - filesystem.rs -文件操作 - search.rs -ripgrep与fd - replace.rs -ruplacer集成 - git.rs -Git操作 - cargo.rs -货物指令 - ast_grep.rs -基于AST的分析

  • 公用事业 (src/util.rs)-用于流程执行的共享实用程序

每个工具模块都遵循一个可测试性模式:

  1. 业务逻辑函数返回 anyhow::Result
  2. MCP包装器函数处理协议转换
  3. 业务逻辑的全面单元测试

许可证

麻省理工学院

贡献

欢迎投稿!请确保:

  • 所有测试均通过(cargo test)
  • 代码已格式化(cargo fmt)
  • Clippy很高兴(cargo clippy)
  • 新工具遵循既定模式

目录标签

目录标签

AI编程辅助代码分析RustClaude开发工具本地部署开发者工具自动化工具Rust开发

支持客户端

ClaudeCursor

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

34

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP