The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Spring Nacos MCP listing page.
A project-aware, read-only Nacos MCP server for Spring Cloud repositories.
Point it at your Spring Cloud repo. It reads your own application-* / bootstrap-*
files, discovers every environment (dev / test / pre / prod / ...), and gives your AI
assistant read-only Nacos tools across all of them — no host, port, namespace or
token to configure.
nacos-mcp-server?The official nacos-group/nacos-mcp-server
connects to one cluster that you configure by hand (--host, --port, --access_token).
That's the right tool for operating a Nacos cluster.
This project answers a different question: "what does my project's config look like across environments?"
| official nacos-mcp-server | spring-nacos-mcp | |
|---|---|---|
| Setup | manual host/port/token per cluster | zero-config: parsed from your repo |
| Environments | one per server instance | all profiles, env param on every tool |
| Cross-env diff | not possible (single cluster) | built-in nacos_diff_config |
| Spring awareness | none | shared-configs, file-extension, app config |
| Write operations | planned | never (read-only by design) |
Paste this into Cursor / Claude Code / Codex / Trae:
Install the MCP server from https://github.com/kestiny18/spring-nacos-mcp into this project and verify it works.
The repo ships an llms-install.md with exact steps per client, so the agent can do the whole thing — download, config, verification — by itself.
The whole server is a single, zero-dependency, standard-library-only Python file. Drop it into your repo:
Works on intranet machines too — copy the file over however you like.
Or pip install git+https://github.com/kestiny18/spring-nacos-mcp and use the
spring-nacos-mcp command.
The server auto-detects the repo root from its working directory (your editor's
workspace). For clients that don't launch servers in the workspace (e.g. Claude
Desktop), pin it: "args": [..., "--repo", "/path/to/repo"].
Prints every discovered environment, where it came from, and whether the Nacos
server is reachable. Exit codes: 0 all reachable · 1 nothing discovered ·
2 discovered but some unreachable (usually VPN/network, not setup).
| Tool | What it does |
|---|---|
nacos_list_envs | List discovered environments with address/namespace/groups |
nacos_get_config | Read one config's raw content by dataId |
nacos_get_app_config | App config + the shared/extension configs your project declares |
nacos_list_configs | List dataIds in a namespace (optional fuzzy filter) |
nacos_search_config | Full-text search across all config contents |
nacos_diff_config | Key-level diff of one config between two environments |
nacos_list_services | List services in the discovery registry |
nacos_list_instances | List online instances (IP/port/health) of a service |
.git, pom.xml, build.gradle, mvnw, gradlew, ...).*/src/main/resources/ for
application[-<profile>].{yml,yaml,properties} and bootstrap[-<profile>].{yml,yaml,properties}.
Multi-document YAML with spring.config.activate.on-profile (or legacy
spring.profiles) is supported.bootstrap-<profile> → application-<profile> → base bootstrap → base application.spring.cloud.nacos.*: server-addr, namespace, username/password, config
group (also from spring.config.import: nacos:...?group=X), discovery group,
file-extension, shared-configs / extension-configs / legacy shared-dataids.
Relaxed binding (server-addr / serverAddr / server_addr) is handled.${...} placeholders are resolved from environment variables
(${nacos.addr} also tries NACOS_ADDR); ${name:default} uses the default.
Environments with unresolved placeholders are skipped with a clear log line.Environment variables (highest precedence), <ENV> is the upper-cased profile name:
Or a .spring-nacos-mcp.yml at the repo root — patch discovered environments or
define ones that aren't in the repo at all:
SPRING_NACOS_MCP_MASK=1 masks values whose keys contain
password/secret/token/credential/..., or provide your own list:
SPRING_NACOS_MCP_MASK=password,apikey. Masking is off by default.NACOS_USERNAME / NACOS_PASSWORD) over
credentials committed in config files./v1/auth/login with automatic
fallback to /v3/auth/user/login (Nacos 3.x). https:// server addresses and
comma-separated cluster address lists are supported.@...@) are not resolved;
use the override file for those repos.