EngineeringOS MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ENGINEERINGOS_SEM_BIN | No | Path to the sem CLI for entity-level impact analysis. | |
| ENGINEERINGOS_MAP_ROOT | No | Storage root for hosted code maps. Falls back to ENGINEERINGOS_INDEX_ROOT. | |
| ENGINEERINGOS_AUDIT_LOG | No | Path to the JSONL audit log file to enable audit events. | |
| ENGINEERINGOS_INDEX_ROOT | No | Stores each repository map in a path-keyed directory outside the checkout. Required by the production entrypoint. | |
| ENGINEERINGOS_ENABLE_HSTS | No | Set to 1 to enable HSTS headers when HTTPS is guaranteed at the edge. | 0 |
| ENGINEERINGOS_LSP_ADAPTER | No | Path to an operator-owned LSP adapter executable. | |
| ENGINEERINGOS_OIDC_ISSUER | No | OpenID Connect issuer for production HTTP run. | |
| ENGINEERINGOS_OIDC_SCOPES | No | Optional OpenID Connect scopes for production HTTP run. | |
| ENGINEERINGOS_TENANT_ROOT | No | Root directory for tenant repositories in production HTTP run. | |
| ENGINEERINGOS_TEST_WORKER | No | Operator-owned sandbox worker for production HTTP run. | |
| ENGINEERINGOS_GITLEAKS_BIN | No | Path to the Gitleaks binary for secret detection. | |
| ENGINEERINGOS_TENANT_REPOS | No | Path to tenant repositories for container deployment. | |
| ENGINEERINGOS_ALLOWED_HOSTS | No | Allowed hosts for production HTTP run. | |
| ENGINEERINGOS_OIDC_AUDIENCE | No | OpenID Connect audience for production HTTP run. | |
| ENGINEERINGOS_OIDC_JWKS_URI | No | Optional OpenID Connect JWKS URI for production HTTP run. | |
| ENGINEERINGOS_APPROVAL_CLAIM | No | Name of the token claim containing approved tool names for permission tiers. | engineeringos_approvals |
| ENGINEERINGOS_MAX_SCAN_FILES | No | Maximum number of candidate files for repository-wide evidence tools. | 100000 |
| ENGINEERINGOS_SEMGREP_CONFIG | No | Semgrep rules file path or registry ruleset for SAST. | |
| ENGINEERINGOS_ALLOWED_ORIGINS | No | Optional allowed origins for production HTTP run. | |
| ENGINEERINGOS_MAX_INDEX_FILES | No | Maximum number of source files per repository for indexing. | 100000 |
| ENGINEERINGOS_RATE_LIMIT_KEYS | No | Bounds in-process limiter memory. | 10000 |
| ENGINEERINGOS_OSV_SCANNER_OFFLINE | No | Set to 1 to use a pre-downloaded local OSV database instead of querying osv.dev. | 0 |
| ENGINEERINGOS_RATE_LIMIT_PER_MINUTE | No | Per-tenant/per-subject tool-call guardrail limit. | 120 |
| ENGINEERINGOS_REQUIRE_SANDBOX_WORKER | No | Set to 0 to allow the production entrypoint to start without a sandbox worker for local development. | 1 |
| ENGINEERINGOS_LSP_DEFAULT_FORCE_WINDOWS | No | Set to 1 to force the default LSP backend on Windows. | 0 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| recent_changesC | Commits touching a repo (or one file) within a time window, with subjects and refs. |
| git_diffA | Show the stat-and-patch diff for a single Git commit, as evidence for a specific change. |
| search_codeB | Bounded text search across supported source and configuration files; returns file-and-line evidence. |
| run_testsC | Runs detected project-native test suites in a sandbox worker or disposable local copy and reports bounded evidence. |
| test_planA | Detect allow-listed test runners and report whether each required toolchain is locally available without executing project code. |
| software_inventoryA | Extract bounded cross-language dependency coordinates and Package URLs from local manifests and lockfiles without network access. |
| cyclonedx_sbomA | Generate a deterministic CycloneDX 1.6 component inventory from supported local manifests and lockfiles; performs no vulnerability enrichment. |
| search_logsC | Searches a log file for lines matching a query. |
| investigateB | Gathers evidence (recent commits + diffs, code search, log search, test results) relevant to an engineering question. Returns evidence only — it does not claim a root cause; reason over the returned evidence yourself. |
| index_codeB | Build or update the local symbol map for a repository. Raw source is not stored in the index. |
| find_symbolC | Find indexed symbols across all supported languages by name. |
| dependency_graphB | Query indexed symbol-reference edges for direct callers or callees; evidence is limited to the local index. |
| export_code_mapB | Export a strict source-free map of indexed paths, hashes, symbols, and graph edges; never includes raw source. |
| ingest_code_mapC | Validate and transactionally store a source-free code map for one tenant project. |
| map_find_symbolC | Find symbols in a hosted source-free code map without accessing a customer checkout. |
| map_dependency_graphC | Query callers or callees from a hosted source-free code map. |
| map_statusB | Report hosted source-free map counts and compare an optional local source fingerprint for staleness. |
| analyze_changeB | List files changed by a Git revision as evidence for downstream impact reasoning. |
| production_readinessB | Gather deterministic evidence for production readiness; makes no release decision. |
| security_scanC | Run the operator-configured MCP security scanner and return findings as evidence. |
| code_security_scanB | Run operator-installed Semgrep (SAST) and Gitleaks (secret detection) against the target repository from a disposable copy; each is independently optional and reports an honest fallback when not configured. |
| vulnerability_scanA | Run the operator-installed OSV-Scanner against detected dependency manifests for known-vulnerability matches. By default this queries the public osv.dev database over the network; set ENGINEERINGOS_OSV_SCANNER_OFFLINE=1 to use a pre-downloaded local database instead. |
| repo_overviewB | Gather a fast evidence-only inventory of repository shape, languages, tests, index freshness, and deployment artifacts. |
| language_profileB | Inventory languages, test files, parser backends, source size, and build ecosystems in a polyglot repository. |
| dependency_healthB | Inventory supported dependency manifests and lockfiles; does not make vulnerability claims. |
| diagnosticsA | Run detected project-native diagnostics in a disposable copy; returns evidence only and never accepts arbitrary commands. |
| lsp_symbolsC | Use the operator-configured structural symbol adapter for one repository file; returns bounded symbol evidence only. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| investigation_plan | Create a disciplined evidence-gathering plan for an engineering failure. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| capabilities |
TDQS
Scored across 27 tools
Several tools have overlapping purposes and could be confused: repo_overview vs language_profile vs dependency_health vs software_inventory all gather similar inventory evidence; find_symbol vs map_find_symbol and dependency_graph vs map_dependency_graph are nearly identical except for local vs hosted scope; security_scan vs code_security_scan overlap in security scanning. Descriptions help somewhat, but boundaries are fuzzy.
Mostly snake_case verb_noun style (e.g. index_code, search_code, run_tests), but there are notable deviations: 'investigate' and 'diagnostics' are noun-only, 'production_readiness' is a noun phrase, and 'cyclonedx_sbom' is a product name. The map_ prefixed tools add a second naming dimension.
27 tools is heavy for a code analysis server, and several pairs are near-duplicates (map_ vs local variants), suggesting over-fragmentation rather than distinct value. It pushes into the 25+ range that typically signals excessive surface area.
The surface covers a wide lifecycle: indexing, symbol search, dependency analysis, testing, security, SBOM, and map ingestion/export. Minor gaps exist (e.g. no explicit tool for retrieving a full security report or package license compliance), but most core workflows are covered.