Gives Claude direct access to GitHub repository and PR screening without needing external LLM calls. The local analyzer pulls metadata, file trees, and diff data from public repos, then runs heuristic checks for dependency risks, hardcoded secrets, missing tests, CI config, and dynamic code patterns. Returns a risk score, category breakdown, findings list, and merge-readiness signal that Claude can use to answer code review questions or assess PRs before approval. Stores reports locally as JSON so you can retrieve past analyses. Works unauthenticated for public repos or accepts a GitHub token for higher rate limits. Runs over stdio for Claude Desktop and Cursor, or as a remote HTTP server with bearer token auth.
GitLumen MCP Server is a Node.js project that exposes a GitLumen-style review intelligence layer through the Model Context Protocol (MCP), so AI agents can call it as tools.
This project focuses on:
AI Agent / MCP Client
-> GitLumen MCP Server
-> GitHub public repo / PR reader
-> local risk analyzer
-> GitLumen-style report
This project intentionally does not execute onchain transactions yet and does not use Base MCP send_calls. A Base MCP custom plugin can be attached in Path 2 after this intelligence server is ready.
/pull/<number>.GITHUB_TOKEN for higher rate limits and private repositories (depending on token scope)..gitlumen-mcp/reports/*.json.gitlumen-mcp-server/
|- package.json
|- README.md
|- .env.example
|- examples/
| |- claude_desktop_config.example.json
| \- cursor_mcp.example.json
|- docs/
| |- ARCHITECTURE.md
| \- TOOLS.md
\- src/
|- index.js # MCP stdio server entrypoint
|- cli.js # CLI local test
|- doctor.js # environment checker
|- config.js
|- types.js
|- services/
| |- github.js # GitHub API + raw file loader
| |- analyzer.js # local heuristic risk engine
| |- gitlumen.js # service orchestrator
| \- reportStore.js # local report persistence
\- utils/
|- githubUrl.js
|- ids.js
\- text.js
Check Node version:
node -v
If your version is Node 18 or below, upgrade to Node 20+.
Open the project directory:
cd gitlumen-mcp-server
Install dependencies:
npm install
Copy env example:
cp .env.example .env
Fill optional values:
GITHUB_TOKEN=ghp_xxx_or_fine_grained_token
GITLUMEN_MCP_DATA_DIR=.gitlumen-mcp
GITLUMEN_MAX_FILE_BYTES=120000
For public repositories, GITHUB_TOKEN can be empty. A token is still recommended to avoid low GitHub rate limits.
npm run doctor
Expected output:
GitLumen MCP Doctor
✅ Node version: v20.x.x
✅ GITHUB_TOKEN configured: no (public unauthenticated mode)
✅ Data directory: /path/to/gitlumen-mcp-server/.gitlumen-mcp
✅ Reports directory writable: /path/to/gitlumen-mcp-server/.gitlumen-mcp/reports
npm run sample
This command generates a report from a local fixture so you can verify analyzer and report-store behavior without GitHub connectivity.
npm run screen -- https://github.com/modelcontextprotocol/typescript-sdk quick
npm run screen -- https://github.com/modelcontextprotocol/typescript-sdk/pull/1 quick
quick = fastest, fewer files
standard = balanced default
Examples:
npm run screen -- https://github.com/owner/repo standard
npm run screen -- https://github.com/owner/repo quick main
After completion, CLI prints a markdown report and saves JSON to:
.gitlumen-mcp/reports/<reportId>.json
npm run list -- 10
Take a reportId, then:
npm run report -- glr_xxxxxxxxxxxxxxxx markdown
Or full JSON:
npm run report -- glr_xxxxxxxxxxxxxxxx json
The MCP server uses stdio, so it is normally started by an MCP client instead of being run manually.
node /ABSOLUTE/PATH/TO/gitlumen-mcp-server/src/index.js
To debug MCP protocol, use MCP Inspector:
npm run inspect
Then open the Inspector URL printed in terminal.
This project also includes a Streamable HTTP transport endpoint at /mcp.
Run locally:
npm run start:http
Environment variables:
PORT=3333
HOST=0.0.0.0
MCP_AUTH_TOKEN=replace_with_a_long_random_token
MCP_AUTH_TOKEN is optional but strongly recommended for production.Authorization: Bearer <token>.Health check:
curl -s http://localhost:3333/health
Production deployment guide:
Client configuration templates (Copilot / VS Code / Codex):
.vscode/mcp.json, which is gitignored)Open Claude Desktop config.
Common location:
~/Library/Application Support/Claude/claude_desktop_config.json
%APPDATA%\Claude\claude_desktop_config.json
Add:
{
"mcpServers": {
"gitlumen": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/gitlumen-mcp-server/src/index.js"],
"env": {
"GITHUB_TOKEN": "optional_github_token_here",
"GITLUMEN_MCP_DATA_DIR": "/ABSOLUTE/PATH/TO/gitlumen-mcp-server/.gitlumen-mcp"
}
}
}
}
Replace /ABSOLUTE/PATH/TO/... with your real path.
Restart Claude Desktop.
Example prompt:
Use GitLumen to screen https://github.com/modelcontextprotocol/typescript-sdk with quick scope. Return the risk map and top findings.
Create or edit Cursor MCP config (format may vary by Cursor version):
{
"mcpServers": {
"gitlumen": {
"command": "node",
"args": ["/ABSOLUTE/PATH/TO/gitlumen-mcp-server/src/index.js"],
"env": {
"GITHUB_TOKEN": "optional_github_token_here"
}
}
}
}
Restart Cursor, then ask the agent to use GitLumen tools.
screen_repositoryScreen a repository or PR.
Input:
{
"repoUrl": "https://github.com/owner/repo",
"scope": "standard",
"output": "compact"
}
For PR:
{
"repoUrl": "https://github.com/owner/repo/pull/123",
"scope": "quick",
"output": "markdown"
}
Output modes:
compact = concise JSON for agent replies
markdown = full markdown report
json = full JSON report
get_review_reportFetch a previous report by reportId.
{
"reportId": "glr_xxxxxxxxxxxxxxxx",
"output": "markdown"
}
list_review_reportsList local reports.
{
"limit": 20
}
get_repository_structureGet repository/PR structure without generating a full risk report.
{
"repoUrl": "https://github.com/owner/repo",
"limit": 300
}
explain_gitlumen_mcp_flowExplain Path 1 flow and how Path 2 Base MCP can be attached later.
The local analyzer reads:
Then it generates signals:
Risk categories:
security
dependencies
tests
architecture
operations
maintainability
Severity:
critical
high
medium
low
info
{
"reportId": "glr_abc123...",
"risk": {
"score": 42,
"level": "medium",
"mergeReadiness": "review_required",
"categoryScores": {
"security": 24,
"dependencies": 13,
"tests": 24,
"architecture": 0,
"operations": 13,
"maintainability": 5
}
},
"summary": "The repository/PR has medium risk signals...",
"findings": [],
"decisionQuestions": [],
"recommendations": []
}
Repo/PR intelligence
Risk map
Review chapters
Decision questions
Report retrieval
Base MCP get_wallets
GitLumen quote endpoint
GitLumen prepare endpoint
Base MCP send_calls
Review credit purchase
Reward claim
Reviewer reputation
This project is intentionally standalone for Path 1 first. Later, Path 2 can read reportId and connect it with onchain payment/reward/reputation flows.
Unable to reach GitHub API or fetch failedCheck internet connection, DNS, proxy/VPN, or retry. For offline verification:
npm run sample
GitHub API 403 rate limit exceededAdd GITHUB_TOKEN in .env or MCP client config.
Only github.com repositories are supportedThis prototype does not support GitLab/Bitbucket yet. Add a new adapter in src/services/github.js or create a separate service.
Check:
args path is absolute.npm install has been run.npm run inspect.Run:
npm run doctor
Ensure .gitlumen-mcp/reports is writable.
Edit:
src/services/analyzer.js
Edit:
src/services/github.js
Edit:
src/services/gitlumen.js
Potential production direction:
screen_repository MCP tool
-> GitLumen hosted API /v1/screenings
-> GitLumen Review Intelligence Engine
-> reportId
-> get_review_report MCP tool
.env.MIT
ray0907/git-mcp-server
cyanheads/git-mcp-server
io.github.b1ff/atlassian-dc-mcp-bitbucket
io.github.b1ff/atlassian-dc-mcp-jira
com.mcparmory/atlassian-jira
aashari/mcp-server-atlassian-bitbucket