README.md•3.08 kB
# MSI Metadata MCP Server
A Model Context Protocol (MCP) server for reading MSI files and managing Windows software installations.
## Features
- ✅ **MSI Metadata Reading** - Extract ProductCode, ProductName, ProductVersion, etc.
- ✅ **Silent Install/Uninstall Commands** - Generate msiexec commands
- ✅ **Registry-based Installed Apps** - Query installed software (fast, safe)
- ✅ **Advanced MSI Analysis** - Features, Components, Files, Shortcuts, Custom Actions
- ✅ **Summary Information** - MSI summary stream data
- ✅ **Command Builders** - Build install/uninstall commands with logging
## Installation
### Prerequisites
- Windows 10/11
- Python 3.8+
- PowerShell 5.1+
### Setup
```bash
# Clone the repository
git clone https://github.com/yourusername/MSI-MCP-Server.git
cd MSI-MCP-Server
# Create virtual environment
python -m venv .venv
.venv\Scripts\activate
# Install dependencies
pip install -r requirements.txt
```
## Usage
### Basic Usage
```python
from mcp_msi_server import local_read_msi_metadata, local_suggest_silent_commands
# Read MSI metadata
meta = local_read_msi_metadata("path/to/installer.msi")
print(meta)
# Get silent commands
cmds = local_suggest_silent_commands("path/to/installer.msi")
print(cmds)
```
### MCP Client Integration
#### Claude Desktop
Add to `%APPDATA%\Claude\claude_desktop_config.json`:
```json
{
"mcpServers": {
"msi-metadata": {
"command": "C:\\path\\to\\MSI-MCP-Server\\.venv\\Scripts\\python.exe",
"args": ["C:\\path\\to\\MSI-MCP-Server\\mcp_msi_server.py"]
}
}
}
```
#### Cursor
Use built-in MCP support with the same configuration.
## Testing
```bash
# Test basic functionality
python test_basic.py
# Test all features
python test_all_features.py
```
## Available MCP Tools
- `read_msi_metadata(msi_path)` - Read core MSI properties
- `suggest_silent_commands(msi_path)` - Generate install/uninstall commands
- `get_product_code/name/version(msi_path)` - Individual property getters
- `build_install_command(msi_path, log_path?, extra_args?)` - Build install command
- `build_uninstall_command(product_code, log_path?, extra_args?)` - Build uninstall command
- `list_tables(msi_path)` - List MSI table names
- `list_features(msi_path)` - List MSI features
- `list_components(msi_path)` - List MSI components
- `list_files(msi_path)` - List MSI files
- `list_shortcuts(msi_path)` - List MSI shortcuts
- `list_custom_actions(msi_path)` - List custom actions
- `read_summary_info(msi_path)` - Read summary information
- `registry_list_installed()` - List installed applications
- `registry_find_by_name(name)` - Find apps by name
- `registry_find_by_product_code(product_code)` - Find apps by ProductCode
## Contributing
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests
5. Submit a pull request
## License
MIT License - see LICENSE file for details.
## Support
- Issues: [GitHub Issues](https://github.com/yourusername/MSI-MCP-Server/issues)
- Discussions: [GitHub Discussions](https://github.com/yourusername/MSI-MCP-Server/discussions)