moe-mcp
by tiennt235
README.md
# moe — a team of domain experts, as agent skills
`moe` packages a **mixture of domain experts** as installable **skills + subagents** for your
coding agent (Claude Code, Codex, Pi, …). Each expert owns a curated **knowledge folder** built
from your materials (books, articles, docs); it answers by **searching that folder** (grep/read)
and **citing** it — *no RAG, no vector DB, no embeddings*. A **router skill** picks the right
expert(s) for a question and synthesizes a cited answer.
## Install
`dist/` is committed, so you never need Python to use the experts. Install with `npx` — with no
flags it auto-detects your installed agent(s) (`~/.claude`, `~/.codex`, `.agents`/`.pi`) and
scope:
```bash
npx github:tiennt235/moe install # or: npx skills add tiennt235/moe
# then, inside your agent:
/moe ask "which valve is on the left side of the heart?"
```
## How it works
- **Expert = subagent.** `experts/<name>/EXPERT.md` (optional guidance) + `experts/<name>/knowledge/`
(built markdown + `INDEX.md`). The expert reads the index, greps the files, and cites
`source · section · page`.
- **Router = skill.** Reads the roster (`experts.yaml`) and picks the matching expert(s) by
reasoning over their descriptions — no embeddings. Then delegates and synthesizes.
- **Retrieval = agentic file search.** Coding agents are already great at grep/read; that *is*
the retrieval engine. Citations come from each knowledge file's front-matter + headings.
## Install targets & delegation
| Host | Installs to | Delegation |
|---|---|---|
| **Claude Code** | `.claude/skills/moe` + `.claude/agents/moe-*` | native subagents (Agent tool) |
| **Codex** | `.agents/skills/moe` + `.codex/agents` + `AGENTS.moe.md` | native subagents; paste the snippet into `AGENTS.md` |
| **Pi / generic** | `.agents/skills/moe` | inline expert-mode (no subagent primitive) |
```bash
npx github:tiennt235/moe install --providers=claude,codex,agents --scope=project # or --scope=global
```
Claude Code can also install via plugin marketplace (`plugin/plugin.json`), and any
Agent-Skills host via `npx skills add tiennt235/moe`.
## Portability
The repo *is* the shareable expert team — `dist/` and `knowledge/` are committed. Anyone gets
your experts with `npx github:tiennt235/moe install` (or `npx skills add tiennt235/moe`). No
database, snapshot, or re-embedding.
## Layout
```
experts.yaml roster (drives routing)
experts/<name>/ EXPERT.md · materials/ · knowledge/ (built)
skill/moe/ router skill source (SKILL.md + commands)
templates/ shared expert-behavior template
src/moe/ Python builder (extract → knowledge → dist)
bin/moe.mjs Node umbrella CLI (install/build/scaffold/list)
dist/{claude-code,codex,agents,dev}/ committed per-host builds
plugin/plugin.json Claude Code marketplace manifest
```
## Contributing
Building experts is the authoring path, which needs Python (the material extractor). Clone the
repo, then add experts one of two ways.
### Add an expert by hand
```bash
uv run moe list # show the roster
uv run moe scaffold neurology -d "Clinical neurology…" # new expert
# drop material into experts/neurology/materials/, then:
uv run moe build && npx github:tiennt235/moe install
```
Add materials as `path:` (local) or `url:` entries under an expert in `experts.yaml`. Supported
formats: PDF (+OCR), EPUB, MOBI (via Calibre), HTML, Markdown/text. (`uv run moe` also works as
`python -m moe` or `pip install -e . && moe`.)
### Or let the expert-builder do it
`moe` ships a **meta-expert** that builds other experts for you, so you rarely edit
`experts.yaml` by hand.
It is **dev-only**: it runs the Python authoring path, so it never ships to end users and lives
only in the `dev` build.
Onboard it once, from a clone of this repo:
```bash
uv run moe build # builds knowledge + dist/ (incl. the dev build)
npx github:tiennt235/moe install --dev # deploys the dev build into this repo's .claude/
```
Then, inside your coding agent, delegate to the `moe-expert-builder` subagent (or just ask, and
the router routes to it). It works in two modes:
- **Guided ingest** — give it a topic *and* materials (file paths or URLs); it ingests exactly
those.
Example: *"build a neurology expert from these two PDFs and this article."*
- **Auto-research** — give it only a topic; it searches for authoritative, openly-licensed
sources, proposes a shortlist for you to approve, then builds from the approved set.
Example: *"build a stoicism expert from public-domain sources."*
Either way it scaffolds the expert, patches `experts.yaml`, runs `uv run moe build`, verifies
the knowledge and its citations, and reports.
Deploy the result to end users with `npx github:tiennt235/moe install`.
TDQS
A4/5.0
Scored across 3 tools
Disambiguation5/5
Each tool serves a distinct purpose: asking questions, fetching source metadata, and listing experts. There is no functional overlap among the three.
Naming Consistency5/5
All tool names follow a consistent verb_noun pattern (ask_experts, get_source, list_experts), making them predictable and easy to understand.
Tool Count5/5
Three tools is well-scoped for the server's domain of expert QA. Each tool is necessary and there are no extraneous or missing core functions.
Completeness4/5
The set covers the main workflow: querying experts, verifying sources, and discovering available experts. A minor gap is the lack of a tool to get detailed expert profiles, but it's not essential for typical use.
Maintenance
ActivityStale
ResponsivenessNo issues