can-acar/jarvis
If you are the rightful owner of jarvis and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
Jarvis MCP Server is a high-performance server implementation that provides AI assistant capabilities with comprehensive system tools, built using the Model Context Protocol (MCP) for seamless AI model integration.
Jarvis MCP Server
A Model Context Protocol (MCP) server implementation that provides AI assistant capabilities with comprehensive system tools.
Overview
This MCP server enables seamless integration with AI models through the Model Context Protocol, offering a standardized way to interact with AI assistants and manage context effectively. Built with Go for high performance and reliability.
Features
- MCP Protocol Support: Full implementation of the Model Context Protocol using mark3labs/mcp-go
- Security-First Design: Configurable command blocking and directory access controls
- System Integration: Terminal command execution with safety controls
- File System Operations: Secure file reading, writing, and manipulation
- Text Editing Tools: Advanced text editing capabilities with line-based operations
- HTTP Fetch Tools: Built-in web content fetching capabilities
- Configuration Management: Runtime configuration updates via MCP tools
- Go Implementation: High-performance server written in Go with robust error handling
Installation
Prerequisites
- Go 1.24.4 or later
- Git
Setup
- Clone the repository:
git clone (https://github.com/can-acar/jarvis)
cd jarvis
- Install dependencies:
go mod download
- Build the project:
go build -o jarvis main.go
Usage
Starting the Server
./jarvis
The server will start and communicate via stdio using the MCP protocol.
Configuration
The server uses a config.yaml
file for configuration:
# Security settings
blockedCommands:
- rm
- shutdown
# Default shell for command execution
defaultShell: bash
# Allowed directories for file operations
allowedDirectories:
- /tmp
- /var/log
# File operation limits
fileReadLineLimit: 1000
fileWriteLineLimit: 50
# Telemetry
telemetryEnabled: false
Available Tools
The server provides the following MCP tools:
Configuration Tools
get-config
- Retrieve current server configurationset-config
- Update server configuration values
Terminal Tools
execute-command
- Execute shell commands with security controlsget-command-history
- Retrieve command execution history
File System Tools
read-file
- Read file contents with pagination supportwrite-file
- Write content to fileslist-directory
- List directory contentscreate-directory
- Create new directoriesdelete-file
- Delete files and directoriesmove-file
- Move/rename files and directoriesfile-info
- Get file metadata and information
Text Editing Tools
edit-file
- Perform complex text editing operationssearch-replace
- Search and replace text in filesbatch-edit
- Apply multiple edits to files
Fetch Tools
fetch-url
- Fetch content from web URLsdownload-file
- Download files from remote sources
Development
Project Structure
jarvis/
āāā main.go # Main server entry point
āāā config.yaml # Server configuration
āāā go.mod # Go module definition
āāā go.sum # Go module checksums
āāā handlers/ # MCP tool handlers
ā āāā config_handler.go # Configuration management
ā āāā terminal_handler.go # Terminal operations
ā āāā filesystem_handler.go # File system operations
ā āāā textediting_handler.go # Text editing tools
ā āāā fetch_handler.go # HTTP fetch operations
āāā internal/ # Internal packages
āāā common/ # Shared utilities
āāā config/ # Configuration management
āāā terminal/ # Terminal utilities
āāā filesystem/ # File system utilities
āāā textedit/ # Text editing utilities
āāā fetch/ # Fetch utilities
āāā types/ # Type definitions
Building and Testing
# Build the project
go build -o jarvis main.go
# Run tests
go test ./...
# Run with verbose logging
go run main.go
# Build for different platforms
GOOS=windows GOARCH=amd64 go build -o jarvis.exe main.go
GOOS=linux GOARCH=amd64 go build -o jarvis-linux main.go
Adding Custom Tools
To add new MCP tools:
- Create a handler function in the appropriate handler file:
func HandleNewTool(ctx context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
// Implementation here
return mcp.NewToolResultText("Result"), nil
}
- Register the tool in the corresponding internal package:
func RegisterNewTools(s *server.MCPServer) {
s.AddTool("new-tool", "Description", map[string]interface{}{
"type": "object",
"properties": map[string]interface{}{
"param": map[string]interface{}{
"type": "string",
"description": "Parameter description",
},
},
"required": []string{"param"},
}, handlers.HandleNewTool)
}
- Call the registration function in
main.go
.
Contributing
- Fork the repository
- Create a feature branch:
git checkout -b feature-name
- Make your changes and add tests
- Ensure code follows Go conventions:
go fmt ./...
- Run tests:
go test ./...
- Commit your changes:
git commit -m 'Add feature'
- Push to the branch:
git push origin feature-name
- Submit a pull request
Security Considerations
- Commands are sanitized and checked against blocked patterns
- File system access is restricted to allowed directories
- Command execution includes timeout controls
- All operations are logged for audit purposes
- Configuration can restrict dangerous operations
Dependencies
- mark3labs/mcp-go: MCP protocol implementation for Go
- google/uuid: UUID generation
- spf13/cast: Type casting utilities
API Documentation
MCP Protocol Implementation
The server implements the following MCP capabilities:
- Tools: Execute system operations (file I/O, terminal commands, etc.)
- Resources: Access to file system resources with proper access controls
- Prompts: Template-based prompt management
Tool Categories
- System Tools: Terminal command execution, process management
- File Tools: File operations with security boundaries
- Text Tools: Advanced text manipulation and editing
- Network Tools: HTTP requests and content fetching
- Config Tools: Runtime configuration management
License
This project is licensed under the MIT License - see the file for details.
Support
For support and questions:
- Create an issue on GitHub
- Check the documentation and code comments
- Review existing issues and discussions
Performance Notes
- Built with Go for high concurrency and performance
- Efficient file operations with configurable limits
- Memory-conscious design for large file handling
- Optimized for MCP protocol communication over stdio