portfolio-drift-mcp
Enables auditing of GitHub repositories to detect drift between portfolio records and actual repository state.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@portfolio-drift-mcpaudit my portfolio for drift"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
portfolio-drift-mcp
MCP server that wraps portfolio-drift-agent — lets LLM clients (Claude Desktop, Claude Code, custom agents) audit a portfolio of projects against GitHub conversationally instead of round-tripping through a terminal.
Why this exists
If you maintain a portfolio of projects (a resume, a profile site, an internal project tracker) the source records drift the moment the underlying repos evolve. portfolio-drift-agent audits that drift via CLI. This server exposes the same audit as MCP tools so an LLM agent can call it mid-conversation:
"Before I push this PR, audit Beacon's own record on my portfolio. If the tech stack is missing anything that just shipped, propose patches and dry-run them."
The model can call audit_single_project, read the response, then call apply_drift_patches with dry_run=true — all without a human typing a command.
Related MCP server: github-security-mcp
Tools
Tool | Args | Purpose |
|
| Full audit. Use |
|
| Single project, ~10 seconds. |
|
| HITL apply. Dry-run prints intent; pass |
Every tool returns a structured envelope:
{ "ok": true, ...payload }
// or
{ "ok": false, "error_kind": "config|network|not_found|upstream", "error": "..." }error_kind lets the calling LLM branch deterministically (re-prompt for missing config vs. retry on network vs. give up on not-found) without parsing tracebacks.
Install
pip install git+https://github.com/odanree/portfolio-drift-mcpThen register in your MCP client (Claude Code example):
claude mcp add portfolio-drift python -m drift_mcp.server \
--env ANTHROPIC_API_KEY=sk-ant-... \
--env BEACON_JWT=... \
--env BEACON_API_URL=https://beacon.danhle.net \
--env GITHUB_TOKEN=ghp_...Claude Desktop config (in ~/Library/Application Support/Claude/claude_desktop_config.json or the Windows equivalent):
{
"mcpServers": {
"portfolio-drift": {
"command": "python",
"args": ["-m", "drift_mcp.server"],
"env": {
"ANTHROPIC_API_KEY": "sk-ant-...",
"BEACON_JWT": "...",
"BEACON_API_URL": "https://beacon.danhle.net",
"GITHUB_TOKEN": "ghp_..."
}
}
}
}Environment
Var | Default | When required |
|
| Always |
| — | Audit with |
| — | All audit tools |
| (unauth) | Optional. Raises GitHub rate limit 60/hr → 5000/hr — strongly recommended for non-trivial portfolios. |
|
| Anthropic model id used by the analyzer |
|
| Project is flagged stale if its last commit is older than this |
Env is read on tool invocation, not at server start — missing config returns a structured config error rather than crashing the server.
Tests
pip install -e .[dev]
pytest13 tests cover: missing env → structured config error, unknown adapter rejection, full audit happy path with mocked Anthropic + Beacon + GitHub via respx, drift counting, single-project not_found path, dry-run vs apply branching, and patch validation. No network calls in CI.
License
MIT — see LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/odanree/portfolio-drift-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server