Skip to main content
Glama

Claude Context

by zilliztech
index.tsβ€’5.86 kB
import { Context, MilvusVectorDatabase, MilvusRestfulVectorDatabase, AstCodeSplitter, LangChainCodeSplitter } from '@zilliz/claude-context-core'; import { envManager } from '@zilliz/claude-context-core'; import * as path from 'path'; // Try to load .env file try { require('dotenv').config(); } catch (error) { // dotenv is not required, skip if not installed } async function main() { console.log('πŸš€ Context Real Usage Example'); console.log('==============================='); try { // 1. Choose Vector Database implementation // Set to true to use RESTful API (for environments without gRPC support) // Set to false to use gRPC (default, more efficient) const useRestfulApi = false; const milvusAddress = envManager.get('MILVUS_ADDRESS') || 'localhost:19530'; const milvusToken = envManager.get('MILVUS_TOKEN'); const splitterType = envManager.get('SPLITTER_TYPE')?.toLowerCase() || 'ast'; console.log(`πŸ”§ Using ${useRestfulApi ? 'RESTful API' : 'gRPC'} implementation`); console.log(`πŸ”Œ Connecting to Milvus at: ${milvusAddress}`); let vectorDatabase; if (useRestfulApi) { // Use RESTful implementation (for environments without gRPC support) vectorDatabase = new MilvusRestfulVectorDatabase({ address: milvusAddress, ...(milvusToken && { token: milvusToken }) }); } else { // Use gRPC implementation (default, more efficient) vectorDatabase = new MilvusVectorDatabase({ address: milvusAddress, ...(milvusToken && { token: milvusToken }) }); } // 2. Create Context instance let codeSplitter; if (splitterType === 'langchain') { codeSplitter = new LangChainCodeSplitter(1000, 200); } else { codeSplitter = new AstCodeSplitter(2500, 300); } const context = new Context({ vectorDatabase, codeSplitter, supportedExtensions: ['.ts', '.js', '.py', '.java', '.cpp', '.go', '.rs'] }); // 3. Check if index already exists and clear if needed console.log('\nπŸ“– Starting to index codebase...'); const codebasePath = path.join(__dirname, '../..'); // Index entire project // Check if index already exists const hasExistingIndex = await context.hasIndex(codebasePath); if (hasExistingIndex) { console.log('πŸ—‘οΈ Existing index found, clearing it first...'); await context.clearIndex(codebasePath); } // Index with progress tracking const indexStats = await context.indexCodebase(codebasePath); // 4. Show indexing statistics console.log(`\nπŸ“Š Indexing stats: ${indexStats.indexedFiles} files, ${indexStats.totalChunks} code chunks`); // 5. Perform semantic search console.log('\nπŸ” Performing semantic search...'); const queries = [ 'vector database operations', 'code splitting functions', 'embedding generation', 'typescript interface definitions' ]; for (const query of queries) { console.log(`\nπŸ”Ž Search: "${query}"`); const results = await context.semanticSearch(codebasePath, query, 3, 0.3); if (results.length > 0) { results.forEach((result, index) => { console.log(` ${index + 1}. Similarity: ${(result.score * 100).toFixed(2)}%`); console.log(` File: ${path.join(codebasePath, result.relativePath)}`); console.log(` Language: ${result.language}`); console.log(` Lines: ${result.startLine}-${result.endLine}`); console.log(` Preview: ${result.content.substring(0, 100)}...`); }); } else { console.log(' No relevant results found'); } } console.log('\nπŸŽ‰ Example completed successfully!'); } catch (error) { console.error('❌ Error occurred:', error); // Provide detailed error diagnostics if (error instanceof Error) { if (error.message.includes('API key')) { console.log('\nπŸ’‘ Please make sure to set the correct OPENAI_API_KEY environment variable'); console.log(' Example: export OPENAI_API_KEY="your-actual-api-key"'); } else if (error.message.includes('Milvus') || error.message.includes('connect')) { console.log('\nπŸ’‘ Please make sure Milvus service is running'); console.log(' - Default address: localhost:19530'); console.log(' - Can be modified via MILVUS_ADDRESS environment variable'); console.log(' - For RESTful API: set MILVUS_USE_RESTFUL=true'); console.log(' - For gRPC (default): set MILVUS_USE_RESTFUL=false or leave unset'); console.log(' - Start Milvus: docker run -p 19530:19530 milvusdb/milvus:latest'); } console.log('\nπŸ’‘ Environment Variables:'); console.log(' - OPENAI_API_KEY: Your OpenAI API key (required)'); console.log(' - OPENAI_BASE_URL: Custom OpenAI API endpoint (optional)'); console.log(' - MILVUS_ADDRESS: Milvus server address (default: localhost:19530)'); console.log(' - MILVUS_TOKEN: Milvus authentication token (optional)'); console.log(' - SPLITTER_TYPE: Code splitter type - "ast" or "langchain" (default: ast)'); } process.exit(1); } } // Run main program if (require.main === module) { main().catch(console.error); } export { main };

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zilliztech/claude-context'

If you have feedback or need assistance with the MCP directory API, please join our Discord server