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
Magic Component Platform (MCP)

Magic Component Platform (MCP)

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

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

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

官方
精选
本地
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
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