@ignitionai/azure-ai-search-mcp
Version:
Complete Azure AI Search MCP server with vector search, semantic search, and document management
123 lines (93 loc) • 5.5 kB
Markdown
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
## Development Commands
- **Build**: `pnpm build` - Compiles TypeScript to JavaScript using Rollup
- **Start Development**: `pnpm start` - Runs the server directly with ts-node
- **Start Production**: `pnpm start:prod` - Runs the built server from dist/
- **Inspect**: `pnpm inspect` - Runs the MCP inspector for debugging
## Architecture Overview
This is an MCP (Model Context Protocol) server that provides Azure AI Search integration. Currently implements Phase 1 of the roadmap focusing on document retrieval and search functionality.
### Current Implementation Status
** Phase 1.1 - Configuration & Authentication**
- Azure Search Documents SDK integrated (`@azure/search-documents`)
- Dual authentication support (API key + Managed Identity)
- Environment variables: `AZURE_SEARCH_ENDPOINT`, `AZURE_SEARCH_API_KEY`
** Phase 1.2 - Core Search Tools (Retrieval)**
- `search-documents` - Full-text search with filtering, faceting, highlighting
- `get-document` - Retrieve specific document by key
- `suggest` - Search suggestions using configured suggesters
- `autocomplete` - Auto-completion for partial search terms
**✅ Phase 2.1 - Index Management & Discovery**
- `list-indexes` - List all available search indexes
- `get-index-schema` - Get complete index schema and field definitions
- `get-index-statistics` - Get index usage statistics and document counts
**✅ Phase 2.2 - Dynamic Resources**
- Auto-discovery of available indexes at startup
- Dynamic resources for each index: schema, statistics, sample documents
- Resource URIs: `azure-search://indexes`, `azure-search://index/{name}/schema`, etc.
**✅ Phase 3.1 - Document Management (COMPLETE)**
- `upload-documents` - Upload/create documents (batch operations up to 1000)
- `merge-documents` - Partial update of existing documents
- `delete-documents` - Delete documents by key values (batch operations)
**✅ Phase 4.1 - Vector Search (COMPLETE)**
- `vector-search` - Pure vector similarity search using k-nearest neighbors
- `hybrid-search` - Combined text and vector search for enhanced relevance
- Support for multiple vector queries and exhaustive search modes
**✅ Phase 4.2 - Semantic Search (COMPLETE)**
- `semantic-search` - Azure AI semantic search with natural language understanding
- Semantic answers extraction from search results
- Semantic captions with highlighting support
- Integration with Azure's semantic configurations
### Core Components
- **server.ts** - Main MCP server entry point with tool registration
- **lib/azure-search-client.ts** - Azure Search client wrapper with error handling
- **tools/search-tools.ts** - Search tool implementations with validation
- **tools/index-tools.ts** - Index management tool implementations
- **resources/index-resources.ts** - Dynamic resource registration for discovered indexes
- **types.ts** - Zod schemas for Azure AI Search parameters and responses
### Key Architecture Patterns
1. **Lazy Loading**: Azure Search clients instantiated only when first accessed
2. **Client Caching**: Search clients cached per index name for efficiency
3. **Dual Authentication**: Supports both API key and DefaultAzureCredential
4. **Type Safety**: All parameters validated with Zod schemas
5. **Error Handling**: Consistent success/error response format
### Configuration
#### Environment Variables
```env
AZURE_SEARCH_ENDPOINT=https://your-service.search.windows.net
AZURE_SEARCH_API_KEY=your-api-key
```
#### Alternative: Managed Identity
```env
AZURE_SEARCH_ENDPOINT=https://your-service.search.windows.net
# No API key needed - uses DefaultAzureCredential
```
### Available Tools
#### Core Search Tools
- **search-documents** - Full-text search with filtering, faceting, highlighting
- **get-document** - Retrieve specific document by primary key
- **suggest** - Search suggestions using configured suggester with fuzzy matching
- **autocomplete** - Auto-complete partial search terms with multiple modes
#### Index Management Tools
- **list-indexes** - List all available search indexes
- **get-index-schema** - Get complete index schema and field definitions
- **get-index-statistics** - Get index usage statistics and document counts
#### Document Management Tools
- **upload-documents** - Upload/create documents (batch operations up to 1000)
- **merge-documents** - Partial update of existing documents
- **delete-documents** - Delete documents by key values (batch operations)
#### Vector Search Tools (Phase 4)
- **vector-search** - Pure vector similarity search using k-nearest neighbors
- **hybrid-search** - Combined text and vector search for enhanced relevance
#### Semantic Search Tools (Phase 4)
- **semantic-search** - Azure AI semantic search with natural language understanding
### Build System
Uses Rollup with TypeScript compilation. External dependencies are not bundled to reduce size. Some TypeScript warnings exist but don't affect functionality.
### Next Steps (Roadmap)
See `ROADMAP.md` for complete implementation plan:
- ✅ **Phase 1**: Core search and retrieval (COMPLETE)
- ✅ **Phase 2**: Index management and discovery (COMPLETE)
- ✅ **Phase 3**: Document upload/management (COMPLETE)
- ✅ **Phase 4**: Vector and semantic search (COMPLETE)
- 🎯 **Phase 5**: Advanced index operations (create/update/delete indexes)
- 📊 **Phase 6**: Analytics and performance monitoring