@gebrai/gebrai
v1.1.0
Published
Model Context Protocol server for GeoGebra mathematical visualization
Maintainers
Readme
GeoGebra MCP Tool
A Model Context Protocol (MCP) server that enables AI models to interact with GeoGebra's mathematical software suite for creating interactive mathematical visualizations and dynamic constructions.
🎯 Overview
The GeoGebra MCP Tool bridges the gap between AI reasoning capabilities and mathematical visualization, allowing AI assistants to:
- Create geometric constructions (points, lines, circles, polygons)
- Plot mathematical functions and graphs
- Perform algebraic computations with visual representation
- Generate interactive mathematical demonstrations
- Export visualizations in various formats
🚀 Quick Start Examples
- NPX (Recommended):
# Start the server
npx @gebrai/gebrai
# Or with custom log level
npx @gebrai/gebrai --log-level debug- Connect to Claude Desktop - Add to your Claude configuration:
{
"mcpServers": {
"geogebra": {
"command": "npx",
"args": ["@gebrai/gebrai"]
}
}
}- Start Creating - Ask Claude to create mathematical visualizations!
Need help? Check our Getting Started Guide for detailed instructions.
📦 Installation Options
NPX (No Installation)
npx @gebrai/gebrai✅ No installation required
✅ Always uses latest version
✅ Perfect for testing
Global Installation
npm install -g @gebrai/gebrai✅ Faster startup after installation
✅ Works offline
✅ Consistent version
Local Development
git clone <repository-url>
cd gebrai && npm install✅ Full source code access
✅ Customization possible
✅ Development workflow
🛠️ CLI Usage
The GeoGebra MCP Tool provides a command-line interface with the following options:
Usage:
npx @gebrai/gebrai [options]
gebrai [options] # if installed globally
geogebra-mcp [options] # alternative command
Options:
-h, --help Show help message
-v, --version Show version information
--log-level LEVEL Set log level (error, warn, info, debug) [default: info]
--port PORT Set server port [default: stdin/stdout for MCP]
Examples:
npx @gebrai/gebrai # Start MCP server
npx @gebrai/gebrai --log-level debug # Start with debug logging
npx @gebrai/gebrai --help # Show helpPrerequisites
- Node.js 18.0.0 or higher
- npm or yarn package manager
Installation
- Clone the repository:
git clone <repository-url>
cd gebrai- Install dependencies:
npm install- Build the project:
npm run build- Start the server:
npm startDevelopment Mode
For development with hot reload:
npm run dev🛠️ Development
Project Structure
gebrai/
├── src/
│ ├── index.ts # Main entry point
│ ├── server.ts # MCP server implementation
│ ├── types/
│ │ └── mcp.ts # MCP protocol types
│ ├── tools/
│ │ └── index.ts # Tool registry and example tools
│ └── utils/
│ ├── logger.ts # Logging utility
│ └── errors.ts # Error handling
├── tests/
│ ├── setup.ts # Test configuration
│ └── server.test.ts # Server tests
├── package.json
├── tsconfig.json
└── README.mdAvailable Scripts
npm run dev- Start development server with hot reloadnpm run build- Build the TypeScript projectnpm start- Start the production servernpm test- Run the test suitenpm run test:watch- Run tests in watch modenpm run test:coverage- Run tests with coverage reportnpm run lint- Run ESLintnpm run lint:fix- Fix ESLint issues automatically
Testing
The project includes a comprehensive test suite using Jest:
# Run all tests
npm test
# Run tests in watch mode
npm run test:watch
# Generate coverage report
npm run test:coverage📚 Documentation
For comprehensive documentation, visit our complete documentation which includes:
📖 Core Documentation
- API Reference - Complete tool documentation with examples
- Getting Started Guide - Step-by-step setup and first usage
- Integration Guide - Platform integration instructions
- Troubleshooting - Common issues and solutions
- FAQ - Frequently asked questions
🔧 Tool Categories
- Basic Tools - Core MCP functionality (ping, echo, server_info)
- GeoGebra Tools - 25+ mathematical construction tools
- Educational Tools - Pre-built educational templates
- Performance Tools - Monitoring and optimization
🎓 Educational Resources
- Use Cases - Real-world educational scenarios
- Teacher Guide - Pedagogical guidance
- Classroom Examples - Ready-to-use lessons
📝 Tutorials & Examples
- Basic Usage - Your first mathematical constructions
- Mathematical Constructions - Geometry and algebra
- Function Plotting - Creating mathematical functions
- Code Examples - Working examples by complexity
📊 Tool Overview
The GeoGebra MCP Tool provides 40+ tools across four categories:
| Category | Tools | Description | Performance | |----------|-------|-------------|-------------| | Basic | 3 tools | Core MCP functionality | < 100ms | | GeoGebra | 25+ tools | Mathematical constructions | < 2000ms | | Educational | 10+ tools | Classroom activities | < 2000ms | | Performance | 5 tools | Monitoring & optimization | < 500ms |
Example Tools
- Mathematical:
geogebra_create_point,geogebra_plot_function,geogebra_export_png - Educational:
geogebra_list_educational_templates,geogebra_create_lesson_plan - Performance:
performance_get_stats,performance_warm_up_pool
🔧 Configuration
Environment Variables
PORT- Server port (default: 3000)LOG_LEVEL- Logging level: error, warn, info, debug (default: info)NODE_ENV- Environment: development, production, test
Example .env file
PORT=3000
LOG_LEVEL=info
NODE_ENV=development🏗️ Architecture
Core Components
MCP Server (
src/server.ts)- Handles JSON-RPC 2.0 protocol
- Routes requests to appropriate handlers
- Manages server lifecycle
Tool Registry (
src/tools/index.ts)- Manages available tools
- Handles tool execution
- Provides tool discovery
Error Handling (
src/utils/errors.ts)- Standardized error responses
- JSON-RPC error codes
- Comprehensive error logging
Logging (
src/utils/logger.ts)- Structured logging with Winston
- Configurable log levels
- Development and production modes
Design Principles
- Type Safety: Full TypeScript implementation with strict mode
- Error Handling: Comprehensive error handling and validation
- Modularity: Clean separation of concerns
- Testability: Extensive test coverage
- Extensibility: Easy to add new tools and features
🤝 Contributing
- Fork the repository
- Create a feature branch:
git checkout -b feature/new-tool - Make your changes and add tests
- Ensure all tests pass:
npm test - Commit your changes:
git commit -m 'Add new tool' - Push to the branch:
git push origin feature/new-tool - Submit a pull request
Development Guidelines
- Follow TypeScript best practices
- Add tests for new functionality
- Update documentation as needed
- Use conventional commit messages
- Ensure code passes linting
🔗 Related Projects
📞 Support
For questions, issues, or contributions, please:
- Check the Issues page
- Create a new issue if needed
- Join our community discussions
