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

Narsil MCP Docker

MCP Server

为Narsil MCP Server提供的多架构Docker镜像,支持AI代理通过模型上下文协议进行深度代码分析。

工具数

35

提示词数

0

GitHub Stars

0

资源数

0
安全分析ShellClaudeClaudeCursorWindsurfVS Code

安装说明

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

作者 / 组织

MekayelAnik

提供方

MekayelAnik

最后核验

2026/5/17 20:20

运行时

Docker

快速接入

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

命令预览

docker run -d \

详细介绍

Narsil MCP服务器-Docker镜像

Unofficial Multi-Architecture Docker Image for Narsil MCP Server

概述

这是一个非官方的、由社区维护的Docker镜像,它打包了 Narsil MCP服务器 用于集装箱化部署。它使AI代理(Claude Code、VS Code Copilot、Cursor、Windsurf等)能够通过模型上下文协议(MCP)执行深度代码智能。

上游: (麻省理工学院或阿帕奇-2.0)

主要特点

  • 多架构支持 -原生支持x86-64和ARM64
  • 多种传输协议 -可流式传输的HTTP、SSE和WebSocket支持(可通过env-var选择)
  • 90种代码智能工具 -符号搜索、调用图、安全分析、SBOM等
  • 32语言支持 -Rust、Python、TypeScript、Go、Java、C#等26种语言
  • 设计安全 -API密钥认证(不区分大小写的承载)、CORS、TLS终止、安全头
  • 高性能 -HAProxy支持QUIC/HTTP3,ZSTD压缩

可用Narsil MCP工具类别

类别示例
存储库和文件管理list_repos, get_project_structure, get_file, reindex
符号搜索和导航find_symbols, get_symbol_definition, find_references
代码搜索search_code, semantic_search, hybrid_search, find_similar_code
调用图分析get_call_graph, get_callers, get_callees, get_complexity
证券分析find_injection_vulnerabilities, scan_security, check_owasp_top10
供应链安全generate_sbom, check_dependencies, check_licenses
Git集成get_blame, get_file_history, get_hotspots, get_contributors
神经语义搜索neural_search, find_semantic_clones
类型推断infer_types, check_type_errors
数据流分析get_data_flow, find_dead_code, find_dead_stores
SPARQL/知识图谱sparql_query, get_ccg_manifest, export_ccg

______________________________________________________________________

给我买杯咖啡

您的支持鼓励我继续创建/支持我的开源项目。 如果你在这个项目中发现了价值,你可以给我买杯咖啡,让我保持灵感。

快速开始

先决条件

  • Docker引擎: 23.0+
关键: 在没有适当的安全措施(反向代理、SSL/TLS、身份验证、防火墙规则)的情况下,不要将此容器直接暴露在互联网上。

______________________________________________________________________

Docker Compose(推荐)

services:
  narsil-mcp:
    image: mekayelanik/narsil-mcp:latest
    container_name: narsil-mcp
    restart: unless-stopped
    ports:
      - "8010:8010"
      # Optional: HTTP visualization frontend (requires NARSIL_HTTP=true)
      # - "3000:3000"
    volumes:
      - /path/to/your/repos:/data:ro
      - narsil-cache:/home/node/.cache         # Persist embedding model cache
    environment:
      - PORT=8010
      - INTERNAL_PORT=38011
      - PUID=1000
      - PGID=1000
      - TZ=UTC
      - NODE_ENV=production
      - PROTOCOL=SHTTP
      - ENABLE_HTTPS=false
      - HTTP_VERSION_MODE=auto
      - DATA_DIR=/data
      - NARSIL_GIT=true
      - NARSIL_CALL_GRAPH=true
      - NARSIL_PERSIST=true
      - NARSIL_STREAMING=true
      # Optional: Neural semantic search
      # - NARSIL_NEURAL=true
      # - VOYAGE_API_KEY=your-voyage-key
      # Optional: HTTP visualization frontend
      # - NARSIL_HTTP=true
      # - NARSIL_HTTP_PORT=3000
      # Optional: require Bearer token auth at HAProxy layer
      # - API_KEY=replace-with-strong-secret
      # Optional: CORS origins
      # - CORS=*

volumes:
  narsil-cache:
    driver: local

Docker运行

docker volume create narsil-cache
docker run -d \
  --name=narsil-mcp \
  --restart=unless-stopped \
  -p 8010:8010 \
  -v /path/to/your/repos:/data:ro \
  -v narsil-cache:/home/node/.cache \
  -e PORT=8010 \
  -e PROTOCOL=SHTTP \
  -e NARSIL_GIT=true \
  -e NARSIL_CALL_GRAPH=true \
  -e NARSIL_PERSIST=true \
  mekayelanik/narsil-mcp:latest

# With HTTP visualization frontend enabled:
docker volume create narsil-cache
docker run -d \
  --name=narsil-mcp \
  --restart=unless-stopped \
  -p 8010:8010 \
  -p 3000:3000 \
  -v /path/to/your/repos:/data:ro \
  -v narsil-cache:/home/node/.cache \
  -e PORT=8010 \
  -e PROTOCOL=SHTTP \
  -e NARSIL_GIT=true \
  -e NARSIL_CALL_GRAPH=true \
  -e NARSIL_PERSIST=true \
  -e NARSIL_HTTP=true \
  mekayelanik/narsil-mcp:latest

访问端点

服务端点描述
MCP(shtp)http://host-ip:8010/mcp流式HTTP MCP端点(推荐)
MCP(SSE)http://host-ip:8010/sse服务器发送事件MCP端点
MCP(WS)ws://host-ip:8010/messageWebSocket MCP端点
HTTP前端http://host-ip:3000可视化前端(需要 NARSIL_HTTP=true)
健康http://host-ip:8010/healthz健康检查端点

启用HTTPS时(ENABLE_HTTPS=true),使用TLS端点:

服务端点
MCP(shtp)https://host-ip:8010/mcp
MCP(SSE)https://host-ip:8010/sse
MCP(WS)wss://host-ip:8010/message
安全警告: 容器默认为HTTP(ENABLE_HTTPS=false)以便于本地设置。使用 ENABLE_HTTPS=true 有自己的生产证书。看 证书_教程_指南.md 以获取说明。

______________________________________________________________________

配置

完整的环境变量参考

核心设置

变量默认值可能值描述
PORT80101-65535外部HAProxy侦听端口
INTERNAL_PORT380111-65535内部超级网关端口(不要暴露)
PROTOCOLSHTTPSHTTP, SSE, WSMCP传输协议
PUID1000任何有效的UID进程用户ID
PGID1000任何有效的GID进程组ID
TZUTC任何时区容器时区
NODE_ENV*(空)*production等等。Node.js环境
DATA_DIR/data任何路径已装载存储库的目录

Narsil MCP功能标志

变量默认值可能值描述
NARSIL_GITfalsetrue, false启用git责备、历史、贡献者
NARSIL_CALL_GRAPHfalsetrue, false启用函数调用图分析
NARSIL_PERSISTfalsetrue, false将索引保存到磁盘以快速启动
NARSIL_WATCHfalsetrue, false文件更改时自动重新索引
NARSIL_LSPfalsetrue, false启用LSP悬停,转到定义
NARSIL_STREAMINGfalsetrue, false流式传输大型结果集
NARSIL_REMOTEfalsetrue, false启用GitHub远程仓库支持
NARSIL_NEURALfalsetrue, false启用神经语义嵌入
NARSIL_GRAPHfalsetrue, false启用SPARQL/RDF知识图和CCG工具
NARSIL_VERBOSEfalsetrue, false启用详细日志记录
NARSIL_REINDEXfalsetrue, false启动时强制重新索引(每个容器生命周期一次)
NARSIL_HTTPfalsetrue, false启用可视化前端HTTP服务器

Narsil MCP串设置

变量默认值可能值描述
NARSIL_INDEX_PATH~/.cache/narsil-mcp任意路径自定义持久索引存储路径
NARSIL_DISCOVER*(空)*目录路径自动发现目录路径中的存储库
NARSIL_HTTP_PORT30001-65535HTTP可视化前端端口
NARSIL_NO_CACHEfalsetrue, false禁用分析缓存
NARSIL_CACHE_TTL1800整数(秒)缓存TTL(秒)
NARSIL_GRAPH_PATH/graph任意路径自定义知识图存储路径
NARSIL_NEURAL_BACKENDapiapi, onnx神经嵌入后端
NARSIL_NEURAL_MODELvoyage-code-2voyage-code-2, text-embedding-3-large等等。嵌入模型名称
NARSIL_NEURAL_DIMENSION*(自动)*整数(例如。 3072)覆盖嵌入尺寸
NARSIL_PRESET*(空)*minimal, balanced, full, security-focused刀具预设配置文件
NARSIL_ENABLED_CATEGORIES*(空)*逗号分隔启用特定工具类别
NARSIL_DISABLED_TOOLS*(空)*逗号分隔禁用特定工具

API密钥的神经嵌入

变量默认值描述
EMBEDDING_API_KEY*(空)*任何嵌入提供程序的通用API密钥
VOYAGE_API_KEY*(空)*Voyage AI特定API密钥
OPENAI_API_KEY*(空)*特定于OpenAI的API密钥
EMBEDDING_SERVER_ENDPOINT*(空)*自定义嵌入API端点URL

神经嵌入注释

神经嵌入是 可选的.没有 NARSIL_NEURAL=true,所有80多个核心工具都能工作(符号搜索、调用图、安全扫描、SBOM、git分析、类型推理、数据流、SPARQL等)。仅 neural_searchfind_semantic_clones 需要嵌入。

  • API后端 (默认):设置 NARSIL_NEURAL=true + NARSIL_NEURAL_BACKEND=api +API密钥。默认型号为 voyage-code-2 (1024调暗)。
  • ONNX后端 (本地,无API密钥):设置 NARSIL_NEURAL_BACKEND=onnx。需要通过手动下载模型 optimum-cli export onnx。不自动下载。
  • 缓存持久性:The narsil-cache 体积在 /home/node/.cache 在重新启动时持久化模型文件和ONNX缓存。

API后端示例:

# Voyage AI
- NARSIL_NEURAL=true
- NARSIL_NEURAL_BACKEND=api
- NARSIL_NEURAL_MODEL=voyage-code-2
- VOYAGE_API_KEY=your-voyage-key

# OpenAI
- NARSIL_NEURAL=true
- NARSIL_NEURAL_BACKEND=api
- NARSIL_NEURAL_MODEL=text-embedding-3-small
- OPENAI_API_KEY=sk-your-key

# Custom OpenAI-compatible endpoint (e.g., self-hosted embedding server)
- NARSIL_NEURAL=true
- NARSIL_NEURAL_BACKEND=api
- NARSIL_NEURAL_MODEL=Snowflake/snowflake-arctic-embed-xs
- EMBEDDING_SERVER_ENDPOINT=http://your-embedder-host:port/v1
- EMBEDDING_API_KEY=your-key-or-unused
- NARSIL_NEURAL_DIMENSION=384

Narsil MCP预设

预设工具说明
minimal26快速、轻便(Zed、Cursor)
balanced51良好的默认值(VS代码、IntelliJ)
full75+所有功能(克劳德桌面,综合分析)
security-focused不同安全和供应链工具

安全设置

变量默认值可能值描述
API_KEY*(空)*5-256个可打印字符HAProxy身份验证的承载令牌
CORS*(空)*起源(逗号分隔)或 *允许的CORS来源
ENABLE_HTTPSfalsetrue, false启用TLS终止
TLS_CERT_PATH/etc/haproxy/certs/server.crt文件路径TLS证书路径
TLS_KEY_PATH/etc/haproxy/certs/server.key文件路径TLS私钥路径
TLS_MIN_VERSIONTLSv1.3TLSv1.2, TLSv1.3最低TLS版本
HTTP_VERSION_MODEautoauto, h1, h2, h3, h1+h2, allHTTP版本协商
RATE_LIMIT00-N每台设备的最大请求数 RATE_LIMIT_PERIOD 按IP(0 =禁用)
RATE_LIMIT_PERIOD10s10s, 1m, 1h等等。用于速率限制的滑动窗口
MAX_CONNECTIONS_PER_IP00-N每个IP的最大并发连接数(0 =禁用)
IP_ALLOWLIST*(空)*逗号分隔的IPs/CIDRIPs/CIDR允许(所有其他IP被阻止)
IP_BLOCKLIST*(空)*逗号分隔IPs/CIDR要阻止的IPs/CIDR
布尔值: true, 1, yes, on 都被视为真理。其他一切都是假的。
每个容器生命周期一次: NARSIL_REINDEX 容器创建后只运行一次。在后续重启时跳过它(例如, docker restart).要重新触发,请重新创建容器(docker compose down && docker compose up -d).
健康检查: 容器的健康检查有60秒的启动期,以适应缓慢的启动,尤其是在 NARSIL_REINDEX=trueNARSIL_NEURAL=true 触发初始索引或模型加载。

API密钥验证说明

  • API_KEY 在反向代理级别强制执行身份验证。
  • 头球 Authorization: Bearer .
  • /healthz CORS飞行前(OPTIONS)绕过身份验证。

速率限制和IP访问控制

  • 速率限制:RATE_LIMIT=100 允许每100个请求 RATE_LIMIT_PERIOD (默认值 10s)每个IP。超过限制将返回HTTP 429 Retry-After 头球
  • 连接限制:MAX_CONNECTIONS_PER_IP=50 限制每个IP的并发连接。超过此值将返回HTTP 429。
  • IP阻止列表:IP_BLOCKLIST=192.0.2.0/24,198.51.100.5 以阻止特定IP/CIDR。被阻止的IP接收HTTP 403。
  • IP地址列表:IP_ALLOWLIST=10.0.0.0/8,192.168.1.0/24 只允许列出的IP/CIDR。所有其他人都接收HTTP 403。始终允许本地主机。
  • 所有功能默认为禁用。根据需要进行组合——在分配列表之前检查块列表。

一次性操作

对于不设置环境变量的ad-hoc操作,请使用 docker exec:

docker exec narsil-mcp narsil-mcp --repos /data --reindex   # Force full re-index

______________________________________________________________________

安装分析存储库

将存储库目录装载到 /data (或指定的路径 DATA_DIR).每个子目录都成为一个可索引的存储库。

volumes:
  # Mount entire projects directory
  - /home/user/projects:/data:ro
  # Or mount individual repositories
  - /home/user/my-rust-app:/data/my-rust-app:ro
  - /home/user/my-node-app:/data/my-node-app:ro

然后告诉你的AI代理使用挂载的路径进行分析:

  • “在中搜索符号 /data/my-rust-app"
  • “在中查找注入漏洞 /data/my-node-app"
  • “为生成SBOM /data/my-rust-app"
  • “获取调用图 main/data/my-node-app"

______________________________________________________________________

MCP客户端配置

克劳德代码

添加 ~/.claude.json 在...之下 mcpServers:

{
  "mcpServers": {
    "narsil": {
      "type": "sse",
      "url": "http://host-ip:8010/sse"
    }
  }
}

或者对于流式HTTP:

{
  "mcpServers": {
    "narsil": {
      "type": "http",
      "url": "http://host-ip:8010/mcp"
    }
  }
}

VS代码/代码/光标/风帆

它们都使用相同的JSON格式。在相应的配置文件中进行配置:

  • VS Code: .vscode/settings.json (按键: mcp.servers)
  • 法典: ~/.codex/config.json (按键: mcpServers)
  • 光标: ~/.cursor/mcp.json (按键: mcpServers)
  • 帆板运动: .codeium/mcp_settings.json (按键: mcpServers)
{
  "mcpServers": {
    "narsil": {
      "transport": "http",
      "url": "http://host-ip:8010/mcp"
    }
  }
}

______________________________________________________________________

可用标签

标签平台描述
latestamd64, arm64最新稳定版本
1.7.0amd64, arm64具体版本

______________________________________________________________________

许可证

此Docker镜像打包已获得许可 GNU通用公共许可证v3.0.

上游许可证

  • 超级网关:MIT许可证
  • HAProxy:GNU通用公共许可证v2.0

这是一个 非官方的 社区包装。它不隶属于narsil-mcp作者,也不受其认可或支持。看 通知 以获得完整的归属。

______________________________________________________________________

给我买杯咖啡

您的支持鼓励我继续创建/支持我的开源项目。 如果你在这个项目中发现了价值,你可以给我买杯咖啡,让我保持灵感。

______________________________________________________________________

维护者

穆罕默德·梅凯埃尔·阿尼克

目录标签

目录标签

安全分析ShellClaude本地部署Docker镜像代码智能分析多架构支持AI代理工具

支持客户端

ClaudeCursorWindsurfVS Code

接入字段

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

stdio

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

token

运行时(runtime,运行环境)

Docker

工具数量(toolCount,工具数)

35

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdiotoken部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP