Expo Gemini MCP Server
# Expo Gemini MCP Server
🚀 **Một Model Context Protocol (MCP) server cho tài liệu Expo với tích hợp Gemini AI**
Server này cung cấp cho các AI assistant khả năng truy cập vào tài liệu Expo cập nhật với sự hỗ trợ của Gemini AI để tăng cường kết quả tìm kiếm và tạo ra các ví dụ code chất lượng cao.
## ✨ Tính năng
- 🔍 **Tìm kiếm ngữ nghĩa**: Tìm kiếm thông minh trong tài liệu Expo sử dụng Gemini embeddings
- 🤖 **Hoàn toàn Gemini AI**: Sử dụng Gemini cho cả embeddings và text generation
- 📚 **Tài liệu đầy đủ**: Bao gồm API reference, guides, và tutorials
- 🎯 **MCP Protocol**: Tuân thủ chuẩn Model Context Protocol
- ⚡ **Tìm kiếm hybrid**: Kết hợp tìm kiếm ngữ nghĩa và từ khóa
- 🔧 **Giải thích concepts**: Giải thích chi tiết các khái niệm Expo
## 🛠 Cài đặt
### Yêu cầu hệ thống
- Node.js (v16 hoặc cao hơn)
- npm hoặc yarn
- Gemini API key (duy nhất cần thiết)
### Bước 1: Clone và cài đặt
```bash
git clone <repository-url>
cd expo-gemini-mcp-server
npm install
```
### Bước 2: Cấu hình môi trường
```bash
cp .env.example .env
```
Chỉnh sửa file `.env` và thêm Gemini API key:
```env
GEMINI_API_KEY=your_gemini_api_key_here
PORT=3000
NODE_ENV=development
```
### Bước 3: Xây dựng index tài liệu
```bash
npm run build-index
```
Lệnh này sẽ:
- Clone tài liệu Expo từ GitHub
- Xử lý các file markdown
- Tạo embeddings sử dụng OpenAI
- Lưu vào vector store
### Bước 4: Build và khởi chạy server
```bash
npm run build
npm start
```
Hoặc chạy trong development mode:
```bash
npm run dev
```
### Bước 5: Test server
```bash
npm test
```
## 🎯 Sử dụng
### MCP Tools có sẵn
#### 1. `search_expo_docs`
Tìm kiếm trong tài liệu Expo với AI enhancement
```json
{
"query": "How to use Image component in Expo?",
"maxResults": 5,
"useGemini": true
}
```
#### 2. `get_expo_examples`
Lấy code examples cho components/APIs cụ thể
```json
{
"component": "Camera",
"complexity": "intermediate"
}
```
#### 3. `explain_expo_concept`
Giải thích chi tiết các khái niệm Expo
```json
{
"concept": "Expo Router",
"audience": "beginner"
}
```
### Kết nối với AI Assistants
#### Claude Desktop
Thêm vào `claude_desktop_config.json`:
```json
{
"mcpServers": {
"expo-gemini-docs": {
"command": "node",
"args": ["/path/to/expo-gemini-mcp-server/dist/index.js"],
"env": {
"OPENAI_API_KEY": "your_key",
"GEMINI_API_KEY": "your_key"
}
}
}
}
```
#### Cursor/VS Code
Sử dụng MCP extension và cấu hình server endpoint.
## 🧠 Tích hợp Gemini AI
### Tăng cường kết quả tìm kiếm
Gemini AI sẽ:
- Đánh giá mức độ liên quan của kết quả
- Thêm tóm tắt cho mỗi kết quả
- Đề xuất topics liên quan
- Highlight thông tin quan trọng
### Tạo code examples
Gemini có thể tạo:
- Examples hoàn chỉnh và có thể chạy được
- Use cases phổ biến
- Best practices
- Cảnh báo về common pitfalls
### Giải thích concepts
Gemini điều chỉnh explanations theo:
- **Beginner**: Ngôn ngữ đơn giản, bao gồm setup steps
- **Intermediate**: Tập trung vào practical usage
- **Expert**: Chi tiết advanced, performance considerations
## 📁 Cấu trúc dự án
```
expo-gemini-mcp-server/
├── src/
│ ├── index.ts # Entry point chính
│ ├── services/
│ │ ├── GeminiService.ts # Tích hợp Gemini AI
│ │ ├── VectorStoreService.ts # Vector database
│ │ └── ExpoDocsService.ts # Logic xử lý docs
│ └── utils/
│ └── logger.ts # Logging utilities
├── scripts/
│ └── build-index.js # Script build documentation index
├── data/ # Vector store và search index
├── logs/ # Log files
├── docs-source/ # Expo documentation (cloned)
├── package.json
├── tsconfig.json
├── mcp-config.json # MCP configuration
└── README.md
```
## 🔧 Scripts có sẵn
- `npm run build`: Compile TypeScript sang JavaScript
- `npm start`: Khởi chạy server (production)
- `npm run dev`: Khởi chạy với watch mode (development)
- `npm run build-index`: Xây dựng documentation index
- `npm run update-docs`: Cập nhật docs và rebuild index
- `npm test`: Test server functionality
## 🔍 Troubleshooting
### Vector store trống
```bash
# Rebuild index
npm run build-index
```
### Gemini API errors
- Kiểm tra API key trong `.env`
- Verify quotas và billing
- Check network connectivity
### OpenAI embedding errors
- Kiểm tra API key và credits
- Rate limiting - script tự động pause
- Reduce batch size nếu cần
### Memory issues
- Tăng Node.js memory limit:
```bash
node --max-old-space-size=4096 scripts/build-index.js
```
## 🤝 Đóng góp
1. Fork repository
2. Tạo feature branch (`git checkout -b feature/amazing-feature`)
3. Commit changes (`git commit -m 'Add amazing feature'`)
4. Push to branch (`git push origin feature/amazing-feature`)
5. Tạo Pull Request
## 📄 License
Distributed under the MIT License. See `LICENSE` for more information.
## 🙏 Acknowledgments
- [Expo Team](https://expo.dev) - Cho documentation tuyệt vời
- [Google AI](https://ai.google.dev) - Cho Gemini API
- [OpenAI](https://openai.com) - Cho embedding models
- [Model Context Protocol](https://github.com/modelcontextprotocol) - Cho MCP standard
## 📞 Hỗ trợ
Có vấn đề gì? Tạo [issue](https://github.com/your-username/expo-gemini-mcp-server/issues) hoặc liên hệ qua [email](mailto:your-email@example.com).
---
**Happy coding with Expo and AI! 🚀🤖**
TDQS
Scored across 3 tools
Tools are mostly distinct: search discovers relevant docs, get_expo_examples fetches code samples, and explain_expo_concept provides conceptual overviews. There is minor overlap between search and explain for concept queries, but the descriptions make the primary intent clear.
All tool names follow a consistent verb_noun pattern: search_expo_docs, get_expo_examples, explain_expo_concept. This makes the intended action and target clear for each tool.
With only 3 tools, the server is tightly scoped to its purpose of assisting with Expo documentation, examples, and concepts. Each tool serves a distinct needed function without redundancy.
The tool set covers the primary ways an agent would interact with Expo documentation: searching, retrieving examples, and getting explanations. A minor gap is the absence of a direct 'get_document' tool for known pages, but search effectively compensates.