Co-authored-by: Hanzo Dev <[email protected]>
Hanzo AI Store
The official AI agent tools and MCP server marketplace for Hanzo Desktop.
Overview
Hanzo AI Store is a simple, flatfile-based marketplace that allows users to discover and install AI agent tools and MCP servers. It's built with Next.js and uses a git-based submission workflow via Pull Requests.
Features
- π Static Site Generation: Pre-compiled Next.js app for fast performance
- π Client-Side Filtering: All filtering happens in the browser for instant results
- π¦ Flatfile Database: Each app is a JSON file in
data/apps/ - π Git-Based Submissions: Submit new apps via Pull Requests
- π¨ Clean UI: Modern, responsive interface with Tailwind CSS
- π± Desktop & Web: Works in Hanzo Desktop and as a standalone web app
Getting Started
Installation
npm install
Generate Store Data
npm run generate-store
This reads all JSON files from data/apps/ and generates public/store.json.
Development
npm run dev
Open http://localhost:3000 in your browser.
Build for Production
npm run build
This creates a static export in the out/ directory.
Project Structure
hanzo-store/
βββ app/ # Next.js app directory
β βββ layout.tsx # Root layout
β βββ page.tsx # Main store page
β βββ globals.css # Global styles
βββ data/
β βββ agents/ # AI agents (one JSON per agent)
β β βββ *.json
β βββ tools/ # Automation tools (one JSON per tool)
β βββ *.json
βββ scripts/
β βββ generate-store.js # Generates public/store.json
βββ types/
β βββ index.ts # TypeScript types
βββ public/
βββ store.json # Generated store data (gitignored)
Adding a New App
1. Fork the Repository
Click the "Fork" button on GitHub to create your own copy.
2. Create an App JSON File
Create a new file in data/agents/ (for AI agents) or data/tools/ (for automation tools) with your app's information:
{
"id": "my-awesome-server",
"name": "My Awesome Server",
"description": "A brief description of what your MCP server does",
"version": "1.0.0",
"author": "Your Name",
"repository": "https://github.com/yourusername/my-awesome-server",
"homepage": "https://your-docs-site.com",
"license": "MIT",
"category": "Development Tools",
"tags": ["mcp", "tools", "productivity"],
"icon": "https://your-icon-url.com/icon.png",
"installCommand": "npx -y @yourusername/my-awesome-server",
"mcpConfig": {
"command": "npx",
"args": ["-y", "@yourusername/my-awesome-server"],
"env": {
"API_KEY": "your-api-key-env-var"
}
},
"createdAt": "2025-01-05T00:00:00Z",
"updatedAt": "2025-01-05T00:00:00Z"
}
3. Submit a Pull Request
- Commit your changes
- Push to your fork
- Open a Pull Request against the main repository
- Wait for review and approval
App JSON Schema
| Field | Type | Required | Description |
|---|---|---|---|
id |
string | β | Unique identifier (kebab-case) |
name |
string | β | Display name |
description |
string | β | Brief description |
version |
string | β | Semantic version (e.g., "1.0.0") |
author |
string | β | Author name or organization |
category |
string | β | Category (see Categories below) |
tags |
string[] | β | Searchable tags |
repository |
string | β | GitHub repository URL |
homepage |
string | β | Documentation or homepage URL |
license |
string | β | License (e.g., "MIT", "Apache-2.0") |
icon |
string | β | Icon URL (square, min 128x128) |
screenshots |
string[] | β | Screenshot URLs |
installCommand |
string | β | Quick install command |
mcpConfig |
object | β | MCP server configuration |
readme |
string | β | Full README content (markdown) |
changelog |
string | β | Changelog (markdown) |
rating |
number | β | Average rating (1-5) |
downloads |
number | β | Download count |
createdAt |
string | β | ISO 8601 date |
updatedAt |
string | β | ISO 8601 date |
Categories
- Development Tools
- Productivity
- Data & Analytics
- Communication
- File Management
- AI & Machine Learning
- Security
- Utilities
- Entertainment
- Other
API
The store data is available as a static JSON file at /store.json.
Response:
{
"apps": [...],
"categories": [...],
"version": "1.0.0",
"lastUpdated": "2025-01-05T12:00:00Z"
}
Integration with Hanzo Desktop
Hanzo Desktop can fetch the store data from:
https://store.hanzo.ai/store.json
The app can then display the store UI in an embedded webview or implement its own native UI using the JSON data.
Development
Tech Stack
- Next.js 15: React framework with App Router
- TypeScript: Type-safe JavaScript
- Tailwind CSS: Utility-first CSS framework
- Node.js: For build scripts
Scripts
npm run dev- Start development servernpm run build- Build for production (static export)npm start- Serve production build locallynpm run lint- Run ESLintnpm run generate-store- Generate store.json from flatfiles
Contributing
We welcome contributions! Please see our Contributing Guide for details.
Submission Guidelines
- β App must be a valid MCP server
- β JSON must be valid and complete
- β All required fields must be present
- β ID must be unique and kebab-case
- β Icon should be square (recommended 256x256)
- β Repository should be public
- β License should be open source
Review Process
- Automated checks run on PR
- Manual review by maintainers
- Merge and deploy to production
- App appears in store within 5 minutes
License
MIT Β© Hanzo AI
Support
- Issues: GitHub Issues
- Discord: Join our Discord
- Email: [email protected]