portfolio-mcp
Reads a directory of projects and reports on their stack, git state, deployment targets, and monetization readiness.
README
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/projects
Register it with Claude Code:
claude mcp add --scope user portfolio \
-e PORTFOLIO_ROOT=/path/to/your/projects \
-- npx -y portfolio-mcp
Or in any client that reads mcpServers:
{
"mcpServers": {
"portfolio": {
"command": "npx",
"args": ["-y", "portfolio-mcp"],
"env": { "PORTFOLIO_ROOT": "/path/to/your/projects" }
}
}
}
Configuration
Nothing is hardcoded. The scan root is resolved in this order:
--root <path>(or--root=<path>) on the command line- the
PORTFOLIO_ROOTenvironment variable - the process working directory
| Variable | Default | Purpose |
|---|---|---|
PORTFOLIO_ROOT |
working directory | Directory holding the projects to scan |
PORTFOLIO_VPS_HOST |
unset | Hostname or address that marks a self-hosted deployment. While unset, no vps platform is ever reported |
PORTFOLIO_OFFLINE |
unset | Set to 1 to refuse the one tool that reaches package registries |
_archive, _backups, node_modules, .git, and dotted directories are skipped.
Tools
Inventory
| Tool | What it does |
|---|---|
list_projects |
Every project, filterable by stack, deployment status, platform, or GitHub presence |
get_project |
One project in depth: stack, dependencies, git, deployment, readiness, line count |
search_projects |
Match on name, description, framework, dependency, or category |
Deployment
| Tool | What it does |
|---|---|
deployment_map |
Everything grouped by platform: Vercel, Netlify, Railway, Docker, self-hosted, local-only |
check_health |
What deployment configuration one project carries, plus its git state |
git_overview |
Uncommitted work, missing remotes, repos stale past 90 days, directories with no git at all |
Revenue
| Tool | What it does |
|---|---|
revenue_scan |
Scores one project 1 to 10 on auth, payments, landing page, deployment, API, README |
find_opportunities |
Ranks every project, and separates the quick wins |
suggest_actions |
Concrete next steps for one project, in priority order |
learn_patterns |
Aggregate view: preferred frameworks, recurring stacks, strengths |
Maintenance
| Tool | What it does |
|---|---|
outdated_deps |
npm outdated, npm audit, and pip list --outdated for one project |
stale_projects |
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-run
License
MIT. See LICENSE.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。