编程代理工具服务器

nanocode MCP Server是一个轻量级、快速且安全的模型上下文协议(MCP)服务器,提供文件操作、代码搜索和Shell命令执行等编程代理工具。

  • by hamishfromatech
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 hamishfromatech/nanocode-mcp

使用说明

纳米码MCP服务器

一个轻量级、快速和安全的模型上下文协议(MCP)服务器,它公开了用于文件操作、代码搜索和shell命令执行的编码代理工具。

概述

纳米码mcp 是一个MCP服务器,旨在使AI助手和MCP客户端能够与本地文件系统交互并执行shell命令。建于 FastMCP,它为编码任务提供了一套简化的工具。

基于 纳米代码 1rgs。

  • 作者和维护者:A-Tech私人有限公司
  • 许可证:开源

特性

可用工具

工具 说明
read_file 读取带有行号的文件内容,支持偏移和限制
write_file 将内容写入文件(创建或覆盖)
edit_file 通过替换文本来编辑文件(查找和替换)
glob_search 按glob模式查找文件,按修改时间排序
grep_search 在文件中搜索正则表达式模式
run_bash 执行带有超时支持的shell命令
semantic_search 使用自然语言查询搜索代码库(需要Ollama)
reindex_codebase 手动触发代码库的完整重新索引

语义搜索

这 semantic_search 该工具支持使用向量嵌入进行自然语言代码搜索。它在后台对代码库进行索引,并允许您使用描述性查询搜索代码。

要求:

  • 奥拉玛 已安装并正在运行
  • nomic-embed-text 型号: ollama pull nomic-embed-text

它是如何工作的:

  • 启动时,服务器在后台索引支持的文件类型
  • 索引被持久化 .nanocode-mcp/vector_store.json
  • 将文件截断为~6000个字符,以保持在嵌入模型上下文限制范围内

支持的文件类型: .py, .js, .ts, .jsx, .tsx, .json, .md, .txt, .yaml, .yml, .toml, .ini, .cfg, .sh, .bash, .zsh, .html, .css, .scss, .sql, .xml, .go, .rs, .java, .c, .cpp, .h, .hpp | semantic_search |使用自然语言查询搜索代码库(需要Ollama)| | reindex_codebase |手动触发代码库的完整重新索引|

语义搜索

该服务器包括一个语义搜索功能,可以为您的代码库建立索引并启用自然语言查询。它通过Ollama使用本地嵌入 nomic-embed-text 模型。

设置:

  1. 安装Ollama:https://ollama.com/
  2. 拉动嵌入模型:
    ollama pull nomic-embed-text
    

服务器在启动时自动在后台为支持的文件类型建立索引。索引文件包括: .py, .js, .ts, .jsx, .tsx, .json, .md, .txt, .yaml, .yml, .toml, .ini, .cfg, .sh, .bash, .zsh, .html, .css, .scss, .sql, .xml, .go, .rs, .java, .c, .cpp, .h, .hpp

例子:

semantic_search("find authentication logic")

安装

先决条件

  • Python 3.10或更高版本
  • fastmcp 包裹
  • 奥拉玛 随着 nomic-embed-text 模型(用于语义搜索)

设置

  1. 克隆仓库

  2. 安装依赖项:

    pip install -r requirements.txt
    

    注: openai 仅CLI测试客户端需要。

  3. 安装fastmcp:

    pip install fastmcp
    

用法

运行服务器

使用stdio传输启动MCP服务器(默认):

python mcp_server.py

对于HTTP传输:

python -c "from mcp_server import mcp; mcp.run(transport='http', host='0.0.0.0', port=8000)"

与MCP客户端集成

克劳德桌面版

添加到您的Claude Desktop配置文件中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
视窗: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "nanocode": {
      "command": "python",
      "args": ["C:/path/to/mcp_server.py"]
    }
  }
}

其他MCP客户端

对于支持MCP over stdio的客户端,只需运行:

python /path/to/mcp_server.py

CLI测试客户端

包含一个基于CLI的测试客户端,便于测试 奥拉玛.

先决条件:

  1. 安装Ollama:https://ollama.com/
  2. 拉动模型:
    ollama pull qwen2.5:4b
    
  3. 安装其他依赖项:
    pip install openai
    

运行客户端:

python client.py

特征:

  • 交互式聊天界面,彩色输出
  • 通过AI代理自动调用工具
  • 类型 tools 列出可用的MCP工具
  • 类型 exit 或 quit 停止

示例会话:

You: List all Python files in the current directory

[Tool Call] glob_search({'pattern': '**/*.py'})
[Result] ./mcp_server.py
         ./client.py

Assistant: I found 2 Python files in the current directory:
- mcp_server.py
- client.py

工具参考

read_file

读取带有行号的文件内容。

参数:

  • path (string):要读取的文件路径
  • offset (int,可选):起始行号(0索引,默认值:0)
  • limit (int,可选):要读取的最大行数(默认值:全部)

退货: 带有行号前缀的文件内容


write_file

将内容写入文件,创建或覆盖它。

参数:

  • path (string):要写入的文件路径
  • content (string):要写的内容

退货: "ok" 成功时


edit_file

通过替换文本来编辑文件。

参数:

  • path (string):要编辑的文件路径
  • old_string (string):要查找和替换的文本(必须存在)
  • new_string (string):替换文本
  • replace_all (bool,可选):替换所有匹配项(默认值:false)

退货: "ok" 成功时,如果未找到错误消息或错误消息不唯一


glob_search

查找与glob模式匹配的文件,按修改时间排序(最新的第一个)。

参数:

  • pattern (string):球状图案(例如。, **/*.py)
  • path (字符串,可选):基本目录(默认:当前目录)

退货: 换行符分隔的匹配文件列表


grep_search

在文件中搜索正则表达式模式。

参数:

  • pattern (string):要搜索的正则表达式模式
  • path (字符串,可选):基本目录(默认:当前目录)

退货: 匹配线条如 filepath:line_number:content (最多50个结果)


run_bash

执行shell命令。

参数:

  • command (string):要执行的Shell命令
  • timeout (int,可选):超时秒数(默认值:30)

退货: 命令输出(stdout和stderr组合)


semantic_search

通过向量嵌入使用自然语言查询搜索代码库。

参数:

  • query (string):描述搜索内容的自然语言查询
  • limit (int,可选):返回的最大结果数(默认值:5)

退货: 使用文件路径、相似性得分和上下文片段对搜索结果进行排名

要求: Ollama跑步 nomic-embed-text 模型


reindex_codebase

手动触发代码库的完整重新索引以进行语义搜索。

参数: 无

退货: 关于重新索引操作的状态消息


semantic_search

通过向量嵌入使用自然语言查询搜索代码库。

参数:

  • query (string):描述搜索内容的自然语言查询
  • limit (int,可选):返回的最大结果数(默认值:5)

退货: 使用文件路径、相似性得分和上下文片段对搜索结果进行排名

要求: Ollama跑步 nomic-embed-text 模型


reindex_codebase

手动触发代码库的完整重新索引以进行语义搜索。

参数: 无

退货: 关于重新索引操作的状态消息


semantic_search

使用自然语言查询搜索代码库。

参数:

  • query (string):描述搜索内容的自然语言查询
  • limit (int,可选):返回的最大结果数(默认值:5)

退货: 使用文件路径、相似性得分和上下文片段对搜索结果进行排名

要求: 奥拉玛与 nomic-embed-text 模型运行


reindex_codebase

手动触发代码库的完整重新索引。

参数: 无

退货: 关于重新索引操作的状态消息

注: 重新索引在后台运行并清除现有索引

安全考虑

⚠️ 警告:此服务器提供直接文件系统访问和shell命令执行功能。小心使用:

  • 仅连接到受信任的MCP客户端
  • 在敏感环境中执行命令之前检查命令
  • 考虑在容器化或沙盒环境中运行
  • 这 run_bash 该工具具有超时保护,但没有命令限制

贡献

欢迎投稿!请随时提交问题和拉取请求。

许可证

开源-有关详细信息,请参阅LICENSE文件。


制作❤️ 通过 A-Tech私人有限公司