abp-io-mcp-server
Version:
A comprehensive Model Context Protocol (MCP) server for ABP.IO framework with 48+ tools for application development, UI generation, and management operations.
707 lines (568 loc) • 18.3 kB
Markdown
# ABP.IO MCP Server
A comprehensive Model Context Protocol (MCP) server for ABP.IO that enables AI models to interact with your ABP applications. Provides **48+ tools** for managing modules, entities, users, tenants, UI development, and more.
## What is ABP.IO?
ABP.IO is a comprehensive **open-source web application development framework** for ASP.NET Core that provides:
- **Modern Architecture**: Based on Domain-Driven Design (DDD) and Clean Architecture principles
- **Modular Design**: Pre-built modules for common features (Identity, SaaS, CMS, etc.)
- **Multi-tenancy Support**: Built-in SaaS capabilities
- **Multiple UI Options**: Supports MVC, Angular, Blazor, React Native
- **Development Tools**: ABP Studio, ABP Suite for rapid development
- **Microservice Compatible**: Supports both monolithic and microservice architectures
## Features
This comprehensive MCP server provides **48+ tools** covering all aspects of ABP.IO development, from backend services to complete UI development:
### 🏗️ Application Management
- Create, read, update, delete ABP applications
- Support for different templates (app, microservice, module, console)
- Multiple UI frameworks (MVC, Angular, Blazor, etc.)
- Database provider options (Entity Framework, MongoDB, Dapper)
### 📦 Module Management
- Install and uninstall ABP modules
- Browse popular ABP modules
- Manage module dependencies
- View module information and documentation
### 🗃️ Entity Management
- Create and manage domain entities
- Define entity properties and relationships
- Generate CRUD operations automatically
- Support for DDD patterns (aggregates, value objects)
### 👥 User Management
- Complete user lifecycle management
- Role-based access control
- User filtering and search
- Active/inactive user management
### 🏢 Tenant Management (Multi-tenancy)
- Create and manage tenants for SaaS applications
- Tenant-specific configurations
- Subscription management
- Database separation strategies
### 🔐 Permission Management
- Fine-grained permission system
- Role and user-based permissions
- Permission groups and hierarchies
- Grant/revoke permissions dynamically
### 📋 Audit Logging
- Comprehensive audit trail
- Performance monitoring
- Error tracking and analysis
- Custom audit log reports
### ⚙️ Background Jobs
- Job queue management
- Common ABP background job types
- Job scheduling and monitoring
- Failed job handling
### 🎨 UI Development
- Generate pages (list, detail, create, edit, modal) for multiple frameworks
- Theme management and customization
- Reusable component generation (widgets, modals, partials, directives, pipes)
- Layout management and customization
- Navigation menu management
- Dashboard widget creation and management
- Complex form generation with validation
- Multi-language localization support
## Prerequisites
- Node.js 18 or higher
- Access to an ABP.IO application with API endpoints
- API key or authentication token for your ABP application
## Installation
### Method 1: Using NPX (Recommended)
No installation required! Just use npx to run the latest version:
```bash
# Full mode (requires API key)
npx abp-io-mcp-server --api-key=YOUR_API_KEY --base-url=https://your-abp-app.com --stdio
# Info-only mode (no API key required)
npx abp-io-mcp-server --info-only-mode --stdio
```
### Method 2: Global Installation
```bash
# Install globally
npm install -g abp-io-mcp-server
# Run in full mode
abp-io-mcp-server --api-key=YOUR_API_KEY --base-url=https://your-abp-app.com --stdio
# Run in info-only mode
abp-io-mcp-server --info-only-mode --stdio
```
### Method 3: Local Development
```bash
# Clone the repository
git clone https://github.com/cyrilnoah1/abp-io-mcp.git
cd abp-io-mcp
# Install dependencies
npm install
# Build the project
npm run build
# Run the server
npm run dev -- --api-key=YOUR_API_KEY --base-url=https://your-abp-app.com --stdio
```
## Configuration
### Required Parameters
- `--stdio`: Use stdio transport for MCP clients
### Authentication Parameters
- `--api-key`: Your ABP application API key (required for full functionality)
- `--base-url`: Base URL of your ABP application (default: http://localhost:44300)
- `--info-only-mode`: Enable only informational tools that don't require API authentication
### Operating Modes
The ABP MCP Server supports two operating modes:
#### 🔐 **Full Mode** (Default)
- Requires `--api-key` parameter
- Provides access to all 48+ tools
- Can perform all operations on your ABP application
- Recommended for development and production use
```bash
abp-io-mcp-server --stdio --api-key=YOUR_API_KEY --base-url=https://your-abp-app.com
```
#### 📚 **Info-Only Mode**
- No API key required
- Provides 13 informational and UI generation tools
- Includes ABP documentation, best practices, troubleshooting guides
- Generate UI component templates for Angular, Blazor, and MVC
- Perfect for exploring ABP concepts and creating code templates without a running application
```bash
abp-io-mcp-server --stdio --info-only-mode
```
**Info-Only Mode Tools:**
- `abp_get_info` - ABP Framework overview and capabilities
- `abp_get_documentation` - Links to official documentation
- `abp_get_help` - Usage guide and examples
- `abp_list_available_modules` - All available ABP modules
- `abp_list_ui_frameworks` - Supported UI frameworks
- `abp_list_database_providers` - Database options
- `abp_get_cli_commands` - CLI reference
- `abp_get_best_practices` - Development guidelines
- `abp_get_troubleshooting_guide` - Common issues and solutions
- `abp_generate_component` - Generate UI component templates (Angular, Blazor, MVC)
- `abp_get_themes` - Available themes and customization information
- `abp_generate_form` - Generate form templates with validation
- `abp_get_ui_examples` - Code examples and snippets for different frameworks
### Environment Variables
You can also set configuration using environment variables:
```bash
export ABP_API_KEY=your_api_key_here
export ABP_BASE_URL=https://your-abp-app.com
```
## Usage
### With Claude Desktop
Add the following to your Claude Desktop configuration file:
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
**Linux**: `~/.config/Claude/claude_desktop_config.json`
#### Full Mode (All Tools)
```json
{
"mcpServers": {
"abp-io": {
"command": "npx",
"args": ["-y", "abp-io-mcp-server", "--api-key=YOUR_API_KEY", "--base-url=https://your-abp-app.com", "--stdio"]
}
}
}
```
#### Info-Only Mode (No API Key Required)
```json
{
"mcpServers": {
"abp-io-info": {
"command": "npx",
"args": ["-y", "abp-io-mcp-server", "--info-only-mode", "--stdio"]
}
}
}
```
#### Using Local Installation
```json
{
"mcpServers": {
"abp-io": {
"command": "node",
"args": ["/path/to/abp-io-mcp/dist/index.js", "--api-key=YOUR_API_KEY", "--base-url=https://your-abp-app.com", "--stdio"]
}
}
}
```
### With Other MCP Clients
This server follows the standard MCP protocol and can be used with any MCP-compatible client.
## Available Tools
### Application Tools
- `abp_get_applications` - Get all ABP applications
- `abp_get_application` - Get application by ID
- `abp_create_application` - Create new ABP application
- `abp_update_application` - Update existing application
- `abp_delete_application` - Delete application
### Module Tools
- `abp_get_modules` - Get all ABP modules
- `abp_get_module` - Get module by ID
- `abp_install_module` - Install ABP module
- `abp_uninstall_module` - Uninstall module
- `abp_get_popular_modules` - Get popular ABP modules
### Entity Tools
- `abp_get_entities` - Get all entities
- `abp_get_entity` - Get entity by ID
- `abp_create_entity` - Create new entity
- `abp_generate_crud` - Generate CRUD operations
### User Tools
- `abp_get_users` - Get all users
- `abp_get_user` - Get user by ID
- `abp_create_user` - Create new user
- `abp_update_user` - Update user
- `abp_delete_user` - Delete user
### Tenant Tools
- `abp_get_tenants` - Get all tenants
- `abp_get_tenant` - Get tenant by ID
- `abp_create_tenant` - Create new tenant
- `abp_update_tenant` - Update tenant
- `abp_delete_tenant` - Delete tenant
### Permission Tools
- `abp_get_permissions` - Get permissions
- `abp_get_permissions_by_group` - Get permissions by group
- `abp_grant_permission` - Grant permission
- `abp_revoke_permission` - Revoke permission
### Audit Tools
- `abp_get_audit_logs` - Get audit logs
- `abp_get_audit_log` - Get audit log by ID
- `abp_get_audit_summary` - Get audit statistics
### Background Job Tools
- `abp_get_background_jobs` - Get background jobs
- `abp_get_background_job` - Get job by ID
- `abp_enqueue_background_job` - Enqueue new job
- `abp_delete_background_job` - Delete job
- `abp_get_common_job_types` - Get common job types
### UI Development Tools
#### Page Generation
- `abp_generate_page` - Generate pages (list, detail, create, edit, modal)
#### Theme Management
- `abp_get_themes` - Get all available themes
- `abp_get_theme` - Get specific theme details
- `abp_apply_theme` - Apply and customize themes
#### Component Generation
- `abp_generate_component` - Generate reusable UI components
#### Layout Management
- `abp_get_layouts` - Get all available layouts
- `abp_get_layout` - Get specific layout details
- `abp_update_layout` - Update layout configuration
#### Menu Management
- `abp_get_menus` - Get all application menus
- `abp_get_menu` - Get specific menu details
- `abp_add_menu_item` - Add menu items with icons and permissions
- `abp_remove_menu_item` - Remove menu items
#### Widget Management
- `abp_get_widgets` - Get all dashboard widgets
- `abp_get_widget` - Get specific widget details
- `abp_create_widget` - Create new dashboard widgets
- `abp_update_widget` - Update widget configuration
- `abp_delete_widget` - Delete widgets
#### Form Generation
- `abp_generate_form` - Generate complex forms with validation
#### Localization
- `abp_get_localization_resources` - Get all localization resources
- `abp_get_localization_resource` - Get specific resource by culture
- `abp_update_localization_text` - Update/add localized text
- `abp_get_supported_cultures` - Get all supported languages
## Examples
### Creating a New ABP Application
```typescript
// Create a new microservice application with Angular UI
{
"name": "my-microservice",
"displayName": "My Microservice App",
"template": "microservice",
"framework": "angular",
"database": "ef"
}
```
### Installing Popular Modules
```typescript
// Install Identity Pro module
{
"packageName": "Volo.Abp.Identity.Pro"
}
// Install SaaS module
{
"packageName": "Volo.Saas"
}
```
### Creating a Domain Entity
```typescript
// Create a Product entity
{
"name": "Product",
"namespace": "MyApp.Products",
"isAuditedEntity": true,
"isMultiTenant": true,
"properties": [
{
"name": "Name",
"type": "string",
"isRequired": true,
"maxLength": 100
},
{
"name": "Price",
"type": "decimal",
"isRequired": true
},
{
"name": "Description",
"type": "string",
"isRequired": false,
"maxLength": 500
}
]
}
```
### Managing Users
```typescript
// Create a new user
{
"userName": "john.doe",
"name": "John",
"surname": "Doe",
"email": "john.doe@example.com",
"password": "SecurePassword123!",
"roleNames": ["User", "Manager"]
}
```
### Multi-tenant Operations
```typescript
// Create a new tenant
{
"name": "acme-corp",
"isActive": true,
"editionId": "premium-edition-id"
}
```
### UI Development Examples
#### Generating Pages
```typescript
// Generate a product list page with Angular
{
"name": "ProductList",
"type": "list",
"entityId": "product-entity-id",
"framework": "angular",
"includeSearch": true,
"includePaging": true,
"includeExport": true,
"permissions": ["Products.Read"]
}
// Generate a modal for creating products
{
"name": "CreateProductModal",
"type": "modal",
"entityId": "product-entity-id",
"framework": "blazor",
"permissions": ["Products.Create"]
}
```
#### Theme Customization
```typescript
// Apply a custom theme with brand colors
{
"name": "LeptonX",
"primaryColor": "#1e88e5",
"secondaryColor": "#ffc107",
"customCss": ".main-header { background: linear-gradient(45deg, #1e88e5, #1976d2); }"
}
```
#### Creating Widgets
```typescript
// Create a sales chart widget
{
"name": "sales-chart",
"displayName": "Monthly Sales Chart",
"description": "Displays monthly sales data in a line chart",
"type": "chart",
"configuration": {
"chartType": "line",
"dataSource": "/api/sales/monthly",
"xAxis": "month",
"yAxis": "amount"
},
"permissions": ["Dashboard.SalesData"],
"refreshInterval": 300
}
```
#### Adding Menu Items
```typescript
// Add a products menu item with sub-items
{
"menuName": "main",
"name": "Products",
"displayName": "Products",
"icon": "fa-shopping-cart",
"order": 10,
"requiredPermissionName": "Products.Read"
}
// Add sub-menu item
{
"menuName": "main",
"name": "ProductList",
"displayName": "Product List",
"url": "/products",
"parentName": "Products",
"order": 1
}
```
#### Generating Forms
```typescript
// Generate a complex product form
{
"name": "ProductForm",
"entityId": "product-entity-id",
"fields": [
{
"name": "name",
"type": "text",
"label": "Product Name",
"required": true,
"validation": {
"minLength": 3,
"maxLength": 100
}
},
{
"name": "category",
"type": "select",
"label": "Category",
"required": true,
"options": [
{ "value": "electronics", "label": "Electronics" },
{ "value": "clothing", "label": "Clothing" },
{ "value": "books", "label": "Books" }
]
},
{
"name": "price",
"type": "number",
"label": "Price",
"required": true,
"validation": {
"min": 0.01,
"max": 999999.99
}
},
{
"name": "description",
"type": "textarea",
"label": "Description",
"required": false,
"validation": {
"maxLength": 500
}
}
],
"layout": "vertical",
"submitAction": "createProduct",
"cancelAction": "cancel"
}
```
#### Localization Management
```typescript
// Update localization text for multiple languages
{
"resourceName": "MyApp",
"culture": "en",
"key": "WelcomeMessage",
"value": "Welcome to our application!"
}
{
"resourceName": "MyApp",
"culture": "es",
"key": "WelcomeMessage",
"value": "¡Bienvenido a nuestra aplicación!"
}
```
## Getting Your ABP API Key
### Method 1: Through ABP Application Settings
1. Log in to your ABP application as admin
2. Go to Administration → Settings
3. Look for API or Integration settings
4. Generate a new API key
### Method 2: Using IdentityServer4/OpenIddict
If your ABP application uses IdentityServer4 or OpenIddict:
1. Create a new client application
2. Set appropriate scopes and permissions
3. Use client credentials flow to get access token
### Method 3: Custom Implementation
You may need to implement custom API authentication based on your ABP application's configuration.
## Development
```bash
# Install dependencies
npm install
# Build in watch mode
npm run watch
# Run development server
npm run dev -- --api-key=YOUR_KEY --base-url=http://localhost:44300 --stdio
# Build for production
npm run build
# Run tests
npm test
# Lint code
npm run lint
```
## Docker Support
### Building Docker Image
```bash
docker build -t abp-io-mcp-server .
```
### Running with Docker
```bash
docker run -it abp-io-mcp-server --api-key=YOUR_API_KEY --base-url=https://your-abp-app.com --stdio
```
## Troubleshooting
### Common Issues
1. **Connection Failed**
- Verify your ABP application is running
- Check the base URL is correct
- Ensure API key is valid
2. **Permission Denied**
- Verify API key has sufficient permissions
- Check user roles and permissions in ABP application
3. **Module Not Found**
- Ensure the ABP module is available in your application
- Check module dependencies
4. **Entity Creation Failed**
- Verify entity name is unique
- Check property definitions are valid
- Ensure namespace exists
### Debug Mode
Run with debug logging:
```bash
DEBUG=abp-io-mcp-server* npm run dev -- --api-key=YOUR_KEY --stdio
```
## Contributing
1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add some amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
## License
This project is licensed under the MIT License - see the LICENSE file for details.
## Related Projects
- [ABP.IO Framework](https://abp.io/) - The official ABP.IO framework
- [ABP.IO Documentation](https://docs.abp.io/) - Comprehensive documentation
- [Lattice HQ MCP](https://github.com/cyrilnoah1/lattice-hq-mcp) - Reference MCP server implementation
## Support
If you encounter any issues:
1. Check the [GitHub Issues](https://github.com/cyrilnoah1/abp-io-mcp/issues)
2. Create a new issue with details about your problem
3. Include your Node.js version, operating system, and any error messages
4. Provide steps to reproduce the issue
## Changelog
### v1.1.0
- **NEW**: Comprehensive UI Development Tools (16 new tools)
- Page generation for multiple frameworks (MVC, Angular, Blazor, Blazor Server)
- Theme management and customization
- Reusable component generation (widgets, modals, partials, directives, pipes)
- Layout management and customization
- Navigation menu management with permissions
- Dashboard widget creation and management
- Complex form generation with validation
- Multi-language localization support
- Enhanced API client with UI development methods
- Updated documentation with UI development examples
- Total tools expanded to 48+
### v1.0.0
- Initial release
- Complete ABP.IO API integration
- Support for all major ABP features (32+ tools)
- Docker support
- Comprehensive documentation