This is a free, open-source project maintained by volunteers in their spare time. We welcome genuine contributions and constructive discussions, but we have zero tolerance for toxic behavior.
- Demanding features or fixes
- Rude, dismissive, or condescending language
- Entitlement or treating maintainers like paid support
- Shaming contributors for mistakes or decisions
- Aggressive or impatient language in issues or discussions
One strike policy: Any toxic, demanding, or rude behavior results in an immediate ban from both the GitHub repository and Discord server.
Think before you post. Ask yourself:
- Am I being respectful and constructive?
- Would I talk this way to a volunteer helping me for free?
- Am I treating maintainers like human beings, not paid support staff?
Remember: We don't owe anyone anything. This is a gift to the community, and we expect contributors to act accordingly.
- Discord: Join our community for discussions and support
- Issues: Use GitHub issues for bug reports and feature requests (following our guidelines)
- Discussions: Use GitHub Discussions for questions and general help
-
Prerequisites:
- Bun v1.1.42 or higher
- Obsidian v1.7.7 or higher
- Claude Desktop for testing
-
Clone and Setup:
git clone https://github.com/jacksteamdev/obsidian-mcp-tools.git cd obsidian-mcp-tools bun install -
Development:
bun run dev # Development mode with watch bun run build # Production build bun test # Run tests
- Project architecture:
/docs/project-architecture.md - Feature documentation:
/docs/features/ - AI-generated docs: DeepWiki
- Coding standards:
.clinerules
packages/
├── mcp-server/ # TypeScript MCP server implementation
├── obsidian-plugin/ # Obsidian plugin (TypeScript/Svelte)
└── shared/ # Shared utilities and types
- Self-contained modules in
src/features/with standardized structure - Each feature exports a setup function for initialization
- Use ArkType for runtime type validation
- Follow patterns documented in
.clinerules
Before creating an issue:
- Search existing issues to avoid duplicates
- Provide clear, detailed descriptions
- Include system information and steps to reproduce
- Be respectful and patient - remember this is volunteer work
Good issue example:
Bug Report: MCP server fails to start on macOS 14.2
Environment: macOS 14.2, Obsidian 1.7.7, Claude Desktop 1.0.2
Steps to reproduce:
- Install plugin from Community Plugins
- Click "Install Server" in settings
- Server download completes but fails to start
Expected: Server starts and connects to Claude Actual: Error in logs: [paste error message]
Additional context: Logs attached, willing to test fixes
- Fork the repository and create a feature branch
- Follow the architecture patterns described in
/docs/project-architecture.md - Write tests for new functionality
- Test thoroughly:
- Local Obsidian vault integration
- MCP server functionality
- Claude Desktop connection
- Submit PR with clear description of changes
- TypeScript strict mode required
- ArkType validation for all external data
- Error handling with descriptive messages
- Documentation for public APIs
- Follow existing patterns in
.clinerules
-
Version bump:
bun run version [patch|minor|major]- Automatically updates
package.json,manifest.json, andversions.json - Creates git commit and tag
- Pushes to GitHub
- Automatically updates
-
Automated build: GitHub Actions handles:
- Cross-platform binary compilation
- SLSA provenance attestation
- Release artifact upload
- Security verification
-
Release notes: GitHub automatically generates release notes from PRs
- Code review: Review PRs for quality, security, and architecture compliance
- Issue triage: Respond to issues and help users (when possible)
- Release management: Create releases following security protocols
- Community management: Enforce community standards
- Documentation: Keep docs current and comprehensive
- GitHub: "Maintain" or "Admin" access to repository
- Discord: Moderator permissions for community management
- Time commitment: 5-10 hours per week (15-20 during releases)
# Unit tests
bun test
# Integration testing with local vault
# 1. Set up test Obsidian vault
# 2. Install plugin locally: `bun run build:plugin`
# 3. Test MCP server connection with Claude Desktop
# 4. Verify all features work end-to-end- All binaries are SLSA-attested and cryptographically signed
- Use
gh attestation verify --owner jacksteamdev <binary>to verify integrity - Report security issues to jacksteamdev+security@gmail.com
- No secrets in code: Use environment variables for API keys
- Input validation: Use ArkType for all external data
- Minimal permissions: MCP server runs with least required access
- Audit dependencies: Regularly update and audit npm packages
- GitHub Repository: jacksteamdev/obsidian-mcp-tools
- Discord Community: Join here
- Release History: GitHub Releases
- Security Policy: SECURITY.md
- AI Documentation: DeepWiki
Join our Discord community for questions and discussions. Please read this document thoroughly before asking questions that are already covered here.
Remember: Be respectful, be patient, and remember that everyone here is volunteering their time to help make this project better.