hana-cli
Version:
HANA Developer Command Line Interface
519 lines (397 loc) • 12.4 kB
Markdown
Access all 279 project documentation pages with full-text search capabilities built directly into the MCP Server.
The MCP Server includes a comprehensive documentation index of all project documentation, enabling AI agents to search and retrieve relevant guides, tutorials, and references without leaving the MCP interface.
- **279 Indexed Pages** - All documentation indexed and searchable
- **Fast Search** - Pre-built index enables instant searches
- **Smart Ranking** - Relevance scoring ensures best matches first
- **Category Filtering** - Browse by category (getting-started, commands, features, etc.)
- **Type Filtering** - Filter by document type (tutorial, command, api, etc.)
- **Full Content Access** - Retrieve complete page content from MCP
## Documentation Index
### Statistics
| Metric | Count |
| -------- | ------- |
| **Total Documents** | 279 |
| **Categories** | 9 |
| **Keywords Indexed** | 2,285 |
| **Build Time** | ~0.5 seconds |
| **Last Updated** | Automatically on docs changes |
### Categories
1. **Getting Started** (5 docs)
- Installation
- Configuration
- Environments
- Quick start
- Troubleshooting
2. **Commands** (80+ docs)
- Command listings A-Z
- Analysis tools (9 docs)
- Backup & recovery (5 docs)
- BTP integration (6 docs)
- Connection & auth (7 docs)
- Data tools (6 docs)
- Developer tools (13 docs)
- And more...
3. **Features** (15+ docs)
- CLI features
- API server
- Internationalization
- Output formats
- MCP integration
4. **API Reference** (10+ docs)
- HTTP endpoints
- REST API
- Swagger/OpenAPI
- Command flows
5. **Development** (20+ docs)
- Testing & QA
- Implementation guide
- Architecture
- Project structure
6. **Troubleshooting** (8 docs)
- Common issues
- Connection problems
- Performance issues
- Error solutions
7. **Examples** (50+ docs)
- Import examples
- Export examples
- Data migration
- Performance tuning
8. **Reference** (20+ docs)
- Changelog
- License
- Terminology
- Glossary
9. **Advanced** (20+ docs)
- Performance optimization
- Security deep dive
- Custom development
- Integration patterns
## MCP Tools for Documentation Access
### 1. Search Documentation (`hana_search`)
Fast full-text search across all documentation.
**Parameters:**
- `query` (required) - Search keywords (e.g., "import CSV", "connection failed")
- `category` (optional) - Limit to category (getting-started, commands, features, api-reference, development, troubleshooting, examples, reference, advanced)
- `docType` (optional) - Filter by type (tutorial, command, api, feature, troubleshooting, development, example, reference)
- `limit` (optional) - Max results (default: 10, max: 50)
**Returns:**
```json
{
"results": [
{
"title": "Import Command Guide",
"path": "02-commands/data-tools/import.md",
"category": "commands",
"docType": "command",
"relevance": 99,
"excerpt": "Import data from CSV, Excel, or TSV files...",
"keywords": ["import", "csv", "excel", "data", "load"],
"url": "https://sap-samples.github.io/hana-developer-cli-tool-example/.../import"
},
{
"title": "Data Import Examples",
"path": "03-features/examples/import-examples.md",
"category": "examples",
"docType": "example",
"relevance": 89,
"excerpt": "Real-world examples of importing data from various sources...",
"keywords": ["import", "examples", "csv", "scenarios"],
"url": "https://..."
}
],
"total": 12,
"partial": false
}
```
**Usage Examples:**
```json
// Search all documentation
{
"query": "import CSV"
}
// Search specific category
{
"query": "connection failed",
"category": "troubleshooting"
}
// Search by document type
{
"query": "how to import",
"docType": "tutorial"
}
// Limit results
{
"query": "performance",
"limit": 5
}
// Advanced search
{
"query": "import data validation",
"category": "commands",
"docType": "command",
"limit": 10
}
```
Retrieve full content of a specific documentation page.
**Parameters:**
- `path` (required) - Document path from search results (e.g., "02-commands/data-tools/import.md")
**Returns:**
```json
{
"path": "02-commands/data-tools/import.md",
"title": "Import Command",
"category": "commands",
"docType": "command",
"content": "# Import Command\n\n[Full markdown content...]",
"headings": [
{ "level": 1, "text": "Import Command" },
{ "level": 2, "text": "Overview" },
{ "level": 2, "text": "Parameters" },
{ "level": 2, "text": "Examples" },
{ "level": 2, "text": "Error Handling" }
],
"links": [
{ "text": "Data Tools", "url": "../data-tools/" },
{ "text": "Examples", "url": "./import-examples.md" }
],
"url": "https://sap-samples.github.io/hana-developer-cli-tool-example/.../import"
}
```
**Usage:**
```json
// Get full documentation
{
"path": "02-commands/data-tools/import.md"
}
```
Documentation categories are now available as an MCP resource at `hana://docs/categories` rather than as a tool, keeping the tool list concise.
Similarly, documentation statistics are available as a resource at `hana://docs/statistics`.
Overview of documentation status and metrics.
**Parameters:** None
**Returns:**
```json
{
"totalDocuments": 279,
"categories": 9,
"keywordsIndexed": 2285,
"categories": [
{ "name": "Getting Started", "count": 5 },
{ "name": "Commands", "count": 82 },
{ "name": "Features", "count": 15 },
{ "name": "API Reference", "count": 10 },
{ "name": "Development", "count": 20 },
{ "name": "Troubleshooting", "count": 8 },
{ "name": "Examples", "count": 52 },
{ "name": "Reference", "count": 22 },
{ "name": "Advanced", "count": 25 }
],
"lastIndexed": "2024-02-18T10:30:00Z",
"indexSize": "3.2 MB",
"website": "https://sap-samples.github.io/hana-developer-cli-tool-example/"
}
```
Results are ranked by relevance using this scoring:
1. **Exact Title Match** - 100 points
2. **Title Contains Query** - 50 points
3. **Title Word Match** - 20 points per word
4. **Keyword Match** - 15 points per keyword
5. **Exact Keyword Match** - 30 points
6. **Excerpt Contains Word** - 5 points per word
7. **Heading Match** - 10 points per heading
8. **Category Match** - 15 points
Results are sorted by score (highest first).
### Example Ranking
```bash
Query: "import CSV"
Document 1: "Import Command"
- Title contains "import" (+20)
- Keywords include "import", "csv" (+30)
- Excerpt mentions both (+10)
- Total: 60 ← Ranked #1
Document 2: "Data Import Examples"
- Title contains "import" (+20)
- Keywords include "import" (+15)
- Excerpt matches (+5)
- Total: 40 ← Ranked #2
Document 3: "CSV File Format"
- Title contains "csv" (+20)
- Keywords include "csv" (+15)
- Total: 35 ← Ranked #3
```
## Usage Patterns
### Pattern 1: Search and Read
```typescript
// Step 1: Search
const results = await mcpTool('hana_search', {
query: 'how to connect to HANA database',
limit: 5
});
// Step 2: Read best result
const fullDoc = await mcpTool('hana_get_doc', {
path: results[0].path
});
// Step 3: Extract relevant sections
const setup = fullDoc.content.match(/
const params = fullDoc.content.match(/
```
```typescript
// Step 1: List categories
const categories = await mcpResource('hana://docs/categories');
// Step 2: Find category of interest
const commands = categories.find(c => c.name === 'Commands');
// Step 3: Search within category
const results = await mcpTool('hana_search', {
query: 'data validation',
category: 'commands'
});
// Step 4: Read relevant docs
for (const result of results) {
const doc = await mcpTool('hana_get_doc', { path: result.path });
}
```
```typescript
// Step 1: Search troubleshooting docs
const issues = await mcpTool('hana_search', {
query: 'connection timeout',
category: 'troubleshooting',
limit: 5
});
// Step 2: Read troubleshooting guide
const guide = await mcpTool('hana_get_doc', {
path: issues[0].path
});
// Step 3: Extract solutions
const solutions = guide.content.match(/
```
```typescript
// Step 1: Get command examples
const examples = await mcpTool('hana_search', {
query: 'import command',
docType: 'command',
limit: 1
});
// Step 2: Read full command guide
const commandDoc = await mcpTool('hana_get_doc', {
path: examples[0].path
});
// Step 3: Extract parameters and examples
const paramSection = commandDoc.content.match(/
const examplesSection = commandDoc.content.match(/
```
The documentation index is built automatically from all markdown files in the `docs/` directory.
**Build on demand:**
```bash
npm run build:docs-index
```
**Build generates:**
- `mcp-server/docs-index.json` - Pre-built searchable index
- Metadata for all 279 pages
- Keywords and headings extracted
- Relevance weights calculated
If you add or update documentation:
```bash
npm run build:docs-index
cd mcp-server
npm run build
```
```json
{
"version": "1.0.0",
"lastIndexed": "2024-02-18T10:30:00Z",
"documents": [
{
"path": "02-commands/data-tools/import.md",
"title": "Import Command",
"category": "commands",
"docType": "command",
"keywords": ["import", "csv", "data", "load", "etl"],
"excerpt": "Import data from CSV, Excel...",
"headings": [
{ "level": 1, "text": "Import Command" },
{ "level": 2, "text": "Overview" }
],
"content": "Full markdown content here..."
}
]
}
```
```bash
User: "How do I import data?"
Agent: Calls hana_search("import data")
System: Returns top 5 results with excerpts
Agent: Reads most relevant result
Agent: Confidence in usage
Agent: Calls hana_import with correct parameters
Success!
```
### Documentation-First Workflow
```bash
1. **Discover** - Search documentation
2. **Learn** - Read full guides
3. **Understand** - Get examples and parameters
4. **Execute** - Run commands correctly
5. **Validate** - Verify results with interpretation
```
## Benefits
### For Agents
✅ **Self-contained knowledge** - All docs available in MCP
✅ **No external lookups** - No need to leave MCP interface
✅ **Fast search** - Pre-built index for instant results
✅ **Context-aware** - Relevance ranking ensures best matches
✅ **Complete content** - Full documentation pages available
### For Users
✅ **Comprehensive help** - 279 pages at your fingertips
✅ **Quick reference** - Search and read without leaving IDE
✅ **Always current** - Documentation stays in sync
✅ **Offline accessible** - Works without internet
✅ **Integrated learning** - Learn while using commands
## Troubleshooting Documentation Search
### Issue: No Results
**Cause:** Search keywords don't match documents
**Solution:**
1. Try different keywords
2. Browse categories first
3. Use general terms
4. Check documentation exists
### Issue: Too Many Results
**Cause:** Search terms too general
**Solution:**
1. Add more keywords
2. Use category filter
3. Use docType filter
4. Increase relevance threshold
### Issue: Wrong Results
**Cause:** Relevance scoring doesn't match intent
**Solution:**
1. Add more specific keywords
2. Use category/type filters
3. Review top 3-5 results
4. Try alternative search terms
## Next Steps
- **[Features Overview](./features.md)** - All MCP capabilities
- **[Discovery Tools](./discovery-tools.md)** - Finding commands
- **[Advanced Features](./advanced-features.md)** - Workflows and interpretation
- **[Main Documentation Index](./index.md)** - Overview of all features