Evernight MCP 服务

suhoan/evernight
Hosted
0 Stars 40 次浏览 更新于 2026-08-23
该服务暂未提供标准配置,请参考 README 手动接入

可用工具 (12 个)

该服务在 MCP 协议中暴露的工具,AI 可按需调用

maven_artifact_detail 3 个参数 需填 2 项

查询 Maven Artifact 详情,包括最新版本、打包类型、POM 描述、许可证、SCM 和开发者信息。repositoryBaseUrl 可选,传入时必须是 Maven 仓库白名单中的镜像地址。

必填参数:groupId、artifactId

pypi_release_files 3 个参数 需填 1 项

查询 PyPI 指定 release 的文件列表,包括 wheel/sdist 文件名、Python tag、大小、上传时间、哈希和 yanked 状态。version 可选,留空时使用最新版本。repositoryBaseUrl 可选,传入时必须是 PyPI 仓库白名单中的镜像地址。

必填参数:packageName

pypi_package_info 3 个参数 需填 1 项

查询 PyPI 包元数据,包括最新版本、Python 版本要求、许可证、项目链接、分类器和版本摘要。repositoryBaseUrl 可选,传入时必须是 PyPI 仓库白名单中的镜像地址。

必填参数:packageName

osv_vulnerability_lookup 3 个参数 需填 2 项

通过 OSV 查询 Maven、npm、PyPI 包的已知漏洞,版本可选。

必填参数:ecosystem、packageName

maven_artifact_java_version 4 个参数 需填 2 项

只读取指定 Maven Artifact POM 中声明的 Java 版本字段,包括 maven.compiler.release/source/target、maven-compiler-plugin 和 maven-enforcer-plugin。注意:这些字段表示“目标兼容版本”或“要求的 Java 版本”,不一定是实际执行编译的 JDK。version 可选,留空时查询最新版本。repositoryBaseUrl 可选,传入时必须是 Maven 仓库白名单中的镜像地址。

必填参数:groupId、artifactId

maven_artifact_search 5 个参数

搜索 Maven Artifact 坐标,支持关键词、groupId、artifactId 组合查询。

该工具无需必填参数,直接调用即可

maven_dependency_detail 4 个参数 需填 3 项

查询指定 Maven 坐标和版本的 POM 依赖详情,包括 parent、dependencies 和 dependencyManagement。repositoryBaseUrl 可选,传入时必须是 Maven 仓库白名单中的镜像地址。

必填参数:groupId、artifactId、version

maven_latest_version 3 个参数 需填 2 项

根据 groupId 和 artifactId 查询 Maven 仓库中的最新版本。repositoryBaseUrl 可选,传入时必须是 Maven 仓库白名单中的镜像地址。

必填参数:groupId、artifactId

maven_version_list 3 个参数 需填 2 项

根据 groupId 和 artifactId 查询 Maven 仓库中的全部版本列表。repositoryBaseUrl 可选,传入时必须是 Maven 仓库白名单中的镜像地址。

必填参数:groupId、artifactId

osv_batch_vulnerability_lookup 1 个参数 需填 1 项

批量查询 Maven、npm、PyPI 包的 OSV 已知漏洞;最多 50 个包。

必填参数:packages

npm_package_version_detail 3 个参数 需填 1 项

查询 npm 指定版本元数据,包括依赖、peerDependencies、engines、bin、deprecated 和 tarball 信息。version 可选,留空时使用 latest。registryBaseUrl 可选,传入时必须是 npm registry 白名单中的镜像地址。

必填参数:packageName

npm_package_info 3 个参数 需填 1 项

查询 npm 包元数据,包括 latest、dist-tags、许可证、仓库、依赖和版本摘要。registryBaseUrl 可选,传入时必须是 npm registry 白名单中的镜像地址。

必填参数:packageName

服务介绍

简介

Evernight 是一个基于 Spring AI MCP Server WebMVC 的 streamable HTTP MCP 服务。它把 Maven、npm、PyPI 和 OSV 的常用查询封装成结构化 MCP 工具,适合在 vibe coding、依赖升级、漏洞排查和自动化研发工作流中使用。

服务默认暴露:

  • MCP endpoint:/mcp
  • 工具首页:/
  • 当前镜像白名单:/api/repositories
  • 健康检查:/actuator/health

公共服务

{
  "mcpServers": {
    "evernight": {
      "url": "https://suhoan-evernight.ms.show/mcp"
    }
  }
}

功能特性

  • 支持 Maven、npm、PyPI 包信息查询。
  • 支持 OSV 已知漏洞查询。
  • Maven、npm、PyPI 镜像地址均通过白名单校验,降低 SSRF 风险。
  • 使用 Caffeine 缓存上游查询结果,可按生态配置 TTL。
  • 支持 HTTP/HTTPS/SOCKS5 代理访问上游服务。
  • 支持按客户端 IP 限流。
  • 提供统一错误响应,便于智能体稳定处理失败。
  • 内置静态首页,展示工具目录、参数、示例、服务状态和镜像白名单。

工具列表

工具 说明
maven_latest_version 根据 groupIdartifactId 查询 Maven 仓库最新版本。
maven_version_list 查询 Maven 仓库中的完整版本列表。
maven_artifact_search 搜索 Maven Artifact;非 Maven Central 镜像仅支持 groupId + artifactId 精确查询。
maven_artifact_detail 查询 Maven Artifact 详情,包括 POM 描述、许可证、SCM 和开发者信息。
maven_dependency_detail 查询指定 Maven 坐标和版本的 POM 依赖详情,包括 parent、dependencies 和 dependencyManagement。
maven_artifact_java_version 只读取 Maven Artifact POM 中声明的 Java 版本字段;这些字段表示“目标兼容版本”或“要求的 Java 版本”,不一定是实际执行编译的 JDK。
npm_package_info 查询 npm 包元数据,包括 latestdist-tags、许可证、仓库、依赖和版本摘要。
npm_package_version_detail 查询 npm 指定版本元数据,包括依赖、peerDependencies、engines、bin、deprecated 和 tarball 信息。
pypi_package_info 查询 PyPI 包元数据,包括最新版本、Python 版本要求、许可证、项目链接和 release 摘要。
pypi_release_files 查询 PyPI 指定 release 的 wheel/sdist 文件、哈希、大小、上传时间和 yanked 状态。
osv_vulnerability_lookup 通过 OSV 查询 Maven、npm、PyPI 包的已知漏洞。
osv_batch_vulnerability_lookup 批量查询 Maven、npm、PyPI 包的 OSV 已知漏洞,最多 50 个包。

快速开始

环境要求:

  • JDK 25+
  • Maven 3.9+

本地运行:

$env:JAVA_HOME='D:\devProgram\jdk\jdk-26'
$env:Path='D:\devProgram\jdk\jdk-26\bin;D:\devProgram\apache-maven-3.9.6\bin;' + $env:Path
D:\devProgram\apache-maven-3.9.6\bin\mvn.cmd '-Dmaven.repo.local=D:\jarLibrary' spring-boot:run

访问:

  • 首页:http://localhost:25924/
  • MCP:http://localhost:25924/mcp
  • 健康检查:http://localhost:25924/actuator/health

Docker Compose

项目包含从源码构建的 Dockerfiledocker-compose.yml

docker compose up --build -d

查看状态:

docker compose ps
curl http://localhost:25924/actuator/health

停止服务:

docker compose down

配置

镜像白名单

工具入参中的 repositoryBaseUrlregistryBaseUrl 都是可选参数。传入时必须是对应生态白名单中的完整镜像地址;不传时使用逗号分隔列表中的第一个地址作为默认镜像。

常用环境变量

变量名 默认值 说明
SERVER_PORT 25924 HTTP 服务端口。
MAVEN_REPOSITORY_REPOSITORIES https://repo1.maven.org/maven2,https://maven.aliyun.com/repository/public Maven 仓库白名单,逗号分隔,第一项为默认仓库。
NPM_REGISTRY_REPOSITORIES https://registry.npmjs.org,https://registry.npmmirror.com npm registry 白名单,逗号分隔,第一项为默认 registry。
PYPI_REPOSITORY_REPOSITORIES https://pypi.org/pypi,https://pypi.tuna.tsinghua.edu.cn/pypi PyPI JSON API 白名单,逗号分隔,第一项为默认仓库。
EVERNIGHT_HTTP_PROXY_URL 上游代理地址,支持 http://127.0.0.1:7890https://127.0.0.1:7890socks5://127.0.0.1:1080
EVERNIGHT_HTTP_CONNECT_TIMEOUT_MILLIS 5000 上游 HTTP 连接超时时间,单位毫秒。
EVERNIGHT_HTTP_READ_TIMEOUT_MILLIS 10000 上游 HTTP 读取超时时间,单位毫秒。
EVERNIGHT_RATE_LIMIT_ENABLED true 是否启用 IP 限流。
EVERNIGHT_RATE_LIMIT_CLIENT_IP_HEADER X-Evernight-Client-IP CDN 或网关注入的真实客户端 IP 请求头。
EVERNIGHT_RATE_LIMIT_MAX_REQUESTS 120 每个客户端 IP 在限流窗口内允许的最大请求数。
EVERNIGHT_RATE_LIMIT_WINDOW_SECONDS 60 限流窗口长度,单位秒。
EVERNIGHT_ONLINE_USERS_ENABLED true 是否启用在线人数统计。
EVERNIGHT_ONLINE_USERS_WINDOW_SECONDS 300 在线人数活跃窗口长度,单位秒。
EVERNIGHT_ONLINE_USERS_MAXIMUM_SIZE 100000 在线人数统计最多保留的客户端标识数量。
EVERNIGHT_CACHE_ENABLED true 是否启用上游查询缓存。
EVERNIGHT_CACHE_MAXIMUM_SIZE 10000 查询缓存最大条目数。

HTTP 代理

evernight:
  http:
    proxy-url: # http://127.0.0.1:7890, https://127.0.0.1:7890, socks5://127.0.0.1:1080
    connect-timeout-millis: 5000
    read-timeout-millis: 10000

缓存

evernight:
  cache:
    enabled: true
    maximum-size: 10000
    maven-ttl-seconds: 21600
    npm-ttl-seconds: 21600
    pypi-ttl-seconds: 21600
    osv-ttl-seconds: 3600

IP 限流

evernight:
  rate-limit:
    enabled: true
    client-ip-header: X-Evernight-Client-IP
    max-requests: 120
    window-seconds: 60

客户端 IP 解析优先级:client-ip-header 配置的请求头、X-Forwarded-ForX-Real-IPremoteAddr。首页、静态资源、首页支撑接口和健康检查不会参与限流。

在线人数

在线人数按最近窗口内有请求的唯一客户端 IP 统计。首页、静态资源、首页支撑接口和 /actuator/* 健康检查请求不会计入人数;首页在服务健康状态为 UP 时会显示在线人数。

evernight:
  online-users:
    enabled: true
    window-seconds: 300
    maximum-size: 100000

测试

$env:JAVA_HOME='D:\devProgram\jdk\jdk-26'
$env:Path='D:\devProgram\jdk\jdk-26\bin;D:\devProgram\apache-maven-3.9.6\bin;' + $env:Path
D:\devProgram\apache-maven-3.9.6\bin\mvn.cmd '-Dmaven.repo.local=D:\jarLibrary' test

许可证

Evernight 使用 Apache License 2.0 开源协议。

相关 MCP 服务