Allows AI agents to install, update, and manage Docker on the local system for containerization workflows.
Enables automated management of Git version control, including installation, removal, and version tracking.
Provides tools for the non-interactive management of MySQL database software, supporting automated installation and status updates.
Facilitates the automated management of the Node.js runtime environment, allowing for programmatic installation and version control.
Enables management of PostgreSQL database installations, including checking for updates and performing system cleanup.
Allows for automated installation and version management of the Python programming language, including auto-update configuration.
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., "@Software Management MCP Serverlist my installed software and check for updates"
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.
MCP - Software Management π
A local Model Context Protocol (MCP) server that empowers AI coding agents to manage software on a computer in a safe, automated, and non-interactive way.
This project focuses on system automation: it enables AI agents to execute common software management workflows through explicit MCP tools, from installing applications to checking updates and recommending software for specific tasks.
π Overview
Modern AI coding agents excel at understanding requirements and automating tasks, but they often lack standardized, non-interactive access to system software management workflows.
This project bridges that gap by exposing software management capabilities as explicit MCP tools, allowing AI agents to manage system software safely and predictably without relying on terminal prompts or interactive installers.
ποΈ Architecture
The project follows a clean layered architecture inspired by best practices from modern MCP servers:
main.py (MCP Tool Endpoints)
β Async/Sync Bridge (asyncio.to_thread)
services/ (Business Logic)
β
utils/ (Low-level Utilities)
β
models/ (Data Validation)Directory Structure
software/
βββ main.py # MCP tool endpoints
βββ settings.py # Configuration management
βββ pyproject.toml # Project metadata
βββ requirements.txt # Python dependencies
βββ README.md # This file
βββ models/ # Data validation & response models
β βββ __init__.py
β βββ result.py # ToolResult, ErrorInfo
β βββ cmd_result.py # CmdResult (command execution)
β βββ software_models.py # Input validators (Pydantic)
βββ services/ # Business logic layer
β βββ __init__.py
β βββ software_service.py # SoftwareService class
βββ utils/ # Utility functions
β βββ __init__.py
β βββ errors.py # Error code constants
β βββ paths.py # Path utilities
β βββ validate.py # Input validation helpers
βββ tests/ # Test suite (future)Architecture Principles
Separation of Concerns: Each layer has a single responsibility
Error Handling: Structured error codes for programmatic handling
Non-Interactive: All operations run asynchronously, suitable for AI agents
Type Safety: Pydantic models for input/output validation
Immutability: Frozen dataclasses for reliable state management
π οΈ Available Tools
install_software
Install a software application with automatic version management and tracking.
Parameters:
software_name(string, required): Name of the software to install
Returns:
ok(boolean): Success indicatordata(object): Contains software name, version, and status
Error Codes:
software_not_found: Software not in databasealready_installed: Software already installedinvalid_input: Input validation failedregistry_error: Error saving registry
uninstall_software
Remove software from the system with proper cleanup and registry updates.
Parameters:
software_name(string, required): Name of the software to uninstall
Returns:
ok(boolean): Success indicatordata(object): Contains software name and status
Error Codes:
software_not_found: Software not in databasenot_installed: Software is not currently installedinvalid_input: Input validation failedregistry_error: Error saving registry
list_installed_software
Display a comprehensive list of all installed software with versions.
Parameters:
None
Returns:
ok(boolean): Success indicatordata(object): Containsinstalled_softwarearray and count
Response Example:
{
"ok": true,
"data": {
"installed_software": [
{
"name": "python",
"version": "3.11.0",
"description": "Python programming language"
}
],
"count": 1
}
}check_updates
Identify software with available updates.
Parameters:
None
Returns:
ok(boolean): Success indicatordata(object): Containsavailable_updatesarray and count
update_software
Update a software application to the latest version.
Parameters:
software_name(string, required): Name of the software to update
Returns:
ok(boolean): Success indicatordata(object): Contains old version, new version, and status
Error Codes:
software_not_found: Software not in databasenot_installed: Software not currently installedup_to_date: Already at latest versioninvalid_input: Input validation failedregistry_error: Error saving registry
get_recommendations
Get software recommendations for a specific task or goal.
Parameters:
task(string, required): Task name (e.g., "web development")
Supported Tasks:
web developmentβ Python, Node.js, VS Code, Gitdata scienceβ Python, Node.js, Gitdatabaseβ MySQL, PostgreSQL, Gitcontainerizationβ Docker, Gitjava developmentβ Java, VS Code, Gitfull stackβ Python, Node.js, MySQL, Docker, VS Code, Git
Returns:
ok(boolean): Success indicatordata(object): Contains task name, recommendations array, and count
Error Codes:
software_not_found: Task not foundinvalid_input: Input validation failed
set_auto_update
Configure automatic update settings for software.
Parameters:
software_name(string, required): Name of the softwareenabled(boolean, required): Enable (true) or disable (false) auto-update
Returns:
ok(boolean): Success indicatordata(object): Contains software name, auto_update status, and status message
Error Codes:
software_not_found: Software not in databasenot_installed: Software not currently installedinvalid_input: Input validation failedregistry_error: Error saving registry
get_software_info
Retrieve detailed information about a software application.
Parameters:
software_name(string, required): Name of the software
Returns:
ok(boolean): Success indicatordata(object): Contains full software details
Response Example:
{
"ok": true,
"data": {
"name": "python",
"description": "Python programming language",
"latest_version": "3.11.0",
"current_version": "3.11.0",
"installed": true,
"auto_update": false
}
}Error Codes:
software_not_found: Software not in databaseinvalid_input: Input validation failed
π Supported Software
Software | Latest Version | Category |
python | 3.11.0 | Language |
git | 2.43.0 | VCS |
vscode | 1.87.2 | Editor |
nodejs | 21.6.0 | Runtime |
docker | 25.0.1 | Container |
java | 21.0.1 | Language |
mysql | 8.3.0 | Database |
postgresql | 16.1 | Database |
βοΈ Requirements
Python 3.10+
MCP-compatible client (Claude Desktop, etc.)
pydantic >= 2.0.0
python-dotenv >= 1.0.0
βΆοΈ Running as a Local MCP Server
Installation
Clone the repository:
git clone <repository-url>
cd softwareInstall dependencies:
pip install -r requirements.txtConfigure Claude Desktop MCP:
Create or edit ~/AppData/Roaming/Claude/claude_desktop_config.json:
{
"mcpServers": {
"software-management": {
"command": "python",
"args": ["/absolute/path/to/software/main.py"]
}
}
}Restart Claude Desktop
Testing Locally
python -m pytest tests/π§Ύ Error Codes Reference
The MCP server returns structured error codes for programmatic error handling:
Code | Meaning | Common Cause | Recovery |
| Software not in database | Invalid software name | Check spelling, use |
| Software is installed | Attempting to install twice | Use |
| Software not installed | Attempting to uninstall/update non-installed software | Install software first |
| Already latest version | No update needed | No action required |
| Input validation failed | Missing/invalid parameters | Verify input format and constraints |
| Registry read/write error | Permissions or disk issues | Check file permissions and disk space |
| Configuration missing | Required env variables | Check settings.py and .env file |
π§° Troubleshooting
1) Installation fails with "Software not found"
Symptom:
{
"ok": false,
"error": {
"code": "software_not_found",
"message": "Software 'xyz' not found in database"
}
}Fix:
Check software name spelling (case-insensitive)
Use
list_installed_softwareto see available optionsVerify supported software in the table above
2) Update fails with "Already up to date"
Symptom:
{
"ok": false,
"error": {
"code": "up_to_date",
"message": "Software 'python' is already up to date (v3.11.0)"
}
}Fix:
This is expected behavior when software is current
No action needed
3) Recommendation returns empty for unknown task
Symptom:
{
"ok": false,
"error": {
"code": "software_not_found",
"hint": "Available tasks: web development, data science, ..."
}
}Fix:
Use supported task names from the list
Task names are case-insensitive
View all tasks using the recommendations documentation
4) Registry operations fail
Symptom:
{
"ok": false,
"error": {
"code": "registry_error",
"message": "Error saving registry"
}
}Fix:
Verify file permissions in project directory
Check available disk space
Ensure
software_registry.jsonis not corruptedDelete registry file to reset (will recreate on next operation)
π Software Registry
The system maintains a persistent software_registry.json file that tracks:
Installed software and versions
Installation dates
Auto-update preferences
Example Registry:
{
"installed_software": {
"python": {
"version": "3.11.0",
"installed_date": "2026-02-18T10:30:00.123456",
"auto_update": false
},
"git": {
"version": "2.43.0",
"installed_date": "2026-02-18T10:35:00.654321",
"auto_update": true
}
}
}π Example Workflow
Discover recommendations for a task:
Call: get_recommendations("web development") Result: Receive list of recommended softwareInstall recommended software:
Call: install_software("python") Call: install_software("nodejs")List installed software:
Call: list_installed_software() Result: View all installed programs and versionsCheck for updates:
Call: check_updates() Result: See available updatesUpdate individual software:
Call: update_software("python") Result: Update to latest versionEnable auto-updates:
Call: set_auto_update("python", true) Result: Enable automatic updates
π§ Future Improvements
The following features would further enhance the server:
Batch Operations: Install/update multiple software at once
Dependency Resolution: Automatic installation of software dependencies
Repository Integration: Support for custom software repositories
Scheduled Updates: Cron-like scheduling for automatic updates
Health Checks: Verify installation integrity and functionality
Rollback: Revert to previous software versions
Configuration Profiles: Save and restore system configurations
Multi-Language Support: Localized messages and documentation
Cloud Sync: Synchronize installations across machines
Notifications: Alert on successful/failed operations
π License
This project is provided as-is for software management and automation purposes.
Project: MCP - Software Management
Version: 1.0.0
Last Updated: February 2026
Architecture: Layered MCP Server
Status: Production Ready
mcp
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.