kestiny18/spring-nacos-mcp
FreeNot checkedProject-aware, read-only Nacos config & service-discovery server for Spring Cloud repos. Zero setup: auto-discovers every environment (dev/test/prod/...) from t
About
Project-aware, read-only Nacos config & service-discovery server for Spring Cloud repos. Zero setup: auto-discovers every environment (dev/test/prod/...) from the repo's application/bootstrap files, with cross-environment key-level config diff. Single file, zero dependencies.
README
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.
You: "Is sso.server.productCode consistent between dev and test?"
Claude: → nacos_search_config(env=dev, keyword=sso.server.productCode)
→ nacos_diff_config(env_a=dev, env_b=test, data_id=sso.properties)
"Yes — the value is identical in both environments (`PC-1001`).
One related key differs though: sso.server.url points to
dev-sso.corp.com in dev and test-sso.corp.com in test."
Why not the official 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) |
Quickstart
The easy way: let your AI agent install it
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.
Manual, option A: copy one file (no PyPI, no dependencies)
The whole server is a single, zero-dependency, standard-library-only Python file. Drop it into your repo:
curl -sfL -o tools/nacos_mcp.py https://raw.githubusercontent.com/kestiny18/spring-nacos-mcp/main/src/spring_nacos_mcp/server.py
// .cursor/mcp.json or .mcp.json (Claude Code), at the repo root
{
"mcpServers": {
"spring-nacos-mcp": { "command": "python", "args": ["tools/nacos_mcp.py"] }
}
}
Works on intranet machines too — copy the file over however you like.
Manual, option B: uv / pip straight from git
{
"mcpServers": {
"spring-nacos-mcp": {
"command": "uvx",
"args": ["--from", "git+https://github.com/kestiny18/spring-nacos-mcp", "spring-nacos-mcp"]
}
}
}
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"].
Verify your setup
python tools/nacos_mcp.py --check # or: spring-nacos-mcp --check
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).
Tools
| 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 |
How discovery works
- Find the repo root (
.git,pom.xml,build.gradle,mvnw,gradlew, ...). - Scan every
*/src/main/resources/forapplication[-<profile>].{yml,yaml,properties}andbootstrap[-<profile>].{yml,yaml,properties}. Multi-document YAML withspring.config.activate.on-profile(or legacyspring.profiles) is supported. - For each profile, merge sources in priority order:
bootstrap-<profile>→application-<profile>→ basebootstrap→ baseapplication. - Extract
spring.cloud.nacos.*: server-addr, namespace, username/password, config group (also fromspring.config.import: nacos:...?group=X), discovery group,file-extension,shared-configs/extension-configs/ legacyshared-dataids. Relaxed binding (server-addr/serverAddr/server_addr) is handled. ${...}placeholders are resolved from environment variables (${nacos.addr}also triesNACOS_ADDR);${name:default}uses the default. Environments with unresolved placeholders are skipped with a clear log line.
Overrides
Environment variables (highest precedence), <ENV> is the upper-cased profile name:
NACOS_DEV_SERVER_ADDR / NACOS_DEV_NAMESPACE / NACOS_DEV_USERNAME /
NACOS_DEV_PASSWORD / NACOS_DEV_GROUP / NACOS_DEV_CONTEXT_PATH
NACOS_USERNAME / NACOS_PASSWORD # global fallback credentials
Or a .spring-nacos-mcp.yml at the repo root — patch discovered environments or
define ones that aren't in the repo at all:
envs:
staging:
server-addr: nacos-staging.corp.com:8848
namespace: ns-staging
username: readonly
password: ${STAGING_NACOS_PASSWORD} # resolved from env var
Security notes
- Read-only by construction: the only endpoints ever called are config/service GET queries and the login endpoint. There is no code path that writes to Nacos.
- Config content reaches the LLM. If your configs contain secrets, enable
masking:
SPRING_NACOS_MCP_MASK=1masks values whose keys containpassword/secret/token/credential/..., or provide your own list:SPRING_NACOS_MCP_MASK=password,apikey. Masking is off by default. - Prefer a read-only Nacos account (via
NACOS_USERNAME/NACOS_PASSWORD) over credentials committed in config files.
Compatibility
- Python ≥ 3.9, zero runtime dependencies.
- Nacos 1.x / 2.x via the v1 OpenAPI; auth via
/v1/auth/loginwith automatic fallback to/v3/auth/user/login(Nacos 3.x).https://server addresses and comma-separated cluster address lists are supported. - Nacos 3.x keeps v1 OpenAPI compatibility in current releases; if your deployment disables it, please open an issue — a v3 API backend is on the roadmap.
Limitations
- The built-in YAML parser covers the subset used by Spring config files (nested maps, lists, multi-document). Anchors and flow collections are ignored.
- Placeholders that come from Maven profile filtering (
@...@) are not resolved; use the override file for those repos.
License
Install kestiny18/spring-nacos-mcp in Claude Desktop, Claude Code & Cursor
unyly install kestiny18-spring-nacos-mcpInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add kestiny18-spring-nacos-mcp -- uvx --from git+https://github.com/kestiny18/spring-nacos-mcp spring-nacos-mcpFAQ
Is kestiny18/spring-nacos-mcp MCP free?
Yes, kestiny18/spring-nacos-mcp MCP is free — one-click install via Unyly at no cost.
Does kestiny18/spring-nacos-mcp need an API key?
No, kestiny18/spring-nacos-mcp runs without API keys or environment variables.
Is kestiny18/spring-nacos-mcp hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install kestiny18/spring-nacos-mcp in Claude Desktop, Claude Code or Cursor?
Open kestiny18/spring-nacos-mcp on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare kestiny18/spring-nacos-mcp with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
