Skip to main content
Glama

NervusDB MCP Server

Official
by nervusdb
LANGUAGE_SUPPORT.md5.2 kB
# Multi-Language Parser Support ## Overview The Synapse Architect parser now supports **15 programming languages**, matching the language coverage of repomix. ## Supported Languages | # | Language | File Extensions | Status | Feature Flag | | --- | ---------- | ------------------------------------- | ----------- | -------------- | | 1 | TypeScript | `.ts`, `.tsx`, `.mts`, `.cts` | ✅ Default | Always enabled | | 2 | JavaScript | `.js`, `.jsx`, `.mjs`, `.cjs` | ✅ Default | Always enabled | | 3 | Python | `.py`, `.pyi`, `.pyw` | ✅ Default | `python` | | 4 | Go | `.go` | ✅ Default | `go` | | 5 | Rust | `.rs` | ✅ Default | `rust-lang` | | 6 | Java | `.java` | ✅ Default | `java` | | 7 | C | `.c`, `.h` | ✅ Default | `c-lang` | | 8 | C++ | `.cpp`, `.cc`, `.cxx`, `.hpp`, `.hxx` | ✅ Default | `cpp` | | 9 | C# | `.cs` | ⚙️ Optional | `csharp` | | 10 | Ruby | `.rb` | ⚙️ Optional | `ruby` | | 11 | PHP | `.php` | ⚙️ Optional | `php` | | 12 | Swift | `.swift` | ⚙️ Optional | `swift` | | 13 | Solidity | `.sol` | ⚙️ Optional | `solidity` | | 14 | CSS | `.css`, `.scss`, `.sass` | ⚙️ Optional | `css` | | 15 | Vue | `.vue` | ⚙️ Optional | `vue` | ## Language Features ### What Each Parser Extracts #### TypeScript/JavaScript - Functions, methods, classes - Interfaces, type aliases, enums - Import/export statements #### Python - Functions, classes, methods - Import statements #### Go - Functions, methods - Types, structs, interfaces - Package declarations #### Rust - Functions, structs, enums, traits - Impl blocks, modules - Use declarations #### Java - Classes, interfaces, enums - Methods - Package and import declarations #### C - Functions - Structs, enums, typedefs - Preprocessor includes #### C++ - Functions, classes, namespaces - Structs, enums - Templates, using declarations #### C# - Classes, interfaces, methods - Namespaces, using directives #### Ruby - Classes, modules, methods #### PHP - Classes, functions, methods - Namespaces, use declarations #### Swift - Classes, structs, protocols - Functions, extensions - Import declarations #### Solidity - Contracts, interfaces, libraries - Functions, modifiers, events - Structs, enums #### CSS - Selectors, media queries - Keyframes, imports #### Vue - Template, script, style sections ## Usage ### Basic Usage ```rust use synapse_parser::LanguageManager; let mut manager = LanguageManager::new(); // Auto-detect language from file extension let result = manager.parse_file("src/main.rs", source_code)?; // Or specify language explicitly let result = manager.parse_with_language( "file.txt", source_code, SupportedLanguage::Rust )?; println!("Parsed {} entities", result.entities.len()); ``` ### Enabling Languages **Default features** (8 languages): ```toml [dependencies] synapse-parser = "0.1.0" ``` **All 15 languages**: ```toml [dependencies] synapse-parser = { version = "0.1.0", features = ["all-languages"] } ``` **Custom selection**: ```toml [dependencies] synapse-parser = { version = "0.1.0", features = ["python", "go", "swift"] } ``` ## Architecture ### Design Patterns 1. **Strategy Pattern**: Each language has its own parsing strategy 2. **Lazy Loading**: Language parsers are loaded only when needed 3. **Query-based Extraction**: Uses tree-sitter queries for declarative parsing 4. **Resource Pooling**: Parsers and queries are cached for performance ### Performance - **Native Performance**: Rust + tree-sitter native libraries (3-5x faster than WASM) - **Memory Efficient**: Lazy loading and resource pooling - **Incremental Parsing**: Supports parsing individual files or batches ## Testing Run all tests: ```bash cargo test -p synapse-parser ``` Test specific language: ```bash cargo test -p synapse-parser test_cpp_parsing ``` Test with all languages enabled: ```bash cargo test -p synapse-parser --features all-languages ``` ## Adding New Languages To add support for a new language: 1. Add tree-sitter dependency to `Cargo.toml` 2. Add language enum variant in `src/language.rs` 3. Add file extension mapping in `src/ext_to_lang.rs` 4. Create query definition in `src/queries/mod.rs` 5. Create parse strategy in `src/strategies/` 6. Update `src/language_manager.rs` to load the language 7. Add tests in `tests/multi_language_test.rs` ## References - [ADR-005: Multi-Language Parser Architecture](../../docs/architecture/ADR-005-multi-language-parser-architecture.md) - [tree-sitter documentation](https://tree-sitter.github.io/) - [repomix language support](https://github.com/yamadashy/repomix)

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/nervusdb/nervusdb-mcp'

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