MCP Etherscan Server
# Contributing to Apple Notifier MCP Server
First off, thank you for considering contributing to the Apple Notifier MCP Server! It's people like you that make it a great tool for everyone.
## Code of Conduct
This project and everyone participating in it is governed by our code of conduct. By participating, you are expected to uphold this code.
## How Can I Contribute?
### Reporting Bugs
Before creating bug reports, please check the existing issues as you might find out that you don't need to create one. When you are creating a bug report, please include as many details as possible:
* Use a clear and descriptive title
* Describe the exact steps which reproduce the problem
* Provide specific examples to demonstrate the steps
* Describe the behavior you observed after following the steps
* Explain which behavior you expected to see instead and why
* Include details about your configuration and environment:
* Which version of Node.js are you using?
* Which version of macOS are you using?
* Which MCP client are you using (Claude Desktop, Cline, etc.)?
### Suggesting Enhancements
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion, please include:
* A clear and descriptive title
* A detailed description of the proposed functionality
* Explain why this enhancement would be useful
* List any alternative solutions or features you've considered
### Pull Requests
* Fill in the required template
* Do not include issue numbers in the PR title
* Include screenshots and animated GIFs in your pull request whenever possible
* Follow the TypeScript styleguide
* Include thoughtfully-worded, well-structured tests (when we implement testing)
* Document new code
* End all files with a newline
## Development Process
1. Fork the repo and create your branch from `main`
2. Install pnpm if you haven't already: `npm install -g pnpm`
3. Install dependencies: `pnpm install`
4. Make your changes
5. Test your changes thoroughly
6. Ensure the code lints successfully
7. Create a Pull Request
### Styleguides
#### Git Commit Messages
* Use the present tense ("Add feature" not "Added feature")
* Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
* Limit the first line to 72 characters or less
* Reference issues and pull requests liberally after the first line
#### TypeScript Styleguide
* Use 2 spaces for indentation
* Prefer `const` over `let`
* Use meaningful variable names
* Add types for parameters and return values
* Use async/await over raw promises
* Document public methods with JSDoc comments
## Project Structure
```
apple-notifier-mcp/
├── src/ # Source files
│ ├── index.ts # Main MCP server implementation
│ ├── notifier.ts # Core notification functionality
│ └── types.ts # Type definitions
├── build/ # Compiled files (git ignored)
├── package.json # Project metadata and dependencies
└── tsconfig.json # TypeScript configuration
```
## Setting Up Development Environment
1. Ensure you have Node.js >= 18 installed
2. Install pnpm: `npm install -g pnpm`
3. Clone your fork of the repository
4. Run `pnpm install` to install dependencies
5. Run `pnpm dev` to start in development mode
6. Make your changes
7. Test thoroughly with `pnpm test`
8. Submit a PR
### Available Scripts
- `pnpm build` - Build the project
- `pnpm start` - Start the MCP server
- `pnpm dev` - Start in watch mode for development
- `pnpm clean` - Remove build artifacts
- `pnpm test` - Run tests (to be implemented)
## CI/CD
This project uses GitHub Actions for continuous integration and deployment:
### Continuous Integration
- Runs on every push and pull request to `main`
- Tests on macOS with Node.js 18.x and 20.x
- Builds the project
- Runs tests
- Verifies osascript functionality
- Tests basic notification functionality
### Publishing to NPM
To publish a new version:
1. Update version in `package.json`
2. Create and push a new tag:
```bash
git tag v1.0.0 # Use appropriate version
git push origin v1.0.0
```
3. Create a new release on GitHub using the tag
4. The GitHub Action will automatically:
- Build the project
- Run tests
- Publish to NPM
## Support
If you encounter any issues or have questions:
1. Check the [Issues](https://github.com/turlockmike/apple-notifier-mcp/issues) page
2. Open a new issue if your problem hasn't been reported
3. Provide as much detail as possible, including:
- Node.js version
- macOS version
- Steps to reproduce
- Expected vs actual behavior