纳米码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 模型。
设置:
- 安装Ollama:https://ollama.com/
- 拉动嵌入模型:
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模型(用于语义搜索)
设置
- 克隆仓库
- 安装依赖项:
pip install -r requirements.txt> 注: openai 仅CLI测试客户端需要。
- 安装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.pyCLI测试客户端
包含一个基于CLI的测试客户端,便于测试 奥拉玛.
先决条件:
- 安装Ollama:https://ollama.com/
- 拉动模型:
ollama pull qwen2.5:4b- 安装其他依赖项:
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私人有限公司
