🌐 Live site: agenticaiforgood.com
Two things in one repo:
- Web catalog — Browse and search 100+ curated AI agent tools by use case, category, and stack
- MCP server — Search the catalog directly from Claude Desktop or Claude Code
The catalog lives in tools/*.yaml — anyone can add a tool via pull request.
tools/*.yaml (open catalog)
↓
GitHub Actions CI (validate + embed)
↓
Supabase (PostgreSQL + pgvector)
↓
Next.js 16 on Vercel
↓
Claude via MCP (HTTP or npx)
Agentic-AI-For-Good-Website/
├── tools/ # Open catalog — YAML files for each tool
├── src/
│ ├── app/ # Next.js App Router pages
│ │ ├── api/mcp/ # Hosted MCP server endpoint
│ │ └── api/tools/ # Tool search & fetch APIs
│ ├── components/ # React components (shadcn/ui)
│ ├── lib/ # Supabase client, utils
│ └── views/ # Page-level view components
├── scripts/ # Supabase sync, validation, embedding
├── agentic-ai-for-good-mcp/ # npm package for MCP server
├── supabase/migrations/ # Database schema (tools table, RLS, pgvector)
└── .github/workflows/ # CI: validate-pr.yml, sync-on-merge.yml
- Node.js 20+
- Supabase free tier account
- OpenAI API key (optional — search falls back to keyword mode without it)
-
Clone and install
git clone https://github.com/nimit2801/Agentic-AI-For-Good-Website.git cd Agentic-AI-For-Good-Website npm install -
Environment variables
cp .env.example .env.local
Then fill in
.env.local:Variable Where to get it Required? NEXT_PUBLIC_SUPABASE_URLSupabase dashboard → Settings → API ✅ Yes NEXT_PUBLIC_SUPABASE_ANON_KEYSupabase dashboard → Settings → API ✅ Yes SUPABASE_SERVICE_ROLE_KEYSupabase dashboard → Settings → API (keep secret) ✅ Yes (for sync scripts) OPENAI_API_KEYhttps://platform.openai.com/api-keys ❌ No (search falls back to keyword) NEXT_PUBLIC_SITE_URLhttp://localhost:3000(dev) or your production URL✅ Yes (for MCP server) RESEND_API_KEYhttps://resend.com/api-keys ❌ No (email features disabled without it) CRON_SECRETAny random string (for Vercel cron protection) ❌ No (only needed in production) 💡 Minimum viable setup: Just the 3 Supabase vars +
NEXT_PUBLIC_SITE_URL. WithoutOPENAI_API_KEY, search uses PostgreSQL full-text search (verified insrc/app/api/tools/search/route.ts— 3-tier fallback: semantic →keyword_search_toolsRPC →ilike). -
Set up Supabase
Run the schema SQL in your Supabase SQL editor (or use
supabase db pushif you have the CLI):# Copy the contents of supabase/migrations/*.sql and run in Supabase SQL EditorThis creates:
toolstable with pgvector column for embeddingskeyword_search_toolsRPC function for full-text search- Row Level Security policies
-
Seed tools (optional)
npx tsx scripts/sync-to-supabase.ts
This reads
tools/*.yaml, generates embeddings (ifOPENAI_API_KEYis set), and inserts into Supabase. -
Start dev server
npm run dev
npm test # Run all 49 tests
npm run test:coverage # With coverage reportTests use Vitest + @testing-library/react.
The catalog is accessible via the Model Context Protocol:
Add at user level (global across all projects):
claude mcp add --scope user --transport http agenticaiforgood https://agenticaiforgood.com/api/mcpOr add at project level only:
claude mcp add --scope project --transport http agenticaiforgood https://agenticaiforgood.com/api/mcpAdd to Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on Mac):
{
"mcpServers": {
"agentic-ai-for-good": {
"url": "https://agenticaiforgood.com/api/mcp"
}
}
}Or Claude Code config (~/.claude/settings.json):
{
"mcpServers": {
"agentic-ai-for-good": {
"url": "https://agenticaiforgood.com/api/mcp"
}
}
}{
"mcpServers": {
"agentic-ai-for-good": {
"command": "npx",
"args": ["-y", "agentic-ai-for-good-mcp"]
}
}
}| Tool | Description |
|---|---|
search_tools |
Semantic or keyword search across the catalog |
get_tool_detail |
Fetch full details for a specific tool by slug |
suggest_for_stack |
Get tool recommendations based on your tech stack description |
whats_new |
List recently added tools (default: last 7 days) |
See CONTRIBUTING.md for the full guide. Quick version:
- Fork this repo
- Create
tools/your-tool-name.yaml(copy an existing file as a template) - Fill in: name, description, category, tags, URLs, pricing
- Run
npm testto validate - Create PR to
main— use the "Add a tool" PR template
Open an issue: https://github.com/nimit2801/Agentic-AI-For-Good-Website/issues
- Fork → create branch from
main - Make changes →
npm testmust pass - Create PR
See CODE_OF_CONDUCT.md for community guidelines.
| Layer | Technology |
|---|---|
| Framework | Next.js 16 (App Router, Turbopack) |
| Styling | Tailwind CSS 4 + shadcn/ui |
| Database | Supabase (PostgreSQL + pgvector) |
| Search | OpenAI embeddings + pgvector (falls back to PostgreSQL FTS) |
| MCP Transport | HTTP (stateless) via @modelcontextprotocol/sdk |
| Resend + React Email | |
| Tests | Vitest + @testing-library/react |
| Deployment | Vercel |
- Create Vercel project linked to your fork
- Add environment variables in Vercel dashboard (all 7 from
.env.example) - Set GitHub Actions secrets (for CI):
SUPABASE_URL(⚠️ noNEXT_PUBLIC_prefix for Actions)SUPABASE_SERVICE_ROLE_KEYOPENAI_API_KEYRESEND_API_KEY
- Deploy
- GitHub Actions secret name mismatch: CI uses
secrets.SUPABASE_URL(no prefix), but the browser/Next.js app usesNEXT_PUBLIC_SUPABASE_URL. Set both in their respective places (GitHub secrets vs Vercel env vars). - Supabase image hostname:
next.config.tshardcodesosgxxcxbmwoprjbjgifm.supabase.coinimages.remotePatterns. Update this to your own Supabase project ID if you're using your own Supabase instance.
This project uses a split license:
- Source code: MIT License — see LICENSE-CODE
- Tool catalog (
tools/): Creative Commons BY-NC-SA 4.0 — see LICENSE-CATALOG
TL;DR:
- ✅ Use the code however you want (including commercially)
- ✅ Share and adapt the catalog for non-commercial use
- ❌ Can't resell the catalog or embed it in commercial products without permission
See LICENSE for full details and what this means for developers, researchers, and companies.
See SECURITY.md for vulnerability reporting.
Built with ❤️ to make AI agent development more accessible.