aiwg
Version:
Cognitive architecture for AI-augmented software development with structured memory, ensemble validation, and closed-loop correction. FAIR-aligned artifacts, 84% cost reduction via human-in-the-loop, standards adopted by 100+ organizations.
139 lines (106 loc) • 4.65 kB
Markdown
# MCPsmith - MCP Server Generator
MCPsmith generates Model Context Protocol (MCP) servers from various sources, making it easy to expose any CLI tool, REST API, or custom functionality as MCP tools.
## Phase 1 Implementation Status
Phase 1 (Foundation) is complete with the following components:
- **Directory Structure**: `.aiwg/smiths/mcpsmith/` created with `servers/`, `templates/`, and `analyzers/` subdirectories
- **TypeScript Types**: Complete type definitions in `src/smiths/mcpsmith/types.ts`
- **CLI Analyzer**: Parses `--help` output to extract tool definitions (`src/smiths/mcpsmith/analyzers/cli-analyzer.ts`)
- **Server Template**: MCP server boilerplate with security controls (`.aiwg/smiths/mcpsmith/templates/server-template.mjs`)
- **Server Generator**: Generates complete MCP servers from analyzer results (`src/smiths/mcpsmith/generator.ts`)
- **Registry**: Empty registry initialized at `.aiwg/smiths/mcpsmith/registry.json`
- **Tests**: Unit tests for CLI analyzer (`test/unit/smiths/mcpsmith/cli-analyzer.test.ts`)
## Architecture
See architecture documentation:
- `@.aiwg/architecture/mcpsmith-architecture.md` - Complete architecture specification
- `@.aiwg/architecture/decisions/ADR-014-mcpsmith-mcp-server-generator.md` - Architecture decision record
- `@.aiwg/planning/smiths-implementation-roadmap.md` - Implementation roadmap
## Usage Example
```typescript
import { analyzeCLI } from './analyzers/cli-analyzer.js';
import { generateServer } from './generator.js';
// Step 1: Analyze CLI tool
const result = await analyzeCLI({
command: 'git',
includeSubcommands: true,
timeout: 5000
});
// Step 2: Generate MCP server
const server = await generateServer({
serverId: 'git',
serverName: 'Git CLI MCP Server',
description: 'Exposes git commands as MCP tools',
analyzerResult: result,
config: {
tools: {
allowlist: ['status', 'log', 'diff'],
denylist: ['push', 'force']
}
},
outputDir: '.aiwg/smiths/mcpsmith/servers'
});
console.log(`Server generated at: ${server.path}`);
```
## Running the Example
```bash
# Run the example script
npx tsx src/smiths/mcpsmith/example.ts
```
This will:
1. Analyze the `git` command
2. Generate a complete MCP server in `.aiwg/smiths/mcpsmith/servers/git/`
3. Update the registry
4. Display usage instructions
## Directory Structure
```
.aiwg/smiths/mcpsmith/
├── registry.json # Server registry
├── servers/ # Generated servers
│ └── {server-id}/
│ ├── server.mjs # MCP server entry point
│ ├── manifest.json # Server metadata
│ ├── config.json # Runtime configuration
│ ├── .mcpsmith # Generation marker
│ └── tools/ # Tool definitions
│ └── {tool}.json
├── templates/ # Generation templates
│ └── server-template.mjs # Base server template
└── analyzers/ # Analyzer configurations (future)
```
## Generated Server Structure
Each generated server includes:
- **server.mjs**: Executable MCP server with stdio transport
- **config.json**: Runtime configuration including security settings
- **manifest.json**: Server metadata and capabilities
- **tools/*.json**: Individual tool definitions with schemas
- **.mcpsmith**: Marker file indicating MCPsmith-generated server
## Security Features
All generated servers include:
- **Sandboxed Execution**: Commands run with restricted permissions
- **Command Allowlisting**: Only explicitly allowed commands execute
- **Path Validation**: Working directory must be in allowed paths
- **Input Sanitization**: Protection against path traversal and command injection
- **Timeout Limits**: All operations have configurable timeouts
- **Dangerous Command Blocking**: High-risk operations blocked by default
## Testing
Run the test suite:
```bash
# Run all MCPsmith tests
npm test -- test/unit/smiths/mcpsmith/
# Run specific test file
npm test -- test/unit/smiths/mcpsmith/cli-analyzer.test.ts
```
## Type Checking
```bash
# Type check all MCPsmith code
npx tsc --noEmit src/smiths/mcpsmith/*.ts
```
## Next Steps (Phase 2)
- API Analyzer for OpenAPI/Swagger specs
- Catalog Analyzer for YAML/JSON tool catalogs
- Natural Language Analyzer for generating from descriptions
- Interactive tool selection UI
- `aiwg smith` CLI commands
## References
- MCP Specification: https://modelcontextprotocol.io/specification/2025-11-25
- Existing AIWG MCP Server: `@src/mcp/server.mjs`
- Templates: `@agentic/code/frameworks/sdlc-complete/templates/`