envmgr-mcp-server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@envmgr-mcp-serverlist all environments"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
envmgr-mcp-server
通过 SSH 和浏览器访问管理多套命名环境的 MCP 服务器,供 Claude 等 LLM 直接调用。
提供三个工具:
envmgr_list— 列出所有已配置环境(支持按type过滤)envmgr_ssh— 在指定环境上通过 SSH 执行 shell 命令envmgr_browser— 返回指定环境的浏览器 URL 和登录凭据(供 Playwright / chrome-devtools-mcp 使用)
安装
npm install -g @kikilight/envmgr-mcp-server
claude mcp add -s user envmgr-mcp-server -- envmgr-mcp-server完成后重启 Claude Code 即可使用。
升级到新版本:
npm install -g @kikilight/envmgr-mcp-server@latest
Related MCP server: mcp-ssh
配置环境
首次运行时,若未找到配置文件,服务会自动生成一份示例配置:
Windows:
%USERPROFILE%\.config\envmgr\envs.jsonmacOS / Linux:
~/.config/envmgr/envs.json
按需编辑该文件即可,格式如下:
{
"envs": {
"prod": {
"type": "production",
"description": "生产环境",
"ssh": {
"host": "10.0.0.1",
"user": "root",
"password": "yourpassword",
"port": 22
},
"browser": {
"url": "https://admin.example.com",
"username": "admin",
"password": "yourpassword"
}
}
}
}ssh 和 browser 均为可选,一个环境可同时拥有两者或只有其一。
开发 & 打包(开发者)
npm install
npm run build # tsc 编译 → dist/
npm run dev # tsx watch 模式,自动重载发布到 npm:
npm run build
npm publishAvailable Tools
3 toolsenvmgr_browser获取环境浏览器访问信息ARead-onlyIdempotent
返回指定环境的浏览器访问 URL 和认证凭据。
输出的结构化信息可供 Playwright、chrome-devtools-mcp 等浏览器自动化工具使用。 使用流程:
调用 envmgr_browser 获取 url / username / password
用浏览器自动化工具导航到 url
填写 username 和 password 完成登录
| Name | Required | Description | Default |
|---|---|---|---|
| env | Yes | 环境名称,与 envmgr_list 返回的名称一致 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds context by specifying the return fields (url, username, password) and the intended reuse in automation tools, which goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with a one-sentence summary, followed by a succinct numbered usage flow. Each sentence contributes to understanding the tool's purpose and usage, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one parameter, strong annotations, and no output schema, the description covers the return values and how to use them, which is sufficient for an agent to invoke the tool. Minor gaps like error handling for invalid env names exist but do not undermine completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'env' parameter, which already explains that it must match an environment name from envmgr_list. The description does not add any extra parameter meanings, aligning with the baseline 3 for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'returns browser access URL and authentication credentials for the specified environment,' which is a specific verb+resource pairing. It also distinguishes itself from siblings (envmgr_list, envmgr_ssh) by focusing on browser automation access and usage flow.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description includes a clear usage flow: call this tool to get URL/username/password, then use browser automation tools like Playwright. It implies the intended context but does not explicitly contrast with alternatives (e.g., 'use envmgr_ssh for SSH access'), so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
envmgr_list列出环境ARead-onlyIdempotent
列出所有已配置的环境及其连接信息。 配置文件路径:/root/.config/envmgr/envs.json(可通过 ENVMGR_CONFIG 环境变量覆盖)。
返回每个环境的:名称、类型、描述、SSH 状态、浏览器状态。密码不返回。
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | 按环境类型过滤,不传则返回所有 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, non-destructive), the description adds valuable context: the config file path, the ability to override via ENVMGR_CONFIG, and the explicit statement that passwords are not returned. These details disclose behavioral traits not captured in annotations, and there is no contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: the first sentence states the purpose, and the second provides configuration path, return fields, and an important exclusion (passwords). Every sentence adds value, and the content is front-loaded with the core functionality.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list operation with one optional filter and robust annotations, the description is complete. It specifies the exact returned fields, the configuration path, and the password exclusion, compensating for the lack of an output schema. No missing critical information for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter 'type' has a complete description in the schema ('按环境类型过滤,不传则返回所有'), providing full coverage. The main description does not discuss the parameter, but since schema coverage is 100%, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly uses the verb '列出' (list) with the resource 'environments', and even enumerates the returned fields (name, type, description, SSH status, browser status). This unambiguously distinguishes it from sibling tools like envmgr_ssh and envmgr_browser, which perform connection actions rather than listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for viewing configured environments but does not explicitly state when to use this tool versus envmgr_ssh or envmgr_browser. There is no mention of alternatives, exclusion criteria, or specific scenarios, so the guidance remains implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
envmgr_ssh在环境执行 SSH 命令ADestructive
通过 SSH 在指定环境上执行 shell 命令,返回命令输出。
使用场景:
查看服务日志:tail -100 /data/logs/hillos-core/log-error.log
检查进程状态:ps aux | grep java
查看磁盘空间:df -h
统计日志错误:grep -c 'ERROR' /data/logs/xxx/log-error.log
注意:命令在 root 权限下执行,请谨慎使用破坏性命令。
| Name | Required | Description | Default |
|---|---|---|---|
| env | Yes | 环境名称,与 envmgr_list 返回的名称一致 | |
| command | Yes | 要执行的 shell 命令 | |
| timeout_seconds | No | 超时秒数,默认 30,最大 120 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable context beyond annotations: it notes commands run as root and warns to use destructive commands with caution, complementing the destructiveHint and readOnlyHint annotations. It also states the output is the command output, providing basic behavioral expectations. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the primary action. The bulleted usage examples are useful but could be trimmed; still, each line contributes meaningful guidance. Overall, it is efficient and well-organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a straightforward tool with no output schema, the description covers the core details: what it does, common use cases, and a safety warning about root privileges. It lacks explicit mention of error handling or return format specifics, but given the simple nature, it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description reinforces the env parameter by mentioning '与 envmgr_list 返回的名称一致' (which also appears in the schema) and offers example commands, but adds no novel parameter-level semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool executes shell commands via SSH on a specified environment and returns command output. It explicitly differentiates from siblings (envmgr_list lists environments, envmgr_browser for browsing) by making the action and resource specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides concrete usage scenarios (e.g., tail logs, check processes, df -h) that imply when this tool is appropriate. It does not explicitly state when-not-to-use or name alternatives, but the context and sibling names make the intended usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
v1.0.0- First observed
envmgr_browser - First observed
envmgr_list - First observed
envmgr_ssh
TDQS
Each tool serves a distinct purpose: envmgr_list enumerates environments, envmgr_ssh executes commands, and envmgr_browser provides browser access credentials. The descriptions clearly separate these functions with no overlapping scope.
All tools share the envmgr_ prefix, making the namespace clear. The second part mixes a verb (list) with nouns (ssh, browser), which is a minor inconsistency, but the pattern remains predictable and readable.
With only three tools, the server is tightly scoped to its purpose of providing environmental access. Each tool is necessary and the count is not excessive or inadequate for the domain.
The server covers the primary lifecycle of listing environments and accessing them via SSH or browser. Minor gaps such as environment add/remove or update exist, but these are likely managed externally via config files, so the surface is sufficient for its intended use.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Governed MCP gateway: one endpoint for your tools, with credential custody and audit log.
Unified gateway exposing 150+ tools across all NexGenData MCP servers via one endpoint.
Authenticated MCP server for ClearPolicy policy and compliance workflows.
Run commands and read/write files on your servers over Termalin's keyless tunnels (hosted MCP).
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceMCP server for infrastructure discovery and remote management, enabling SSH command execution, file transfer, log tailing, and machine/service inventory with a companion web dashboard.2-
- GPL 3.0
- AlicenseBqualityCmaintenanceMCP server for administering Linux/Unix hosts via SSH and Windows hosts via WinRM/PowerShell Remoting, supporting persistent inventory, sessions, jobs, and command groups.29MIT
- AlicenseAqualityBmaintenanceManages multiple SSH servers through a local workspace with MCP tools, executing commands and transferring files securely with credential isolation.91MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/KevinLvLight/envmgr-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server