abac-validation-mcp-server
# ABAC Validation MCP Server
An MCP (Model Context Protocol) server that provides AI-assisted ABAC (Attribute-Based Access Control) code validation and review tools. This server integrates with Claude CLI or GitHub Copilot CLI to perform long-running validation operations with progress notifications.
## Features
- **Business Logic Validation**: Validate code against business requirements using AI
- **AI-Assisted Code Review**: Comprehensive code review covering quality, security, and performance
- **Batch Processing**: Validate multiple files with progress updates
- **Progress Notifications**: Long-running operations report progress to the client
- **CLI Integration**: Calls Claude/Copilot CLI for AI analysis (ready for integration)
## Installation
```bash
npm install
npm run build
```
## Usage
### Running Standalone
```bash
npm run dev
```
### VS Code Configuration
Add to your VS Code `settings.json` (`.vscode/settings.json` or user settings):
```json
{
"mcp.servers": {
"abac-validation": {
"type": "stdio",
"command": "node",
"args": [
"/absolute/path/to/abac-validation-mcp-server/dist/index.js"
]
}
}
}
```
Or use npx for easier distribution:
```json
{
"mcp.servers": {
"abac-validation": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"abac-validation-mcp-server"
]
}
}
}
```
### Claude Desktop Configuration
Add to `claude_desktop_config.json`:
```json
{
"mcpServers": {
"abac-validation": {
"command": "node",
"args": [
"/absolute/path/to/abac-validation-mcp-server/dist/index.js"
]
}
}
}
```
## Available Tools
### 1. validate_business_logic
Validate code against business requirements using AI.
**Parameters:**
- `code` (string, required): The code to validate
- `requirements` (string, required): Business requirements to validate against
**Example:**
```javascript
{
"code": "function calculateDiscount(price, customerType) { ... }",
"requirements": "Premium customers get 20% discount, regular customers get 10%"
}
```
### 2. ai_code_review
Perform comprehensive AI-assisted code review.
**Parameters:**
- `code` (string, required): The code to review
- `context` (string, optional): Additional context about the code
- `review_type` (string, optional): Type of review - "comprehensive", "security", "performance", or "style"
**Example:**
```javascript
{
"code": "async function fetchUserData(userId) { ... }",
"context": "This is part of a user authentication system",
"review_type": "security"
}
```
### 3. batch_validate
Validate multiple files in batch with progress updates.
**Parameters:**
- `files` (array, required): Array of file objects with `path` and optional `requirements`
**Example:**
```javascript
{
"files": [
{ "path": "src/auth.ts", "requirements": "Must use OAuth 2.0" },
{ "path": "src/payment.ts", "requirements": "PCI DSS compliant" }
]
}
```
## Integration with Claude/Copilot CLI
### Current Status
The server skeleton is ready with placeholder implementations. To integrate with actual CLIs:
### Option 1: Claude CLI
Replace the TODO sections in `src/index.ts` with:
```typescript
// Install: npm install -g @anthropic-ai/claude-cli
const result = await executeWithProgress('claude', [
'analyze',
'--prompt', prompt
], (msg) => {
if (progressToken) {
// Send progress notification
}
});
```
### Option 2: GitHub Copilot CLI
```typescript
// Requires GitHub Copilot CLI access
const result = await executeWithProgress('gh', [
'copilot',
'explain',
code
], (msg) => {
if (progressToken) {
// Send progress notification
}
});
```
### Option 3: API Calls
For more control, use the Anthropic API directly:
```bash
npm install @anthropic-ai/sdk
```
```typescript
import Anthropic from '@anthropic-ai/sdk';
const client = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY
});
// Use streaming for progress
const stream = await client.messages.create({
model: 'claude-sonnet-4-5-20250929',
messages: [{ role: 'user', content: prompt }],
stream: true,
max_tokens: 4096
});
for await (const event of stream) {
// Send progress updates
}
```
## Development
### Build
```bash
npm run build
```
### Watch Mode
```bash
npm run watch
```
### Testing
Test the server with MCP Inspector:
```bash
npx @modelcontextprotocol/inspector node dist/index.js
```
## Next Steps
1. **Integrate CLI**: Choose your preferred AI CLI (Claude/Copilot) and implement in the TODO sections
2. **Add Progress Notifications**: Use MCP progress notification protocol for real-time updates
3. **File System Access**: Add file reading capabilities for batch validation
4. **Configuration**: Add config file for API keys, CLI paths, etc.
5. **Error Handling**: Improve error handling and retry logic
6. **Caching**: Add caching for repeated validations
7. **Custom Validators**: Add domain-specific validation rules
## Architecture
```
User (VS Code/Copilot/Claude)
↓
MCP Client
↓ (stdio)
Validation MCP Server
↓
Claude CLI / Copilot CLI / API
↓
AI Model (validation/review)
↓
Results with Progress
```
## License
MIT
TDQS
Scored across 4 tools
The tools are mostly distinct: validate_abac_changes covers full validation, analyze_cross_component_impact focuses specifically on cross-component work, get_current_changes retrieves diffs, and generate_validation_questions produces questions. The main overlap is between validate_abac_changes and analyze_cross_component_impact, since validation already includes cross-component impact analysis, which could cause an agent to pick the wrong one.
Tools generally follow verb_object pattern: validate_abac_changes, analyze_cross_component_impact, get_current_changes, generate_validation_questions. All use snake_case with consistent verb-first naming, though the objects vary in form (abac_changes vs cross_component_impact vs current_changes vs validation_questions) making them slightly less uniform.
Four tools is a well-scoped set for a validation workflow. Each tool represents a distinct stage: get diffs, generate questions, analyze cross-component impact, and validate. This is an appropriate size that feels lean but sufficient for the stated purpose of ABAC change validation.
The workflow covers retrieving changes, generating questions, analyzing cross-component impact, and validating against requirements. However, there's no dedicated tool for applying validation recommendations or generating a final report/summary, and the coupling between generate_validation_questions and validate_abac_changes (which accepts answers to 8 predefined questions) may leave a gap if questions change. The core loop is covered but reporting and remediation are absent.