返回市场
自制款-MCP

自制款-MCP

作者:jeannier15 星标更新:2025-06-24

项目介绍

Homebrew MCP Python Server

这是一个用于macOS上的Homebrew包管理器的模型上下文协议(MCP)服务器,旨在与Claude Desktop和其他兼容MCP的客户端无缝集成。

  • 语言: Python 3.13
  • MCP: 模型上下文协议
  • 包管理器: Homebrew (macOS)
  • 虚拟环境/依赖管理器: uv

功能

  • 将Homebrew命令暴露为MCP工具。支持的命令按功能分组:
    • 包管理: install, uninstall, upgrade, cleanup
    • 信息与发现: list, search, info, outdated, deps
    • 系统健康与更新: doctor, update
    • Tap与源管理: tap, untap
    • 版本管理: pin, unpin
    • 服务管理: services
  • 通过子进程运行实际的brew命令(需要在macOS上安装Homebrew)。
  • 完全符合MCP规范(标准输入输出、JSON-RPC 2.0、MCP规范 2025-06-18)。
  • 专为Claude Desktop和其他LLM客户端设计。
  • 使用函数式、声明式的Python(不使用类)。
  • 将所有请求/结果记录到homebrew_mcp.log文件中。
  • 包含一个交互式测试脚本(test_claude_homebrew_mcp.py),该脚本:
    • 动态获取MCP服务器中的可用工具。
    • 允许Claude根据单个用户提示调用多个工具。
    • 展示与Anthropic API的高级交互模式。

安装

  1. 克隆此仓库:

    git clone https://github.com/jeannier/homebrew-mcp
    cd homebrew-mcp
    
  2. 安装 uv(如果尚未安装):

    brew install uv
    
  3. 创建虚拟环境并安装依赖项:

    uv venv
    source .venv/bin/activate  # 激活虚拟环境
    uv pip install -r requirements.txt
    
  4. 运行MCP服务器(本地测试): 若要进行本地测试或开发期间测试,可以直接运行:

    uv run python homebrew_mcp.py
    

    然后服务器将启动。如果成功,不会立即有输出;它会静默地监听通过标准输入输出的MCP请求。可以通过检查homebrew_mcp.log文件来确认其是否正在运行。

    注意: 如果您要将其与Claude Desktop集成,则不需要手动运行此命令。Claude Desktop会根据“Claude Desktop集成”部分提供的配置自动启动服务器。此命令仅用于直接测试或开发目的。


Cursor集成

前提条件: 在添加工具之前,请完成**安装**部分中的步骤以设置项目及其依赖项。“添加到Cursor”按钮假设项目位于~/Documents/GitHub/homebrew-mcp

<a href="cursor://anysphere.cursor-deeplink/mcp/install?name=homebrew-mcp&config=eyJjb21tYW5kIjoidXYgcnVuIC0tZGlyZWN0b3J5IH4vRG9jdW1lbnRzL0dpdEh1Yi9ob21lYnJldy1tY3AgaG9tZWJyZXdfbWNwLnB5In0="> <img src="https://img.shields.io/badge/add%20to-cursor-4285f4" alt="添加到Cursor"> </a>
  1. 通过Homebrew(macOS)安装Cursor:

    brew install --cask cursor
    
  2. 将工具添加到Cursor:

    • 点击上方的“添加到Cursor”按钮。这将打开Cursor并自动安装工具。
    • 如果您的项目不在按钮假设的位置,您需要编辑生成的配置。在macOS上,此文件位于~/.cursor/mcp.json。打开它并更新homebrew-mcp条目中的command字符串内的路径。可以参考此仓库中的mcp.json文件作为参考。
  3. 重启Cursor:

    • 为了使工具生效,在安装后重启Cursor。

Claude Desktop集成

  1. 通过Homebrew(macOS)安装Claude Desktop:

    brew install --cask claude
    
  2. 确保uv在您的PATH中且项目可访问。

  3. 配置Claude Desktop以使用此MCP服务器:

    • 在macOS上,编辑或创建您的用户级MCP配置文件:~/Library/Application Support/Claude/claude_desktop.json
    • 添加以下服务器定义,将/path/to/your/project/替换为您克隆此项目的目录的绝对路径。可以参考此仓库中的claude_desktop_config.json文件作为示例。
{
  "mcpServers": {
    "homebrew-mcp": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/path/to/your/project/",
        "homebrew_mcp.py"
      ],
      "type": "stdio"
    }
  }
}

--directory参数告诉uv在哪里找到homebrew_m_ cp.py脚本及其上下文(如.venv)。

  1. 重启Claude Desktop。

项目结构

  • Python脚本
    • homebrew_mcp.py — 主MCP服务器脚本。
    • test_claude_homebrew_mcp.py — 交互式Claude集成测试脚本。
  • 配置
    • claude_desktop_config.json — Claude Desktop示例配置。
    • mcp.json — Cursor示例配置。
    • requirements.txt — Python项目依赖项。
  • 文档与元数据
    • README.md — 此文件。
    • LICENSE — 项目的MIT许可证。
    • .gitignore — 指定Git忽略的文件。
  • 生成的文件(不在Git中)
    • .venv/ — 由uv管理的Python虚拟环境。
    • homebrew_mcp.log — MCP服务器的日志文件。

监控日志

要实时查看服务器日志并美化每个JSON行:

tail -f homebrew_mcp.log | jq .

测试环境

此MCP服务器及其与Claude的集成主要在以下环境中进行了测试:

  • macOS: Sonoma 14.7.5
  • Homebrew: 4.5.8
  • Python: 3.13(通过uv管理)
    • mcp模块: 1.9.4(使用uv pip安装)
  • anthropic模块: 0.55.0(使用uv pip安装)
  • Claude Desktop: 0.10.38(通过Homebrew Cask在macOS上安装)。
  • Cursor: 1.1.4

示例提示

这里有一些示例提示,您可以使用Claude(或其他MCP客户端)与这个Homebrew MCP服务器进行交互时使用:

  • 提供已安装的所有包的总结
  • 检查哪些包已安装,并提供其他包的安装建议
  • 我的Homebrew设置是否有问题?如何解决?
  • 显示关于python 3.13包的信息
  • 安装wget包

交互式Claude测试脚本

要运行Claude集成测试(test_claude_homebrew_mcp.py),您需要一个Anthropic Claude API密钥。在测试脚本顶部的ANTHROPIC_API_KEY变量中设置您的API密钥。此脚本允许您与Claude交互,而Claude则使用homebrew_mcp.py服务器。它展示了动态工具发现和Claude多次调用工具的能力。

uv run python test_claude_homebrew_mcp.py

示例测试运行输出

此部分显示了运行test_claude_homebrew_mcp.py脚本时的示例输出。 它展示了Claude与Homebrew MCP服务器之间的交互,包括动态工具发现、多次工具调用以及最终响应。

$ uv run python test_claude_homebrew_mcp.py

============================== Claude Prompt 1/7 ===============================
install wget if not installed, or uninstall if already installed
================================================================================
============================= Claude's Answer 1/7 ==============================
我已在您的系统上成功安装了wget。现在wget已安装,如果您希望我卸载它(根据您的要求,如果未安装则安装,如果已安装则卸载),我可以为您执行此操作。

请问您现在是否希望我卸载wget?请告知我。
================================================================================

============================== Claude Prompt 2/7 ===============================
恢复wget的初始状态
================================================================================
============================= Claude's Answer 2/7 ==============================
我已成功卸载wget,将您的系统恢复到我们对话前的初始状态。wget包已被完全从您的系统中移除。
================================================================================

============================== Claude Prompt 3/7 ===============================
检查过期的包
================================================================================
============================= Claude's Answer 3/7 ==============================
您有3个过期的包:
1. libnghttp2
2. uv
3. yt-dlp

这些包有可用的新版本,如果您愿意,可以升级它们。
================================================================================

============================== Claude Prompt 4/7 ===============================
提供已安装的所有包的总结
================================================================================
============================= Claude's Answer 4/7 ==============================
这是您系统上已安装的所有包的总结:

1. **命令行工具与实用程序**:bash, coreutils, curl, git, jq, nmap, grep, watch等。
2. **编程语言与工具**:python(多个版本)、node、go、lua
3. **媒体工具与库**:ffmpeg及其依赖项(x264、x265等)、yt-dlp
4. **开发工具**:neovim、tree-sitter、shellcheck
5. **应用程序(Casks)**:
   - 浏览器:google-chrome、firefox
   - 开发:visual-studio-code、iterm2、cursor、github
   - 通信:discord、whatsapp
   - 媒体:vlc、spotify、stremio
   - 实用程序:docker-desktop、keepassxc、alt-tab、disk-inventory-x
   - AI/ML工具:chatgpt、claude、ollama、s