dev-env-setup
Installs Android Studio and associated Android development tools.
Installs Docker container platform.
Installs Flutter SDK for mobile app development.
Installs Git version control system.
Installs Node.js runtime with optional version specification.
Installs OpenJDK 17 for Java development.
Installs Python 3 and pip using the system package manager.
Installs Rust programming language with cargo.
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., "@dev-env-setupcheck what tools are installed"
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.
Dev Environment Setup Tool
A production-ready dual-mode tool that automates the setup of local development environments for Python, Node.js, Flutter, Android, and more across macOS and Linux systems.
๐ฏ Two Modes:
CLI Mode: Standalone command-line tool (
devenvcommand)MCP Mode: Model Context Protocol server for AI assistant integration
โจ Features
Dual Mode Operation: Use as standalone CLI or MCP server
Cross-Platform Support: Works on both macOS and Linux distributions
Intelligent Package Manager Detection: Automatically detects and uses the appropriate package manager (Homebrew, apt, dnf, yum, pacman, zypper)
Modular Architecture: Clean, testable, and extensible codebase
Comprehensive Tool Support: Python, Node.js, Git, Docker, Java, Go, Rust, Flutter, and more
Automated Installation: One-command setup for entire development stacks
Environment Validation: Check what's installed and get recommendations
Shell Configuration: Automatically configures environment variables and PATH
CI/CD Ready: GitHub Actions workflows included
Unit Tested: Comprehensive test coverage for reliability
Related MCP server: Coyote MCP Server
๐ Quick Start
Installation
npm install -g @cmwen/mcp-dev-env-setupCLI Mode
Use the devenv command for standalone operation:
# Check installed tools
devenv check
# Get system information
devenv info
# List available tools
devenv list
# Install a tool
devenv install python
devenv install nodejs
# Install multiple tools
devenv install-all
# Get help
devenv --helpSee CLI.md for complete CLI documentation.
MCP Mode
Configure in your MCP client (e.g., Claude Desktop):
{
"mcpServers": {
"dev-env-setup": {
"command": "npx",
"args": ["-y", "mcp-dev-env-setup"]
}
}
}Or run directly in MCP STDIO mode:
devenv --mcp
# or
devenv --stdio๐ Supported Tools
Languages
Python - Python 3 with pip
Java - OpenJDK 17
Go - Go programming language
Rust - Rust with cargo
Runtimes & Tools
Node.js - JavaScript runtime (via nvm or package manager)
Git - Version control
Docker - Container platform
SDKs & Frameworks
Flutter - Mobile app development SDK
Android Studio - Android development tools
๐ฅ๏ธ Supported Systems
Operating Systems
macOS (Intel and Apple Silicon)
Linux distributions:
Debian/Ubuntu (apt)
Fedora (dnf)
RHEL/CentOS (yum)
Arch Linux (pacman)
openSUSE (zypper)
Package Managers
Homebrew (macOS)
apt (Debian/Ubuntu)
dnf (Fedora)
yum (RHEL/CentOS)
pacman (Arch)
zypper (openSUSE)
๐ง Available MCP Tools
1. check_environment
Check which development tools are currently installed on your system.
// Returns status of all tools with versions2. install_python
Install Python 3 and pip using the system package manager.
3. install_nodejs
Install Node.js with optional version specification.
{
"version": "lts" // or "18", "20", etc.
}4. install_flutter
Install Flutter SDK for mobile app development.
5. install_android
Install Android Studio and development tools (including Java).
6. setup_all
Install all development environments at once with optional skip list.
{
"skip": ["python", "flutter"] // Optional: tools to skip
}๐ Documentation
CLI Usage Guide - Complete CLI command reference and examples
API Documentation - Complete API reference for all modules
AI Agents Guide - Guide for AI agents to use and extend this project
Development Guide - Setup, development workflow, and contribution guidelines
Quick Start Guide - Get started in minutes
Usage Examples - Common usage patterns
Changelog - Version history and migration guides
๐๏ธ Architecture
The project follows a modular architecture:
src/
โโโ core/ # Core business logic
โ โโโ package-manager.ts # OS and package manager detection
โ โโโ tool-config.ts # Tool definitions and configurations
โโโ installers/ # Installation modules
โ โโโ unified-installer.ts # Unified installation logic
โโโ validators/ # Validation modules
โ โโโ environment-validator.ts # Environment checking
โโโ utils/ # Utility functions
โ โโโ shell.ts # Shell command execution
โ โโโ check.ts # Environment checking utilities
โโโ __tests__/ # Unit testsKey Modules
Package Manager Detection: Automatically detects your OS and package manager
Tool Configuration: Defines installation methods for each tool across all platforms
Unified Installer: Provides a single interface for installing any tool
Environment Validator: Checks system status and provides recommendations
๐งช Testing
# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Run tests with coverage
npm run test:coverage
# Type checking
npm run lint๐ ๏ธ Development
Prerequisites
Node.js >= 18.0.0
npm or yarn
Setup
# Clone the repository
git clone https://github.com/cmwen/mcp-dev-env-setup.git
cd mcp-dev-env-setup
# Install dependencies
npm install
# Build the project
npm run build
# Run in development mode
npm run devAdding New Tools
Add tool configuration to
src/core/tool-config.ts:
export const TOOL_CONFIGS: Record<string, ToolConfig> = {
mytool: {
name: 'mytool',
displayName: 'My Tool',
category: ToolCategory.LANGUAGE,
description: 'Description of my tool',
commandToCheck: 'mytool',
versionFlag: '--version',
installMethods: {
homebrew: {
packageManager: PackageManager.HOMEBREW,
packageName: 'mytool',
},
apt: {
packageManager: PackageManager.APT,
packageName: 'mytool',
},
// Add more package managers...
},
},
};Add tests in
src/__tests__/Update documentation
๐ค Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
Development Guidelines
Follow TypeScript best practices
Write tests for new features
Update documentation
Keep functions focused and single-purpose
Use meaningful variable names
๐ License
MIT License - see LICENSE file for details.
๐ Links
๐ก Examples
Check System Status
import { getSystemStatus } from './validators/environment-validator';
const status = await getSystemStatus();
console.log(`OS: ${status.os}`);
console.log(`Package Manager: ${status.packageManager?.name}`);
console.log(`Installed tools: ${status.tools.filter(t => t.installed).length}`);Install Multiple Tools
import { installMultipleTools } from './installers/unified-installer';
const results = await installMultipleTools(['python', 'nodejs', 'git']);
for (const [tool, result] of Object.entries(results)) {
console.log(`${tool}: ${result.success ? 'โ' : 'โ'}`);
}Validate Environment
import { isSystemReady } from './validators/environment-validator';
const { ready, missing } = await isSystemReady(['python', 'nodejs']);
if (!ready) {
console.log('Please install:', missing.join(', '));
}๐ Acknowledgments
Built with the Model Context Protocol SDK
TypeScript and Node.js ecosystem
๐ Support
Open an issue for bugs or feature requests
Check documentation for API reference
See AGENTS.md for AI agent integration guide
Available Tools
10 toolscheck_environmentA
Check which development tools are currently installed on the system (Python, Node.js, Flutter, Android, Git, Docker, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'Check' implies a read-only operation, which is a useful behavioral hint, but it does not explicitly state that no changes are made or that it is safe to run. It also does not describe output format or any side effects, leaving some ambiguity.
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 a single, concise sentence that is front-loaded with the core action ('Check which development tools...') and includes helpful examples. Every word earns its place, with no redundant information or filler.
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?
This is a simple read-only tool with no parameters and no output schema. The description fully explains what it checks and provides a clear list of example tools. In the context of sibling install tools, the purpose is self-evident, and no further detail is necessary for an agent to select and invoke it 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 schema has zero parameters, so schema coverage is trivially 100%. The description adds no parameter details, but none are needed. The tool requires no user input, and the description appropriately focuses on the tool's purpose rather than parameters.
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 checks for installed development tools, listing specific examples (Python, Node.js, etc.). This distinguishes it from sibling tools like install_* tools, which perform installations, and get_system_info, which likely focuses on broader system information.
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 provides no explicit guidance on when to use this tool versus alternatives. It does not mention that it should be used before installing tools to check existing installations, nor does it contrast with get_system_info or install_* tools. Usage is only implied, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_system_infoA
Get detailed system information including OS, architecture, and package manager
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. The verb 'Get' implies a read-only operation, but the description does not explicitly state that there are no side effects or whether any system access requirements exist. It does specify the type of information returned, which is useful, but lacks explicit safety or behavioral notes.
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 a single, concise sentence that front-loads the core action ('Get detailed system information') and includes relevant specifics. Every word earns its place 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?
For a simple tool with no parameters and no output schema, the description adequately covers the purpose and the key information fields (OS, architecture, package manager). It does not detail the return format or list every possible field, but the word 'including' signals more, and the description is sufficiently complete for expected use.
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 tool has zero parameters, and the schema is empty. The baseline for 0-parameter tools is 4, and the description adds no parameter information (there is nothing to add). It does not need to compensate for any schema gaps.
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 uses the specific verb 'Get' and clearly identifies the resource: 'detailed system information including OS, architecture, and package manager'. This clearly distinguishes it from the sibling tools, which are all installation/setup operations (install_package_manager, install_tool, etc.).
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 establishes a clear context of use: whenever system information is needed. It does not explicitly mention alternatives, but the sibling tool list makes the differentiation obvious (all are installers), so no exclusions are necessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_androidB
Install Android Studio and development tools
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the burden of disclosing side effects such as system modifications, downloads, permissions needed, or reversibility. The single sentence only says 'install' without any details on behavior, scope, or consequences. This is a significant gap for a mutation tool.
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 extremely concise and front-loaded with the key verb and object. It is a single sentence without fluff, earning a high score. However, it is so brief that it borders on under-specification, so it does not reach the top score.
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 no annotations, no output schema, and no usage guidance, the description leaves many gaps: what 'development tools' includes, whether superuser rights are needed, whether it modifies system paths, and what the expected outcome is. For a setup tool, this is insufficient for an agent to invoke confidently.
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 schema has zero parameters, so there is nothing for the description to explain. Per the rubric, 0 params defaults to a baseline of 4. The description does not need to add parameter semantics since none exist.
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 action ('Install') and the target ('Android Studio and development tools'). This distinguishes it from siblings like install_python and install_nodejs, though 'development tools' is somewhat vague. It is not a tautology and provides concrete intent.
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?
No guidance is provided on when to use this tool versus alternatives like install_tool or install_multiple. There are no exclusions, prerequisites, or comparison with sibling tools. The description simply states what it does without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_flutterB
Install Flutter SDK for mobile app development
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states the action without explaining side effects such as downloading files, modifying system paths, requiring prerequisites, or how installation is verified. This is a significant gap for a tool that likely makes system changes.
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 a single, concise sentence that front-loads the primary action. It contains no fluff or redundant information, packing the core purpose into a minimal length.
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?
Given the lack of annotations and output schema, the description should explain what installation entails, including prerequisites, system impact, and verification steps. It does none of this, making it under-specified for a tool that likely has significant side effects.
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 tool has zero parameters, so the baseline score is 4. The description correctly does not add parameter details since the schema already covers all (none) parameters.
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 verb and resource ('Install Flutter SDK') and adds context with 'for mobile app development'. It is distinguishable from siblings like install_python and install_nodejs by the Flutter-specific name, though it does not explicitly differentiate from broader tools like install_multiple or setup_all.
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?
No guidance is provided on when to use this tool versus alternatives. There is no mention of scenarios where this tool is preferred over install_tool, install_multiple, or setup_all. Usage context is only implied by the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_multipleA
Install multiple development tools at once
| Name | Required | Description | Default |
|---|---|---|---|
| tools | Yes | List of tools to install |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only repeats the verb 'install' without revealing side effects (e.g., system modifications, permission needs), failure behavior, or reversibility. This is minimal beyond what the name already conveys.
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 a single, front-loaded sentence with no unnecessary words. It efficiently conveys the core action and scope, earning a top score for conciseness.
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?
Given the simple nature of the tool (one parameter, no output schema), the description covers the core function adequately. However, without annotations or an output schema, it doesn't address return values, failure handling, or operational details, so it's not fully complete. A 3 reflects the adequacy gap.
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 input schema covers 100% of parameters, with the 'tools' field described as 'List of tools to install' and an enum of valid values. The description adds 'multiple' and 'development tools' context, but no additional semantic detail like ordering, default behavior, or constraints beyond what the schema states. 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 states the action ('Install') and the resource ('multiple development tools'), with 'at once' indicating batch behavior. This distinguishes it from siblings like install_tool (singular) or install_python (specific), so there's no ambiguity about what it does.
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 a use case (when you need multiple tools installed) but doesn't explicitly state when to prefer this over single-install tools or mention alternatives. There's no exclusion criteria or guidance on when not to use it, so guidance is only contextual.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_nodejsB
Install Node.js via nvm or package manager
| Name | Required | Description | Default |
|---|---|---|---|
| version | No | Node.js version to install (e.g., "lts", "20", "18") | lts |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It only mentions 'via nvm or package manager' without disclosing system modifications, required permissions, idempotency, or impact on the environment. For a mutation tool, this is insufficient transparency.
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 a single, front-loaded sentence with no filler. Every word contributes to meaning, making it appropriately concise for a simple tool with one optional parameter.
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 tool with one optional param and no output schema, the description is minimally adequate. However, it lacks context about prerequisites (e.g., nvm installation) and does not explain how this tool fits with sibling tools like install_package_manager or install_multiple, limiting 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?
The schema fully documents the single 'version' parameter with default and examples (100% coverage), so the description need not add more. The tool description adds no parameter-specific meaning beyond what the schema already provides, which matches the baseline.
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 verb 'Install' and the resource 'Node.js', and specifies the method 'via nvm or package manager'. This distinguishes it from sibling tools like install_python, install_flutter, and install_android which target different runtimes.
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 gives no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or relationships to sibling tools like install_multiple or install_package_manager, leaving the agent without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_package_managerB
Install package manager if needed (e.g., Homebrew on macOS)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose side effects. It does not mention that installation modifies the system, whether elevated permissions are required, or what happens if the package manager already exists. The mutating nature is only implied by the verb.
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 a single sentence that is direct and free of fluff. It front-loads the core action and uses an example to add context without unnecessary length.
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 system-modifying installation tool, the description is too thin. It fails to explain how 'if needed' is determined, what package managers are supported, or how this tool relates to siblings like check_environment or setup_all. No output schema or annotations compensate.
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?
There are zero parameters, and the schema coverage is 100%, so there is nothing to document. The baseline for 0 params is 4; the description adds no parameter information because none is needed.
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 uses a specific verb ('Install') and resource ('package manager'), with a concrete example ('Homebrew on macOS'). It distinguishes from sibling tools that install specific runtimes (install_python, install_nodejs) or perform checks (check_environment), though it doesn't enumerate all supported package managers.
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 phrase 'if needed' implies a precondition check but provides no explicit guidance on when to use this tool versus alternatives like install_tool or setup_all. No exclusions, prerequisites, or workflows are described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_pythonA
Install Python 3 and pip via package manager
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing side effects. It only mentions 'via package manager', which hints at the mechanism but does not state that the tool modifies the system, may require administrative privileges, or could overwrite existing installations. This lack of safety disclosure is a significant gap for an installation tool.
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 a single, front-loaded sentence that contains no filler. It is as concise as possible while still conveying the necessary information.
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 install tool, the description is minimally adequate but lacks context such as supported package managers, idempotency, or dependency on install_package_manager. Given the sibling tools, a note about when this should be used in a setup flow would improve 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?
The tool has zero parameters, so the baseline is 4. The description appropriately adds no parameter-level details since none exist, and the schema already covers this with an empty properties object.
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's purpose with a specific verb ('Install') and resource ('Python 3 and pip'). It distinguishes itself from sibling tools like install_nodejs and install_flutter by explicitly targeting Python.
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?
No guidance is provided on when to use this tool versus alternatives, such as install_package_manager or install_tool. The description gives no context about prerequisites, scenarios, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
install_toolC
Install a specific development tool (python, nodejs, git, docker, java, go, rust, flutter)
| Name | Required | Description | Default |
|---|---|---|---|
| tool | Yes | Name of the tool to install | |
| version | No | Optional version specification (for tools that support it) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of explaining side effects, permissions, or failure modes. It only says 'Install' and gives no indication of system modifications, required privileges, idempotency, or version behavior.
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 a single, front-loaded sentence with no filler. It is appropriately brief, although this brevity sacrifices informative detail.
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?
Given no annotations, no output schema, and numerous specialized sibling tools, the description is too minimal. It lacks guidance on when to use this tool over alternatives and fails to describe the installation behavior, making it incomplete for reliable agent decision-making.
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 input schema already provides 100% coverage with a clear enum for 'tool' and a description for 'version'. The description only repeats the tool list and adds no additional meaning beyond what the schema already documents.
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 a specific verb ('Install') and resource ('specific development tool'), and it lists the supported tools. However, it does not differentiate from sibling tools like install_python or install_multiple, so it stops short of a perfect score.
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?
There is no guidance on when to use this generic installer versus the specialized sibling tools (install_python, install_nodejs, etc.). No alternatives, exclusions, or context for choosing this tool are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
setup_allB
Install all development environments (Package Manager, Python, Node.js, Flutter, Android)
| Name | Required | Description | Default |
|---|---|---|---|
| skip | No | List of tools to skip |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states the action ('install') but does not disclose side effects (e.g., system changes, permissions, duration) or the existence of the skip parameter that alters behavior. This is minimal transparency.
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 a single, front-loaded sentence with no wasted words. It efficiently communicates the tool's scope and components, making it highly concise and well-structured.
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?
The description covers the main purpose but omits the optional skip functionality and any context about prerequisites, default behavior, or side effects. For a bulk installation tool, this lacks critical context needed for safe and effective use.
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 schema fully describes the only parameter (skip) with 100% coverage, so the baseline is 3. The description adds no additional meaning about the parameter, leaving the schema as the sole source of parameter semantics.
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's purpose: install all development environments, listing the exact components (Package Manager, Python, Node.js, Flutter, Android). This specific verb+resource combination distinguishes it from sibling tools that install individual environments.
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 use for full setup but does not explicitly state when to choose this tool over individual installers or install_multiple. It also does not mention the skip parameter or any exclusions, so usage guidance is implied rather than explicit.
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.
10 tool updates
v2.0.0- First observed
check_environment - First observed
get_system_info - First observed
install_android - First observed
install_flutter - First observed
install_multiple - First observed
install_nodejs - First observed
install_package_manager - First observed
install_python - First observed
install_tool - First observed
setup_all
TDQS
There is significant overlap between install_tool, install_python, install_nodejs, install_flutter, install_android, install_multiple, and setup_all. Agents may struggle to choose the right tool when specific installers duplicate the generic one and aggregate tools overlap with each other.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., check_environment, install_tool, setup_all). The naming is predictable and easy to navigate.
10 tools is within a reasonable range for a dev environment setup server, but the presence of both generic and specific install tools creates redundancy. The count is slightly padded but not excessive.
The tool surface covers the core setup workflow: checking environment, system info, installing package manager, individual tools, multiple tools, and full setup. Minor gaps like update/uninstall tools are missing but not critical for the stated purpose.
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
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yoโฆ
Devopness MCP server for DevOps happiness! Empower AI Agents to deploy apps and infra, to any cloud.
Personal assistant MCP server with search, execute, packages, jobs, secrets, and integrations.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceAn MCP server that orchestrates AI coding assistants (Claude Code CLI and Gemini CLI) to perform complex programming tasks autonomously, allowing remote control of your local development environment from anywhere.24140MIT
- FlicenseBqualityDmaintenanceAn MCP server that provides easy setup and configuration for multiple AI development environments including Claude Desktop, VS Code, and Windsurf. Offers automated installation scripts and manual configuration options for seamless integration across different MCP-compatible clients.18-
- AlicenseNot gradedqualityDmaintenanceMCP server and CLI for iOS development โ build, test, automate, and diagnose from any AI agent or terminal.1MIT
- AlicenseAqualityCmaintenanceA task-based AI orchestrator that bridges AI models (Gemini, Claude, OpenAI) with local environments, operating as an interactive CLI and an MCP server for structured autonomous development.235MIT
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/cmwen/mcp-dev-env-setup'
If you have feedback or need assistance with the MCP directory API, please join our Discord server