MCPS Master Implementation Protocol (v3.0.0)
| Metadata | Details |
|---|---|
| Project | mcps (Model Context Protocol System) |
| Architecture | Monorepo / SQLite-First / Semantic Knowledge Graph |
| Owner | Wyatt Walsh |
| Target State | High-Fidelity Knowledge Graph of the MCP Ecosystem |
| Status | Production-Ready with Active Enhancements |
| Implementation | Phases 0-10 Complete (✅) |
Phase 0: The Monorepo Bedrock (Infrastructure) ✅ COMPLETED
Objective: Establish a deterministic, reproducible development environment.
Status: ✅ All tasks completed successfully
Implementation Notes:
- UV for Python dependency management with lockfile
- Polyglot config with pyproject.toml, ruff.toml
- Complete .gitignore and .gitattributes setup
- Cursor/Windsurf rules for AI agent context management
0.1 Repository & Polyglot Config
-
[x] Root Configuration:
-
Initialize
pyproject.toml(workspace root) to manage Python inclusions/exclusions. -
Create
.gitignoreexplicitly ignoringdata/*.db,data/*.db-wal,**/__pycache__,.next/,node_modules/. -
Crucial: Add
.gitattributesto enforce*.db binaryto prevent Git from attempting to diff SQLite files.
-
-
[ ] Agentic Context Rules (
.cursorrules/.windsurfrules):-
Create rule: "When editing
packages/harvester, NEVER import fromapps/web." -
Create rule: "Always use
uv runfor python commands." -
Create rule: "Prefer
pathliboveros.path."
-
0.2 Python Subsystem (packages/harvester, apps/api)
-
[ ] Dependency Locking (Strict):
-
uv add sqlmodel==0.0.16(Ensure Pydantic v2 compatibility). -
uv add pydantic-settings(For.envmanagement). -
uv add tenacity loguru httpx typer(Core utils). -
uv add sqlite-vec(Ensure the pre-compiled binary wheel is selected). -
uv add alembic(Database migrations). -
Dev Deps:
uv add --dev pytest pytest-asyncio ruff mypy types-pyyaml.
-
-
[ ] Linting & Formatting:
-
Configure
ruff.toml: Enable rulesE(Error),F(Pyflakes),I(Isort),B(Bugbear). -
Set line length to 100.
-
0.3 Frontend Subsystem (apps/web)
-
[ ] Next.js 15 Initialization:
-
Initialize with
--typescript,--eslint,--tailwind. -
Tailwind 4 Upgrade: Install
tailwindcss@nextand@tailwindcss/postcss. -
Configure
cssvariables for#6a9fb5(Primary Accent) inapp/globals.css.
-
-
[ ] UI Libraries:
-
Install
lucide-react,clsx,tailwind-merge. -
Install
better-sqlite3(Native binding for direct DB reads). -
Install
d3-force,d3-selection,d3-scale(Visualization). -
Install
@visx/network(High-level graph components).
-
0.4 Orchestration (Makefile)
-
[ ] Implement Unified Commands:
-
make install: Runsuv syncandpnpm install. -
make db-reset: Deletesdata/*.dband runsalembic upgrade head. -
make dev: Usesconcurrentlyor background processes to run FastAPI (:8000) and Next.js (:3000). -
make lint: Runsruff check .andnext lint.
-
Phase 1: The Ontological Core (Data Modeling) ✅ COMPLETED
Objective: Define the strict schema that governs the Knowledge Graph.
Status: ✅ All SQLModel entities defined with full relationships
Implementation Notes:
- SQLModel with Pydantic v2 for validation
- Complete schema with Server, Tool, Resource, Prompt, Dependency, Release, Contributor models
- Proper foreign keys and cascade relationships
- JSON columns for complex data (keywords, categories, input_schema)
- Alembic migrations for schema versioning
1.1 Abstract Base Classes (packages/harvester/core/models.py)
-
[x] BaseEntity:
-
UUID field (
default_factory=uuid4). -
created_at/updated_atwithsa_column_kwargs={"server_default": func.now()}.
-
-
[ ] Enums:
-
HostType: GITHUB, NPM, PYPI, DOCKER, HTTP. -
RiskLevel: SAFE, MODERATE, HIGH, CRITICAL. -
Capability: RESOURCES, PROMPTS, TOOLS, LOGGING.
-
1.2 The Relational Graph (packages/harvester/models.py)
-
[ ] Server Model:
-
Fields:
name,primary_url,stars,health_score. -
JSON Columns:
keywords,categoriesdefined assa_column=Column(JSON).
-
-
[ ] Deep Metadata Models:
-
Contributor: Fieldsusername,commits,platform(For Bus Factor calc). -
Release: Fieldsversion,changelog,published_at. -
Dependency: Fieldslibrary_name,version_constraint,ecosystem.
-
-
[ ] Functional Models:
-
Tool,ResourceTemplate,Prompt. -
Constraint:
input_schemamust beJSONtype.
-
1.3 The Vector Layer
-
[ ] ToolEmbedding Model:
-
tool_id(Foreign Key). -
vector: Define as a custom column type orJSON(if waiting onsqlite-vecORM support). -
model_name: Default "text-embedding-3-small".
-
1.4 Database Operations
-
[ ] Alembic Setup:
-
Configure
alembic.inito point todata/mcps.db. -
Generate Initial Migration:
uv run alembic revision --autogenerate -m "genesis". -
Apply Migration:
uv run alembic upgrade head.
-
Phase 2: The Universal Harvester (ETL Engine) ✅ COMPLETED
Objective: Build the resilient, polymorphic ingestion pipeline.
Status: ✅ All 5 adapters implemented (GitHub, NPM, PyPI, Docker, HTTP)
Implementation Notes:
- Polymorphic adapter pattern for multi-source ingestion
- GitHub adapter with GraphQL optimization
- NPM/PyPI adapters with tarball/wheel inspection
- Docker adapter with registry API v2
- HTTP adapter with MCP introspection
- Tenacity retry logic for resilience
- CLI with comprehensive ingest commands
2.1 The Core Engine (packages/harvester/engine.py)
-
[x] Session Management:
-
Create a global
httpx.AsyncClientwithlimit=10connections. -
Apply
tenacityretry decorator:stop=stop_after_attempt(5),wait=wait_exponential(multiplier=1, min=2, max=30).
-
-
[ ] Checkpoint System:
- Create a
ProcessingLogtable to track(url, status, attempts)to allow resuming interrupted scrapes.
- Create a
2.2 Strategy A: GitHub Intelligence
-
[ ] GraphQL Query Optimization:
-
Write a single query to fetch:
-
object(expression: "HEAD:mcp.json") { text } -
object(expression: "HEAD:package.json") { text } -
object(expression: "HEAD:pyproject.toml") { text } -
stargazers { totalCount } -
mentionableUsers(first: 10) { nodes { login } }(Contributors).
-
-
-
[ ] Pagination Logic: Handle
hasNextPagefor repositories with >100 tools (rare, but possible).
2.3 Strategy B: The Artifact Inspector (NPM/PyPI)
-
[ ] Virtual Filesystem (In-Memory):
-
Use
tarfile.open(fileobj=BytesIO(content))to inspect.tgzwithout disk I/O. -
Security Check: Check for "Zip Bombs" (uncompressed size > 500MB) before extraction.
-
-
[ ] Manifest Parsing:
- Logic to extract
mcpconfig frompackage.json->mcpServerskey.
- Logic to extract
2.4 Strategy C: Docker Forensics
-
[ ] Registry API Client:
-
Implement token authentication (
Bearer realm="..."). -
Fetch Manifest V2 Schema 2.
-
-
[ ] Config Blob Parser:
-
Parse the
config.digestblob to findEnvvariables. -
Heuristic: If
EnvcontainsMCP_PORTorSTDIO, flag as valid server.
-
Phase 3: Deep Analysis & Knowledge Enrichment ✅ COMPLETED
Objective: Turn raw data into "Intelligence".
Status: ✅ Security analysis and dependency extraction complete
Implementation Notes:
- AST-based security scanning for Python (ast module)
- TypeScript scanning with tree-sitter/regex
- Risk level scoring (SAFE, MODERATE, HIGH, CRITICAL)
- Dependency graph extraction from package manifests
- Health scoring algorithm based on multiple factors
- Contributor tracking for bus factor analysis
3.1 Static Analysis (AST)
-
[x] Python Visitor (
ast.NodeVisitor):-
visit_Call: Check if func name iseval,exec,subprocess.run. -
visit_Import: Check if importingsocket,requests,os.
-
-
[ ] TypeScript Visitor (Regex/Tree-sitter):
- Regex fallback:
/(child_process|exec|spawn|bun:ffi)/.
- Regex fallback:
-
[ ] Risk Scoring Algorithm:
-
Base Score: 100.
-
RiskLevel.CRITICAL: Ifevaldetected. -
RiskLevel.HIGH: Ifnetwork+filesystemdetected +verified=False.
-
3.2 Semantic Indexing
-
[ ] Embedding Pipeline:
-
Implement
EmbeddingServiceclass. -
Batch processing: Group descriptions into batches of 50 for OpenAI API efficiency.
-
Optimization: Hash the description text. If hash exists in DB, skip embedding (saves $$$).
-
3.3 Bus Factor Calculation
-
[ ] Algorithm:
-
Fetch last 100 commits.
-
Calculate % of code contributed by top author.
-
If Top Author > 80% of commits ->
BusFactor.LOW(High Risk). -
If Top 3 Authors evenly distributed ->
BusFactor.HIGH(Safe).
-
Phase 4: Data Engineering (The Lake) ✅ COMPLETED
Objective: Reproducibility and Data Science enablement.
Status: ✅ Multiple export formats implemented
Implementation Notes:
- Parquet exporter with PyArrow schemas
- JSONL exporter for LLM fine-tuning
- CSV exporter for network analysis
- CLI export commands with format selection
- Automated flatfile generation from relational data
4.1 Parquet Exports
-
[x] Schema Definition:
- Use
pyarrowschema for strict typing (e.g.,stars: int32,created_at: timestamp[ms]).
- Use
-
[ ] Flatfile Generation:
-
servers.parquet: JoinServer+RiskLevel+BusFactor. -
dependencies.parquet: Exploded view ofServer->Dependency.
-
4.2 JSONL datasets
-
[ ] LLM Fine-Tuning Set:
-
Iterate all
Toolrecords. -
Format:
{"messages": [{"role": "user", "content": "Create a tool for..."}, {"role": "assistant", "content": <input_schema>}]}. -
Validation: Ensure JSON schema is valid before writing line.
-
Phase 5: The Dashboard (Interface) ✅ COMPLETED
Objective: High-performance visualization.
Status: ✅ Next.js 15 dashboard with App Router
Implementation Notes:
- Next.js 15 with React 19 and Tailwind CSS 4
- Server Components for direct SQLite access
- better-sqlite3 integration for zero-latency reads
- Responsive UI with Shadcn components
- Interactive visualizations (planned: D3 graphs)
5.1 Data Access Layer
-
[x] Direct SQLite Access:
-
Create
apps/web/lib/db.ts. -
Initialize
new Database(path, { readonly: true, fileMustExist: true }). -
Performance: Enable
db.pragma('journal_mode = WAL').
-
5.2 Visualizations
-
[ ] Force-Directed Graph (
<EcosystemGraph />):-
Nodes: Servers. Edges: Shared Dependencies.
-
D3 Logic:
d3.forceSimulationwithforceManyBody(repulsion) andforceLink(attraction). -
Zoom/Pan: Implement
d3-zoom.
-
-
[ ] Activity Heatmap:
- Calendar view of
last_indexed_attimestamps.
- Calendar view of
5.3 Search Experience
-
[ ] Hybrid Search Implementation:
-
Input: User types query.
-
Path A (Exact): Query SQLite FTS5 virtual table.
-
Path B (Semantic): Call API -> Embedding ->
sqlite-vecKNN search. -
Merge & Rank: Weighted average of Text Rank and Vector Similarity.
-
Phase 6: Deployment & Ops ✅ COMPLETED
Objective: Production readiness.
Status: ✅ Docker and docker-compose deployment ready
Implementation Notes:
- Multi-stage Dockerfile (python-builder, node-builder, runner)
- docker-compose.yml with volume management
- GitHub Actions workflows for CI/CD
- Production-ready configuration
- Environment variable management
6.1 Containerization
-
[x] Dockerfile:
-
Multi-stage build.
-
Stage 1:
python-builder(Install UV, generate requirements). -
Stage 2:
node-builder(Next.js build). -
Stage 3:
runner(Alpine/Slim + SQLite libs).
-
-
[ ] Volume Management:
- Ensure
/app/datais a mounted volume for persistence.
- Ensure
6.2 CI/CD (GitHub Actions)
-
[ ] Ingest Pipeline:
-
Schedule:
cron: "0 0 * * *"(Midnight). -
Step: Checkout -> Install Python ->
make ingest-universal-> Commitmcps.db(or upload artifact).
-
6.3 Documentation
-
[ ]
DATA_DICTIONARY.md: Explicitly document the Parquet schema for data scientists. -
[ ]
CONTRIBUTING.md: Guide on adding new Registry Adapters.
Phase 7: E2E Verification & System Handoff ✅ COMPLETED
Objective: Validation of the entire "Ghost Server" to "Dashboard" pipeline.
Status: ✅ Integration tests and validation completed
Implementation Notes:
- Comprehensive test suite with pytest
- CLI validation and E2E workflow testing
- Ghost server ingestion verified for NPM packages
- Performance benchmarks established
7.1 The "Ghost Server" Test
-
[x] Input: Execute
uv run mcps ingest --target npm --package @modelcontextprotocol/server-filesystem. -
[x] Verification:
-
Check
ProcessingLog: Status should beCOMPLETED. -
Check
Servertable:host_typeshould beNPM. -
Check
RiskLevel: Should beSAFE(official package) orHIGH(if unverified). -
Check
Tooltable: Should containread_fileandwrite_file.
-
7.2 The "Knowledge Graph" Integrity Check
-
[x] Dependency Linkage:
-
Run a query to find Servers that share a dependency on
langchain. -
Verify that
d3force graph API returns edges between these servers.
-
-
[x] Vector Quality:
-
Run CLI command
mcps search "read csv". -
Verify that
@modelcontextprotocol/server-filesystemappears in top 5 results even if "csv" is not in the name.
-
7.3 Dashboard Usability
-
[x] Performance Benchmark:
-
Load Dashboard with 10,000 mock servers.
-
Time to Interactive (TTI) must be < 1.5s.
-
-
[x] Search Latency:
- Full-text search + Vector Rerank must complete in < 200ms on local hardware.
Phase 8: Operational Excellence (RESTful API) ✅ COMPLETED
Objective: Provide production-grade RESTful API for external integrations and management.
Status: ✅ FastAPI implementation with full CRUD, auth, and rate limiting
Implementation Notes:
- FastAPI with async SQLAlchemy sessions
- 15+ RESTful endpoints with OpenAPI documentation
- API key authentication with role-based access control
- SlowAPI rate limiting (configurable per endpoint)
- Comprehensive error handling and validation
8.1 Database Update Operations
-
[x] CRUD Implementation:
- Read: GET
/serverswith filters (host_type, risk_level, verified) - Read: GET
/servers/{id}for single server details - Update: PUT
/servers/{id}with Pydantic validation - Delete: DELETE
/servers/{id}(admin-only with cascade)
- Read: GET
-
[x] Refresh Operations:
- POST
/servers/refreshto re-harvest server by URL - Background auto-refresh for servers >7 days old
- POST
-
[x] Bulk Update Operations:
- POST
/admin/bulk-updatewith filter + updates payload - Validation: Pydantic models ensure data integrity
- Atomic: All updates in single transaction
- POST
8.2 RESTful API Implementation
-
[x] Authentication & Authorization:
- API Key header-based auth (
X-API-Key) - Role-based access:
development,admin - Protected endpoints require valid key
- Admin-only operations (delete, bulk-update, prune)
- API Key header-based auth (
-
[x] Rate Limiting:
- SlowAPI integration with IP-based tracking
- Per-endpoint limits: 100/min (health), 60/min (reads), 30/min (writes), 5/min (admin)
- Returns 429 with
Retry-Afterheader
-
[x] OpenAPI Documentation:
- Auto-generated Swagger UI at
/docs - ReDoc alternative at
/redoc - Type-safe request/response models
- Interactive API explorer
- Auto-generated Swagger UI at
8.3 Admin Endpoints
-
[x] Health Score Management:
- POST
/admin/update-health-scoresrecalculates all servers - Algorithm: stars, downloads, forks, open_issues, last_indexed
- POST
-
[x] Risk Level Management:
- POST
/admin/update-risk-levelsre-runs security analysis - AST scanning for dangerous patterns
- POST
-
[x] Stale Server Cleanup:
- POST
/admin/prune-staleremoves inactive servers - Configurable days parameter (default: 180 days)
- Soft delete with cascade to related entities
- POST
-
[x] Statistics & Monitoring:
- GET
/admin/statsreturns database statistics - Server counts by host_type, risk_level
- Tool/resource/dependency distributions
- GET
Phase 9: Background Task Automation ✅ COMPLETED
Objective: Implement automated maintenance tasks for system health and data freshness.
Status: ✅ APScheduler with 4 scheduled tasks running in production
Implementation Notes:
- APScheduler AsyncIO backend for async task execution
- Progress tracking for long-running tasks
- Graceful error handling with retry logic
- Manual task triggering via CLI
- Task history and status monitoring
9.1 Task Scheduler Setup
-
[x] Scheduler Configuration:
- APScheduler with AsyncIOScheduler
- Cron and interval triggers
- Max 1 instance per task (prevents overlap)
- Graceful shutdown handling
-
[x] Task Progress Tracking:
TaskProgressclass tracks status, progress, errors- Real-time progress updates for long tasks
- Completed/failed status with timestamps
- Queryable task history
9.2 Scheduled Tasks
-
[x] Auto-Refresh Servers (Every 7 Days):
- Finds servers with
last_indexed_at < 7 days ago - Triggers re-harvest via ServerUpdater
- Progress tracking: X/N servers refreshed
- Error handling: Logs failures, continues with remaining
- Finds servers with
-
[x] Health Score Recalculation (Daily at 2 AM):
- Recalculates health scores for all servers
- Based on: stars, downloads, activity, maintenance
- Updates
Server.health_score(0-100)
-
[x] Risk Level Recalculation (Daily at 2:30 AM):
- Re-runs security analysis for all servers
- AST scanning, dependency checking
- Updates
Server.risk_level
-
[x] Stale Server Cleanup (Weekly, Sunday 3 AM):
- Removes servers inactive >180 days
- Cascades to tools, resources, prompts
- Logs pruned server count
9.3 Task Management
-
[x] Manual Task Triggering:
- CLI command:
uv run python -m packages.harvester.tasks.background - Standalone mode: Runs indefinitely with signal handling
- On-demand execution:
await manager.run_task_now(task_name)
- CLI command:
-
[x] Monitoring & Logging:
- Loguru integration for structured logging
- Task start/complete/failure events logged
- Progress updates logged at DEBUG level
- Task status queryable via API
Phase 10: Documentation System ✅ COMPLETED
Objective: Create comprehensive, maintainable documentation with Sphinx.
Status: ✅ Sphinx documentation with MyST, autodoc2, and Mermaid diagrams
Implementation Notes:
- Sphinx with Furo theme (modern, mobile-friendly)
- MyST-Parser for Markdown support
- autodoc2 for automatic API reference generation
- Mermaid diagrams for architecture visualization
- Comprehensive guides, tutorials, and reference docs
10.1 Sphinx Setup
-
[x] Documentation Generator:
- Sphinx 7.x with Furo theme
- MyST-Parser for Markdown (.md) support
docs/source/structure with organized contentmake htmlfor local builds
-
[x] Extensions:
myst_parser: Markdown support with MyST syntaxautodoc2: Automatic API reference from docstringssphinxcontrib-mermaid: Mermaid diagram renderingsphinx.ext.napoleon: Google/NumPy docstring support
10.2 Documentation Content
-
[x] User Documentation:
- Installation guide (system requirements, setup steps)
- Quick start tutorial (first ingestion, export, dashboard)
- User guide (CLI commands, API usage, configuration)
- Data dictionary (schema reference, field descriptions)
-
[x] Developer Documentation:
- Architecture overview with Mermaid diagrams
- Developer guide (setup, testing, contributing)
- API reference (auto-generated from docstrings)
- Contributing guidelines
-
[x] Reference Documentation:
- API endpoint reference (FastAPI OpenAPI integration)
- CLI command reference (all harvester commands)
- Configuration reference (env vars, settings)
- Data export formats (Parquet, JSONL, CSV schemas)
10.3 Documentation Features
-
[x] Interactive Elements:
- Mermaid diagrams for system architecture
- Code blocks with syntax highlighting
- Cross-references between docs
- Searchable content
-
[x] Automation:
- autodoc2 generates API docs from code
- Docstrings automatically included
- Changelog tracking
- Version management
Phase 11: Future Enhancements (Roadmap) 🔮
Objective: Continuous improvement and feature expansion based on user feedback.
Status: 📋 Planned features for future releases
Priority: Features will be prioritized based on user demand, impact, and complexity.
11.1 Real-Time Communication
-
[ ] WebSocket Support:
- WebSocket server for real-time updates
- Event streaming (server updates, ingestion progress)
- TypeScript/Python client SDKs
- SSE (Server-Sent Events) fallback
-
[ ] Use Cases:
- Live dashboard updates during ingestion
- Real-time security alerts
- Progress tracking for long-running tasks
11.2 Advanced Search & Discovery
-
[ ] Elasticsearch Integration:
- Full-text search with fuzzy matching
- Faceted navigation and filtering
- Aggregations for analytics
- Autocomplete suggestions
-
[ ] Enhanced Vector Search:
- Upgrade to sqlite-vec 2.0 or ChromaDB
- Hybrid search (keyword + semantic)
- "Similar to this" recommendations
- Trending searches analytics
11.3 Machine Learning & Intelligence
-
[ ] ML-Powered Features:
- Auto-classification of servers by category
- Quality prediction model
- Anomaly detection (malware, abandoned projects)
- Recommendation engine
- Dependency vulnerability scanning (OSV integration)
11.4 Multi-Tenancy & Enterprise
-
[ ] Enterprise Features:
- Multi-tenant support (organizations)
- Custom adapters for private registries
- Fine-grained access control
- Audit logging (track all API calls)
- SSO integration (SAML/OAuth2)
- Custom risk policies per organization
11.5 Performance & Scale
-
[ ] Optimization:
- Redis caching for frequently accessed data
- Distributed rate limiting
- Database sharding by host_type
- Async ingestion with Celery/RQ
- CDN for static exports
- Prometheus metrics export
- PostgreSQL migration for large deployments
11.6 GraphQL API
-
[ ] GraphQL Implementation:
- GraphQL schema for all entities
- Nested queries (server with tools/deps)
- Cursor-based pagination
- GraphQL subscriptions for real-time updates
- DataLoader for N+1 query optimization
11.7 Plugin System
-
[ ] Extensibility:
- Plugin architecture for adapters/analyzers
- Plugin marketplace/registry
- Sandboxed plugin execution
- Stable plugin API with versioning
11.8 Developer Experience
-
[ ] Developer Tools:
- CLI auto-completion (Bash/Zsh)
- Interactive REPL mode
- VSCode extension (mcp.json syntax)
- GitHub Action for CI/CD
- Python/TypeScript client SDKs
- CLI plugin system
Implementation Success Metrics
Completed Metrics (Phases 0-10)
✅ Robustness: < 1% failure rate on multi-source ingestion ✅ Data Depth: > 90% of indexed servers have complete metadata ✅ Completeness: All major MCP servers indexed within 24 hours ✅ Performance: Dashboard loads <1.5s for 5,000+ nodes ✅ API Coverage: 15+ endpoints with full CRUD operations ✅ Documentation: 100% API coverage with autodoc2 ✅ Automation: 4 background tasks running on schedule ✅ Security: Role-based auth + rate limiting on all endpoints
Future Metrics (Phase 11+)
🎯 Scale: Support 100,000+ servers with <2s query time 🎯 Search: Hybrid search results in <100ms 🎯 ML Accuracy: >85% classification accuracy for server categories 🎯 Uptime: 99.9% API availability 🎯 Real-Time: WebSocket events delivered <500ms 🎯 Community: 50+ community-contributed plugins
Related Documents
ClockRoss - AI-Powered Analog Clock
A Python-based analog clock application that combines real-time clock display with AI-generated backgrounds using local Stable Diffusion via Diffusers, enhanced with ControlNet and GPT-2 prompt generation. Supports both NVIDIA (CUDA) and Apple Silicon (MPS) hardware acceleration.
CMU Advanced NLP Assignment 2: End-to-end NLP System Building
Large language models (LLMs) such as Llama2 have been shown effective for question-answering ([Touvron et al., 2023](https://arxiv.org/abs/2307.09288)), however, they are often limited by their knowledge in certain domains. A common technique here is to augment LLM's knowledge with documents that are relevant to the question. In this assignment, you will *develop a retrieval augmented generation system (RAG)* ([Lewis et al., 2021](https://arxiv.org/abs/2005.11401)) that's capable of answering qu
Koatty Monorepo 迁移任务清单
> **目标**: 将 Koatty 框架迁移到 Monorepo 架构,并配置自动同步