🐺 Initial commit - Lupul Augmentat MCP Server

- MCP server cu stdio transport pentru performanță maximă
- Tool-uri pentru file operations, HTTP requests, system commands
- Suport NATS pentru comunicare inter-module
- Configurare nginx cu API key auth și SSL
- Arhitectură modulară și extensibilă

🤖 Generated with Claude Code
This commit is contained in:
Claude (Lupul Augmentat)
2025-10-09 06:24:58 +02:00
commit 475f89af74
59 changed files with 12827 additions and 0 deletions

View File

@@ -0,0 +1,165 @@
# File Operations Tools
The MCP server provides several built-in tools for file system operations with comprehensive security controls.
## FileReadTool
Reads the contents of a file with security restrictions.
### Input Schema
```typescript
{
path: string; // File path (relative or absolute)
encoding?: 'utf8' | 'binary'; // Default: 'utf8'
}
```
### Output Schema
```typescript
{
content: string; // File contents
size: number; // File size in bytes
path: string; // Absolute file path
}
```
### Security Features
- Prevents directory traversal attacks
- Only allows access to files within current working directory or system temp directory
- File size limit: 10MB
- Requires `file:read` permission
### Example Usage
```javascript
const result = await mcp.callTool('file_read', {
path: './config.json',
encoding: 'utf8'
});
console.log(result.content);
```
## FileWriteTool
Writes content to a file with security restrictions.
### Input Schema
```typescript
{
path: string; // File path (relative or absolute)
content: string; // Content to write
encoding?: 'utf8' | 'binary' | 'base64'; // Default: 'utf8'
mode?: 'overwrite' | 'append'; // Default: 'overwrite'
}
```
### Output Schema
```typescript
{
path: string; // Absolute file path
size: number; // File size after write
mode: string; // Write mode used
}
```
### Security Features
- Prevents directory traversal attacks
- Only allows writing within current working directory or system temp directory
- Blocks writing to system directories (/etc, /sys, /proc, /dev)
- Requires `file:write` permission
- Automatically creates parent directories if needed
### Example Usage
```javascript
// Write text file
await mcp.callTool('file_write', {
path: './output.txt',
content: 'Hello, World!'
});
// Write binary file
await mcp.callTool('file_write', {
path: './image.png',
content: 'iVBORw0KGgoAAAANS...', // base64 encoded
encoding: 'base64'
});
// Append to file
await mcp.callTool('file_write', {
path: './log.txt',
content: 'New log entry\n',
mode: 'append'
});
```
## FileListTool
Lists files and directories with filtering options.
### Input Schema
```typescript
{
path: string; // Directory path
recursive?: boolean; // Recurse into subdirectories
pattern?: string; // Glob pattern filter (e.g., '*.txt')
includeHidden?: boolean; // Include hidden files (starting with .)
}
```
### Output Schema
```typescript
{
path: string; // Directory path
entries: Array<{
path: string; // Full path
type: 'file' | 'directory' | 'symlink' | 'other';
name: string; // File/directory name
size: number; // Size in bytes
modified: string; // ISO date string
}>;
totalSize: number; // Total size of all files
}
```
### Security Features
- Prevents directory traversal attacks
- Only allows listing within current working directory or system temp directory
- Requires `file:read` permission
- Skips inaccessible items instead of failing
### Example Usage
```javascript
// List directory contents
const result = await mcp.callTool('file_list', {
path: './src'
});
// List recursively with pattern
const jsFiles = await mcp.callTool('file_list', {
path: './src',
recursive: true,
pattern: '*.js'
});
// Include hidden files
const allFiles = await mcp.callTool('file_list', {
path: './',
includeHidden: true
});
```
## Error Handling
All file operation tools follow consistent error handling:
- **File not found**: Returns clear error message with the path
- **Permission denied**: Returns error when lacking required permissions
- **Invalid paths**: Blocks directory traversal and system paths
- **Size limits**: Enforces reasonable limits to prevent abuse
## Best Practices
1. **Always use relative paths** when possible for better portability
2. **Check permissions** before attempting operations
3. **Handle errors gracefully** - file operations can fail for many reasons
4. **Use appropriate encodings** - utf8 for text, base64 for binary data
5. **Be mindful of file sizes** - large files can impact performance