Nash MCP Server

Nash MCP Server

一个模型上下文协议服务器,能够无缝执行命令、Python 代码、网页内容获取,以及可重用的任务管理,并具有安全的凭据处理功能。

操作系统自动化
开发者工具
浏览器自动化
本地
Python
访问服务器

README

Nash MCP 服务器

Nash MCP (模型上下文协议 (MCP) 服务器) 能够无缝执行命令、Python 代码、网页内容获取以及可重用任务管理。

要求

  • Python 3.11+
  • Poetry 包管理器 (推荐)

安装

git clone https://github.com/nash-run/nash-mcp.git
cd nash-mcp
poetry install

功能

  • 命令执行: 运行 shell 命令,带有错误处理
  • Python 执行: 执行 Python 代码,带有错误处理
  • 安全凭据: 存储和访问 API 密钥,无需将敏感数据暴露给 LLM
  • 网页内容访问: 获取和解析网页内容以进行分析
  • 任务存储库: 保存和组织可重用的工作流程和脚本

工具

执行模块

  • execute_command: 运行 shell 命令,带有适当的错误处理和输出捕获
  • list_session_files: 列出当前会话中的所有 Python 文件 (在创建新文件之前务必先使用此命令)
  • get_file_content: 检索文件内容,用于审查和编辑现有代码
  • edit_python_file: 使用精确的字符串模式匹配对现有 Python 文件进行有针对性的编辑 (首选方法)
  • execute_python: 执行 Python 代码片段,可以完全访问已安装的软件包 (仅用于新文件)
  • list_installed_packages: 获取有关可用 Python 软件包的信息

Web 交互

  • fetch_webpage: 检索网页内容并将其转换为可读的文本格式

密钥管理

  • nash_secrets: 安全地访问存储的 API 密钥和凭据。可以通过脚本中的环境变量访问。

任务管理

  • save_nash_task: 创建带有嵌入式脚本的可重用任务
  • list_nash_tasks: 查看所有可用的已保存任务
  • run_nash_task: 检索并显示先前保存的任务
  • execute_task_script: 运行已保存任务中的特定脚本
  • view_task_details: 查看任务的完整详细信息,包括脚本代码
  • delete_nash_task: 删除不再需要的任务

运行

这是用于 MCP 配置文件的命令

/path/to/this/repo/.venv/bin/mcp run /path/to/this/repo/src/nash_mcp/server.py

例如,如果您要将此 MCP 与 Claude Desktop 一起使用,则需要将 ~/Library/Application Support/Claude/claude_desktop_config.json 更改为:

{
  "mcpServers": {
    "Nash": {
      "command": "/Users/john-nash/code/nash-mcp/.venv/bin/mcp",
      "args": ["run", "/Users/john-nash/code/nash-mcp/src/nash_mcp/server.py"]
    }
  }
}

环境变量

Nash MCP 需要环境变量来指定所有数据文件路径。在根目录中创建一个 .env 文件,其中包含以下变量:

# 必需的环境变量
NASH_SECRETS_PATH=/path/to/secrets.json
NASH_TASKS_PATH=/path/to/tasks.json
NASH_LOGS_PATH=/path/to/logs/directory
NASH_SESSIONS_PATH=/path/to/sessions/directory

没有默认值 - 所有路径都必须显式配置。

会话管理

Nash MCP 服务器为每个服务器实例创建一个唯一的会话目录。此会话目录存储:

  • 会话期间执行的 Python 脚本
  • 已编辑脚本的备份文件
  • 错误日志和异常信息

这种持久存储支持强大的工作流程:

  1. 脚本以描述性名称保存,以便于参考
  2. 可以查看和修改以前的脚本,而不是重写
  3. 错误被捕获在配套文件中以进行调试

强制性工作流程

⚠️ 强制性预编码检查清单 - 在编写任何代码之前完成:⚠️

1. 检查可用软件包:list_installed_packages()
   - 了解您可以使用的库
   - 避免导入不可用的软件包
   
2. 检查可用密钥:nash_secrets()
   - 查看有哪些 API 密钥和凭据可用
   - 不要编写需要您没有的凭据的代码
   
3. 检查现有文件:list_session_files()
   - 查看已存在哪些代码
   - 避免重复现有功能
   
4. 审查相关文件内容:get_file_content("filename.py")
   - 了解现有的实现
   - 决定是编辑还是创建新的

文件编辑最佳实践

在使用 Nash MCP 时,请平衡效率和上下文保留:

  1. 在使用 list_session_files() 创建新文件之前,始终检查现有文件
  2. 优先使用 edit_python_file() 进行编辑,以进行小到中等的更改
  3. 在以下情况下考虑创建新文件
    • 与解释复杂的编辑相比,它在 token 效率方面更高
    • 您需要替换几乎整个文件
    • 该任务涉及全新的功能
    • 创建新文件将产生更清晰、更小的响应

黄金法则是在保持上下文和代码历史记录的同时最大限度地减少 token 的使用

这种方法保留了脚本历史记录,维护了上下文,并使增量开发更加高效。编辑工作流程遵循以下模式:

  1. 首先,检查可用资源 → list_installed_packages()nash_secrets()
  2. 列出所有现有文件 → list_session_files()
  3. 检查相关文件的内容 → get_file_content("file_name.py")
  4. 更改现有文件 → edit_python_file("file_name.py", old_content, new_content)
  5. 运行修改后的文件 → execute_python("", "file_name.py") (空代码字符串,无需修改即可运行)
  6. 仅当不存在类似文件时才创建新文件 → execute_python(new_code, "new_file.py")

要避免的常见错误

  1. 当进行小幅编辑在 token 效率方面更高时,却创建新文件
  2. 当创建新文件在 token 效率方面更高时,却进行复杂的编辑
  3. 尝试使用未安装的软件包
  4. 编写需要您没有的 API 密钥的代码
  5. 重写已存在的功能
  6. 没有在您的方法中考虑 token 效率

Token 效率指南

在决定是编辑还是创建新文件时,请考虑哪种方法会使用更少的 token:

  • 编辑时: 更改很小到中等,位于特定部分,并且易于描述
  • 创建新文件时: 更改将替换大部分文件,编辑将难以解释,或者需要一种全新的方法

始终致力于生成最小、最有效的输出,以完成任务,同时保持清晰度和上下文。

安全注意事项

  • 命令和脚本以与 MCP 服务器相同的权限运行
  • API 密钥和凭据存储在本地并作为环境变量加载
  • 在执行之前始终审查脚本,尤其是在处理敏感数据时

开发

日志

服务器会发出所有操作和工具执行的详细的带时间戳的日志。这些日志存储在 NASH_LOGS_PATH 环境变量指定的目录中。

测试

poetry run pytest

带有覆盖率

poetry run pytest --cov=nash_mcp

许可证

MIT

推荐服务器

Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
Apple MCP Server

Apple MCP Server

通过 MCP 协议与 Apple 应用(如“信息”、“备忘录”和“通讯录”)进行交互,从而使用自然语言发送消息、搜索和打开应用内容。

精选
本地
TypeScript
Excel MCP Server

Excel MCP Server

一个模型上下文协议服务器,使 AI 助手能够读取和写入 Microsoft Excel 文件,支持诸如 xlsx、xlsm、xltx 和 xltm 等格式。

精选
本地
Go
Playwright MCP Server

Playwright MCP Server

提供一个利用模型上下文协议的服务器,以实现类人浏览器的自动化,该服务器使用 Playwright,允许控制浏览器行为,例如导航、元素交互和滚动。

精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
@kazuph/mcp-fetch

@kazuph/mcp-fetch

用于获取网页内容和处理图像的模型上下文协议服务器。这使得 Claude Desktop(或任何 MCP 客户端)能够适当地获取网页内容和处理图像。

精选
本地
JavaScript