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

Hermes MCP

MCP Server

Hermes MCP是一个轻量级、可靠的MCP服务器,为Claude Desktop提供15种基本开发工具,包括文件操作、Shell和Git命令、Web和API调用以及系统实用程序。

工具数

0

提示词数

0

GitHub Stars

1

资源数

0
文件操作PythonClaudeClaude DesktopClaude

安装说明

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

作者 / 组织

poetryprotocol

提供方

poetryprotocol

最后核验

2026/5/17 20:22

运行时

Python

快速接入

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

命令预览

python -m venv .venv

详细介绍

爱马仕MCP

Claude Desktop的轻量级、可靠的MCP服务器,配备15个基本开发工具。

平台: Windows(使用PowerShell,Git作为Windows路径)\ 主要特点: 修复了导致工具挂起的关键异步子进程stdin继承错误。

为什么选择爱马仕?

大多数MCP文件/shell服务器都很脆弱。爱马仕是:

  • 可靠的 -使用stdin隔离进行正确的异步子进程处理
  • 完成 -15个工具,涵盖文件、shell、git、HTTP和系统实用程序
  • 简单 -纯Python,约700行,易于理解和修改
  • 快速 -直接执行,无不必要的开销

平台支持

当前Windows已优化:

  • 用途 powershell.exe 对于shell命令
  • Git路径默认为 C:\Program Files\Git\
  • 路径分隔符为Windows样式

需要Unix/Mac适配:

  • 替换 run_powershell 随着 run_bash
  • 更新git可执行文件检测
  • 调整路径处理

欢迎支持Unix/Mac的PR!

关键修复

如果你正在构建生成子流程的MCP工具,你会遇到这个问题: 子进程继承MCP的stdin管道并挂起等待输入.

修复方法:

process = await asyncio.create_subprocess_exec(
    executable, *args,
    stdin=asyncio.subprocess.DEVNULL,  # THIS IS THE KEY
    stdout=asyncio.subprocess.PIPE,
    stderr=asyncio.subprocess.PIPE,
)

没有 stdin=asyncio.subprocess.DEVNULLgit和shell命令将在Claude Desktop中无限期挂起。

工具(15)

文件操作(10)

工具说明
read_file读取文本文件内容
write_file创建/覆盖文件
append_to_file附加到文件
delete_file删除文件
copy_file复制文件
move_file移动/重命名文件
file_exists检查是否存在
get_file_info尺寸、日期、类型
list_directory列表内容
search_files按glob模式查找

Shell和Git(2)

工具说明
run_powershell执行PowerShell命令(Windows)
run_git执行Git命令

Web和API(2)

工具说明
fetch_url以文本形式获取网页
http_request完整的HTTP API调用

系统(1)

工具说明
get_time获取当前本地日期和时间

安装

先决条件

  • Windows 10/11
  • Python 3.10+
  • Git for Windows
  • 克劳德桌面

1.克隆仓库

git clone https://github.com/YOUR_USERNAME/hermes-mcp.git
cd hermes-mcp

2.创建虚拟环境

python -m venv .venv
.venv\Scripts\activate

3.安装依赖项

pip install -r requirements.txt

4.配置允许的路径

编辑 server.py 并更新 ALLOWED_PATHS 列表以匹配您的系统:

ALLOWED_PATHS = [
    Path("C:/Users/YOUR_USERNAME/Documents"),
    Path("C:/Users/YOUR_USERNAME/Projects"),
    # Add your paths here
]

5.添加到Claude桌面配置

编辑 %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "hermes": {
      "command": "C:\\path\\to\\hermes-mcp\\.venv\\Scripts\\python.exe",
      "args": ["C:\\path\\to\\hermes-mcp\\server.py"]
    }
  }
}

6.重新启动克劳德桌面

使用示例

# Read a file
hermes:read_file path="C:\Users\me\project\README.md"

# Git operations
hermes:run_git args="status" working_directory="C:\Users\me\project"
hermes:run_git args="log --oneline -5" working_directory="C:\Users\me\project"

# Search for files
hermes:search_files path="C:\Users\me\project" pattern="*.py"

# Fetch a webpage
hermes:fetch_url url="https://example.com"

# API call
hermes:http_request method="GET" url="https://api.github.com/zen"

# POST with JSON
hermes:http_request method="POST" url="https://api.example.com/data" json_body={"key": "value"}

# Get current time
hermes:get_time

安全

  • 文件操作仅限于中的路径 ALLOWED_PATHS
  • Web/API工具没有URL限制(有意用于开发)
  • 无身份验证或速率限制(仅限本地使用)

依赖项

  • mcp -模型上下文协议SDK
  • httpx -异步HTTP客户端

技术细节

异步子进程模式

async def run_command(...):
    process = await asyncio.create_subprocess_exec(
        executable, *args,
        stdin=asyncio.subprocess.DEVNULL,  # Prevents stdin inheritance
        stdout=asyncio.subprocess.PIPE,
        stderr=asyncio.subprocess.PIPE,
        cwd=working_dir
    )
    
    try:
        stdout, stderr = await asyncio.wait_for(
            process.communicate(),
            timeout=30
        )
    except asyncio.TimeoutError:
        process.kill()
        await process.wait()
        # Handle timeout

为什么stdin=DEVNULL?

MCP服务器通过stdio进行通信。生成子进程时,默认情况下它会继承父进程的stdin。这意味着:

  1. 子进程的stdin指向MCP的通信管道
  2. 如果子进程试图读取stdin(git、shell等),它会阻止
  3. 它读取的MCP消息不是有效输入,导致挂起或错误

设置 stdin=DEVNULL 告诉子流程“您没有stdin”——它不会试图读取,也不会干扰MCP的通信。

故障排除

工具无限期悬挂

  • 检查一下 stdin=asyncio.subprocess.DEVNULL 已设置
  • 验证可执行路径是否存在

“不允许路径”错误

  • 将您的路径添加到 ALLOWED_PATHS 在server.py中

找不到Git

  • 安装Windows版Git
  • 检查中的路径 run_git 匹配您的安装

贡献

PR欢迎。关键领域:

  • Unix/Mac支持 -用bash替换PowerShell,更新路径
  • 附加工具
  • 更好的错误消息

许可证

麻省理工学院

鸣谢

stdin修复是通过痛苦的调试发现的,希望它能节省您的时间。

______________________________________________________________________

*以神的使者赫尔墨斯命名,因为MCP服务器就是这么做的。*

目录标签

目录标签

文件操作PythonClaudeMCP服务器本地部署开发工具集异步子进程处理Git集成

支持客户端

Claude DesktopClaude

接入字段

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

stdio

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

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdionone部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP