About GlasseEnterprise MCP
GlasseEnterprise MCP is an MCP server published by GlassEnterprise in the Files category: scan one or more repositories using Tree-sitter to extract entities and relationships, then store them in Neo4j. Optionally enables a file watcher for incremental updates.
The repository has 2 stars and 0 forks, with the last commit a year ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues before depending on it in production.
Install
git clone https://github.com/GlassEnterprise/GlasseEnterprise-mcpThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about GlasseEnterprise MCP
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
MCP Code Relationship Navigator
A Model Context Protocol (MCP) server that scans one or more code repositories using Tree-sitter, extracts entities and relationships, and stores them in Neo4j. It exposes four tools:
- scan — Ingest repositories and optionally watch for incremental changes
- impact — Change impact analysis for a given file
- query — Natural-language or raw Cypher queries over the code graph
- learn — Onboarding guide with schema, examples, and validation queries
Works with Cline (VS Code) and any MCP-compatible client over stdio.
Why use this
- Build a knowledge graph of your repositories , codebase: Files, Classes, Functions, Variables
- Detect APIs provided and consumed, config usages, database tables, tests, and error messages
- Understand dependencies such as CALLS, PROVIDES_API, USES_API, QUERIES, USES_CONFIG, EMITS_ERROR
- Run NL/Cypher queries and impact analysis for safer refactors and faster navigation
Features
- Multi-language parsing via Tree-sitter: JavaScript/TypeScript, Python, Java, C#
- Include/exclude file globs and ignore patterns
- Incremental watch mode using chokidar
- Neo4j persistence with upserts (nodes and relationships)
- Deterministic NL → Cypher heuristics, plus raw Cypher passthrough with CYPHER:
- Secure Neo4j connection handling, with a dev-only TLS bypass option for self-signed certs
Requirements
- Node.js >= 18
- Neo4j (Desktop, Aura, or Docker)
- Recommended: APOC plugin enabled on Neo4j
- Note: Generic non-API entities are upserted with
apoc.merge.node(...). API nodes use plainMERGE. If APOC is unavailable, you may adaptsrc/neo4j/saveNodes.tsto use plain MERGE for all entities.
- Note: Generic non-API entities are upserted with
Optional performance/timeouts (environment variables):
NEO4J_CONNECTION_TIMEOUT_MS(default 8000)NEO4J_QUERY_TIMEOUT_MS(default 30000)NEO4J_MAX_POOL_SIZE(default 50)NODE_TLS_REJECT_UNAUTHORIZED=0(dev only; enables self-signed TLS via bolt+ssc)
Installation
cd GlassEnterprise
npm install
npm run build
Create a .env at the project root (the server loads ../.env relative to build/):
# Required
NEO4J_URI=bolt://localhost:7687
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=your-password
NEO4J_DATABASE=neo4j
# Optional
NEO4J_CONNECTION_TIMEOUT_MS=8000
NEO4J_QUERY_TIMEOUT_MS=30000
NEO4J_MAX_POOL_SIZE=50
# DEV TLS bypass (self-signed): keeps encryption but skips strict verification
# NODE_TLS_REJECT_UNAUTHORIZED=0
Manual run (for testing over stdio without a GUI client):
node build/index.js
This server speaks MCP over stdio (no HTTP listener). Use an MCP client (e.g., Cline) to call tools.
How it works (high level)
- scan
- Collects files per repository (include/exclude globs)
- Parses code with Tree-sitter to extract entities:
- File, Class, Function, Variable
- API (direction = provided | consumed), Config key usage, DatabaseTable, Test, ErrorMessage
- Builds relationships:
- CONTAINS, DECLARES, HAS_FUNCTION
- CALLS, PROVIDES_API, USES_API, QUERIES, USES_CONFIG, EMITS_ERROR
- Persists nodes and relationships to Neo4j (upserts)
- Optional watch mode applies incremental updates
- impact
- Seeds at a File node, traverses declared/contained entities and dependency-like edges for N hops, maps back to affected Files, summarizes affected files/APIs/tables/configs/errors/functions/classes/tests
- query
- Natural-language → Cypher heuristics for common intents
- Advanced templates for cycles and API-change impact
- Smarter fallbacks (API-centric, function-centric, file-centric), plus raw
CYPHER:passthrough
- learn
- Prints an onboarding guide with node labels, relationship types, validation queries, and advanced ready-to-run Cypher examples
Using with Cline (VS Code)
Method A: Cline settings UI
- Open Cline settings in VS Code
- Add an MCP server:
- Name:
GlassEnterprise - Command:
node - Arguments (update path to match your system):
["/Users/ahman/Documents/Cline/GlassEnterprise/build/index.js"] - Environment:
{ "NEO4J_URI": "bolt://localhost:7687", "NEO4J_USERNAME": "neo4j", "NEO4J_PASSWORD": "your-password", "NEO4J_DATABASE": "neo4j", "NEO4J_CONNECTION_TIMEOUT_MS": "8000", "NEO4J_QUERY_TIMEOUT_MS": "30000", "NEO4J_MAX_POOL_SIZE": "50" // For local dev with self-signed certs: // "NODE_TLS_REJECT_UNAUTHORIZED": "0" }
- Name:
- Reload Cline. You should see the tools:
scan,impact,query,learn.
Method B: Command-line test (without Cline)
# List tools
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | node build/index.js
# Call a tool (example: learn)
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"learn","arguments":{}}}' | node build/index.js
Using with other MCP clients/IDEs
Any MCP client that launches a stdio server can use this:
- Command:
node - Args:
["/absolute/path/to/GlassEnterprise/build/index.js"] - Env: same Neo4j variables as above
If your client has a JSON config, it will usually look like:
{
"mcpServers": {
"GlassEnterprise": {
"command": "node",
"args": ["/absolute/path/to/GlassEnterprise/build/index.js"],
"env": {
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_USERNAME": "neo4j",
"NEO4J_PASSWORD": "your-password",
"NEO4J_DATABASE": "neo4j"
}
}
}
}
Tool reference and examples
The server declares tools in src/index.ts.
1) scan
Description:
- Scan one or more repositories using Tree-sitter to extract entities and relationships, then store them in Neo4j. Optionally enables a file watcher for incremental updates.
Input:
paths?: string[]— absolute or relative repository roots. Default:[process.cwd()]watch?: boolean— enable chokidar watcher. Default:falseincludeGlobs?: string[]— include patterns, e.g.,["**/*.ts", "**/*.js"]excludeGlobs?: string[]— exclude patterns, e.g.,["node_modules/**"]
Examples:
- Minimal (current repo):
{} - Custom paths with watch:
{ "paths": [".", "/path/to/another/repo"], "watch": true } - Scoped by glob:
{ "includeGlobs": ["**/*.ts"], "excludeGlobs": ["**/*.test.ts", "node_modules/**"] }
Notes:
- Watch mode applies incremental updates when files change (chokidar)
- Output includes a summary of repositories, files scanned, entities, relationships
2) impact
Description:
- Change impact analysis for a file. Returns affected files/APIs/tables/tests via dependency traversal.
Input:
file: string(required) — path to file (absolute or relative to repo)repoRoot?: string(recommended) — repository root path to disambiguatedepth?: number— traversal depth (default 3)
Examples:
- Basic:
{ "file": "src/index.ts" } - With explicit repoRoot and deeper traversal:
{ "file": "src/utils/helper.ts", "repoRoot": "/abs/path/to/repo", "depth": 4 }
Output includes:
- Affected file paths
- Provided/Consumed APIs
- Database tables
- Config keys
- Error messages
- Functions and Classes touched
- Related test files
3) query
Description:
- Run a natural language query. Converts to Cypher or accepts raw
CYPHER: ...queries.
Input:
prompt: string(required)limit?: number(default 100; appended unless query already has LIMIT)
Raw Cypher passthrough:
CYPHER: MATCH (f:Function)-[:CALLS]->(g:Function) RETURN f.name, g.name LIMIT 10
Natural language templates (examples):
- Impact of a file change:
"affected files for file 'src/index.ts'" - Provided APIs in a path:
"list provided apis in path 'src'" - Consumed APIs in a path:
"show consumed apis for path 'services'" - Who calls a function:
"which functions call function 'getUser'?" - Configs used by a file:
"what configs are used in file 'src/app.ts'?"
Advanced templates:
- Circular function-call dependencies (optional path scope)
- "circular function dependencies"
- "cyclic calls in 'src'"
- Repository-level API consumption cycles
- "circular api dependencies across repositories"
- Impact of API response change for a specific endpoint
- "impact of api response change in endpoint '/api/test'"
- "impact of changing GET '/v1/users'"
Label-aware fallbacks:
- API-centric when prompt suggests API concepts
- Function-centric when discussing calls/invocations
- File-centric when path-like tokens are present
- Generic cross-label property search otherwise
Result format:
- Echoes the Cypher used and returns a JSON array of records
4) learn
Description:
- Onboarding walkthrough of the repository graph. Explains schema, common queries, and advanced analyses.
Input:
- none
Output includes:
- Node labels: Repository, File, Class, Function, Variable, API, DatabaseTable, Config, Test, ErrorMessage
- Relationship types: CONTAINS, DECLARES, HAS_FUNCTION, CALLS, PROVIDES_API, USES_API, QUERIES, USES_CONFIG, EMITS_ERROR
- Validation queries and advanced analyses (ready-to-run Cypher)
Quick start workflow
- learn
- Understand what’s in the graph and how to query it
- scan
- Ingest the current repository (optionally watch for changes)
- Example args:
{}{ "watch": true }{ "paths": ["."], "includeGlobs": ["**/*.ts"], "excludeGlobs": ["**/*.test.ts", "node_modules/**"] }
- query
- Examples:
"list provided apis in path 'src'""who calls function 'getUser'""CYPHER: MATCH (f:File) RETURN f.file LIMIT 25"
- impact
- Example:
{ "file": "src/index.ts", "repoRoot": "/absolute/repo/path", "depth": 3 }
Troubleshooting
- Neo4j credentials missing
- Ensure
NEO4J_URI,NEO4J_USERNAME,NEO4J_PASSWORD,NEO4J_DATABASEare set
- Ensure
- TLS/certificate issues (local dev)
- Set
NODE_TLS_REJECT_UNAUTHORIZED=0to allow self-signed (connection will usebolt+ssc://)
- Set
- Aura/secure usage
- The server prefers secure
bolt+s://; ensure URI/creds are correct
- The server prefers secure
- APOC not available
- Non-API entities use
apoc.merge.node; enable APOC or modifysrc/neo4j/saveNodes.tsto use plainMERGE
- Non-API entities use
- No results after scan
- Check include/exclude globs; confirm files were discovered
- Validate using
learnoutput and quick validation queries
- Large repository performance
- Scope with
includeGlobs/excludeGlobs - Increase pool size/timeouts via env vars
- Scope with
- Connection issues
- Tune
NEO4J_*timeouts/pool - Verify Neo4j is running and reachable on the specified port
- Tune
Security
- Do not commit secrets; use environment variables
- Restrict Neo4j to trusted networks
- Use strong passwords and rotate as needed
License
MIT
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.