Software Management MCP Server
Enables AI agents to automate local software management workflows including installation, uninstallation, updates, and environment recommendations. It provides a standardized, non-interactive interface for managing system applications and tracking software versions safely.
README
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 software
- Install dependencies:
pip install -r requirements.txt
- Configure 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_found |
Software not in database | Invalid software name | Check spelling, use list_installed_software |
already_installed |
Software is installed | Attempting to install twice | Use update_software instead |
not_installed |
Software not installed | Attempting to uninstall/update non-installed software | Install software first |
up_to_date |
Already latest version | No update needed | No action required |
invalid_input |
Input validation failed | Missing/invalid parameters | Verify input format and constraints |
registry_error |
Registry read/write error | Permissions or disk issues | Check file permissions and disk space |
config_missing |
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 options - Verify 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 corrupted - Delete 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 software -
Install recommended software:
Call: install_software("python") Call: install_software("nodejs") -
List installed software:
Call: list_installed_software() Result: View all installed programs and versions -
Check for updates:
Call: check_updates() Result: See available updates -
Update individual software:
Call: update_software("python") Result: Update to latest version -
Enable 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
#� �m�c�p� � �
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。