portfolio-mcp
Reports which scanned projects have Docker deployment configuration as part of the deployment map.
Inspects git repository state for each project, including uncommitted work, missing remotes, stale repositories, and days since the last commit.
Detects GitHub presence and remotes for projects, enabling filtering and reporting by GitHub status.
Reports which scanned projects have Netlify deployment configuration as part of the deployment map.
Checks project dependencies against the npm registry using npm outdated and npm audit to find outdated packages and vulnerabilities.
Checks Python project dependencies against the PyPI registry using pip list --outdated to find outdated packages.
Reports which scanned projects have Railway deployment configuration as part of the deployment map.
Reports which scanned projects have Vercel deployment configuration as part of the deployment map.
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-mcpwhich of my projects are closest to earning money?"
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-mcp
An MCP server that reads a directory full of projects and tells you what is in there: what each one is built with, whether it is in git, where it is deployed, what has gone stale, and which ones are closest to earning money.
It is read-only. It never writes to, moves, or deletes anything it scans.
Install
npx portfolio-mcp --root /path/to/your/projectsRegister it with Claude Code:
claude mcp add --scope user portfolio \
-e PORTFOLIO_ROOT=/path/to/your/projects \
-- npx -y portfolio-mcpOr in any client that reads mcpServers:
{
"mcpServers": {
"portfolio": {
"command": "npx",
"args": ["-y", "portfolio-mcp"],
"env": { "PORTFOLIO_ROOT": "/path/to/your/projects" }
}
}
}Related MCP server: codescan-mcp
Configuration
Nothing is hardcoded. The scan root is resolved in this order:
--root <path>(or--root=<path>) on the command linethe
PORTFOLIO_ROOTenvironment variablethe process working directory
Variable | Default | Purpose |
| working directory | Directory holding the projects to scan |
| unset | Hostname or address that marks a self-hosted deployment. While unset, no |
| unset | Set to |
_archive, _backups, node_modules, .git, and dotted directories are skipped.
Tools
Inventory
Tool | What it does |
| Every project, filterable by stack, deployment status, platform, or GitHub presence |
| One project in depth: stack, dependencies, git, deployment, readiness, line count |
| Match on name, description, framework, dependency, or category |
Deployment
Tool | What it does |
| Everything grouped by platform: Vercel, Netlify, Railway, Docker, self-hosted, local-only |
| What deployment configuration one project carries, plus its git state |
| Uncommitted work, missing remotes, repos stale past 90 days, directories with no git at all |
Revenue
Tool | What it does |
| Scores one project 1 to 10 on auth, payments, landing page, deployment, API, README |
| Ranks every project, and separates the quick wins |
| Concrete next steps for one project, in priority order |
| Aggregate view: preferred frameworks, recurring stacks, strengths |
Maintenance
Tool | What it does |
|
|
| Projects sorted by days since the last commit |
What it touches
Being clear about this, because the server reads a directory you care about:
Reads only. No tool writes, moves, renames, or deletes a file.
Path containment. A project name is one directory entry. Separators,
.., absolute paths, drive letters, null bytes, and Windows device names are rejected, and the resolved path is then checked to be inside the configured root. There is no way to make it read a sibling directory.No shell. Every subprocess runs through
execFileSyncwith an argument array. Directory names are never concatenated into a command string.Subprocesses.
gitfor repository state, andnpm/piponly insideoutdated_deps.Network.
outdated_depsalone reaches the npm and PyPI registries, because that is whatnpm outdated,npm audit, andpip list --outdateddo. SetPORTFOLIO_OFFLINE=1and it refuses instead. Every other tool is local.No credentials. The server reads no tokens and sends nothing anywhere.
Scoring
revenue_scan and find_opportunities produce a 1 to 10 score from signals that
are cheap to detect: deployment configuration, an auth library, a payment library,
a landing page entry point, a README, a git remote, an API framework, then a
category multiplier. It is a triage heuristic for sorting a large directory, not a
valuation. Treat the ranking as "look at these first", not as a number that means
anything on its own.
Development
npm ci
npm run build
npm test # builds, then runs node --test
npm pack --dry-runLicense
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.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides unified project context and monitoring capabilities including project health metrics, build diagnostics, Git integration, and infrastructure validation to initialize development sessions with comprehensive project information.
- AlicenseNot gradedqualityDmaintenanceScans codebases for TODOs, FIXMEs, code complexity, file stats, and dependencies, generating a health report with a letter grade. Zero configuration required.18MIT
- AlicenseAqualityAmaintenanceScans a repository for maintenance toil (flaky tests, expiring certificates, TODO rot, dead flags, etc.) and returns a prioritized queue with a credit ledger to track who cleared what.71MIT
- AlicenseAqualityAmaintenanceVisual tech-stack inventory of any codebase: languages, frameworks, databases, AI SDKs, infra.2MIT
Related MCP Connectors
Generate SBOMs, scan vulnerabilities, and analyze dependencies from local projects or Git repos.
Screens public GitHub repos and PRs to generate risk maps, findings, and merge-readiness signals.
Generate AGENTS.md, AP2 compliance docs, checkout rules, debug playbook & MCP configs from any repo.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/NawafSheikh/portfolio-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server