IPMC MCP
A dependency-free MCP server for Apache Incubator PMC oversight that helps identify podlings needing attention, assess graduation readiness, and generate podling briefings by combining lifecycle data and community health signals.
README
IPMC MCP
A small MCP server for Apache Incubator PMC oversight views.
It composes:
- podling lifecycle data from
apache-podlings-mcp - community and report signals from
apache-health-mcp
It exposes opinionated Incubator-level tools to help the IPMC:
- identify podlings needing attention
- scan recent podling-level changes
- find Incubator reporting gaps
- review release visibility through a governance lens
- identify tightly-defined stalled podlings
- assess graduation readiness
- generate podling briefings
- flag mentoring intervention needs
- summarize community-health patterns across podlings
Requirements
- Python 3.12+
Install
python3 -m pip install .
For development tools:
python3 -m pip install -e .[dev]
Run
After installation, run the stdio MCP server with:
ipmc-mcp --health-source /path/to/incubator/tools/health/reports
For local development without installing first, you can still run:
PYTHONPATH=/path/to/HealthMCP/src:/path/to/PodlingsMCP python3 server.py --health-source /path/to/incubator/tools/health/reports
The server uses stdio, so it is intended to be launched by an MCP client.
Example MCP client config
{
"mcpServers": {
"ipmc": {
"command": "ipmc-mcp",
"args": [
"--health-source",
"/path/to/incubator/tools/health/reports"
]
}
}
}
The default runtime imports its source MCP libraries from installed packages:
apache-podlings-mcpapache-health-mcp
When installed with pip, these dependencies are pulled from their Git repositories. If you run server.py directly from a checkout instead, make the source packages importable with PYTHONPATH or install them first. Tool calls can still override the source data paths with podlings_source and health_source.
Configure startup defaults with command-line arguments or environment variables:
--podlings-sourceorIPMC_PODLINGS_SOURCE: optional URL or local path forpodlings.xml--health-sourceorIPMC_HEALTH_SOURCE: local path for apache-health report Markdown files
Per-tool podlings_source and health_source arguments take precedence over startup defaults. If podlings_source is unset, it defaults to the ASF podlings.xml URL. If health_source is unset, it defaults to reports.
Test
python3 -m unittest discover -s tests -v
Coverage
python3 -m coverage run -m unittest discover -s tests
python3 -m coverage report -m
Coverage is scoped to the local ipmc package so imported source MCP libraries do not dilute the report.
Architecture
See docs/architecture.md for the module layout, runtime flow, and testing structure.
Usage Examples
These examples show prompts an IPMC member or mentor could type into an MCP client.
Weekly IPMC Review Workflow
Use this when preparing for a regular Incubator oversight pass:
- "What changed across current podlings since the last IPMC review?"
- "Which podlings need IPMC attention this week, and why?"
- "Show me current podlings with reporting gaps, but keep that separate from community health concerns."
- "Which podlings have release visibility concerns that the IPMC should look at?"
- "Give me a detailed brief for the podlings that look most concerning."
This gives reviewers a short queue of what changed, what needs attention, and what evidence supports each opinion.
Mentor Checking Their Podlings
Use this when a mentor wants a fast status check before following up with podling communities:
- "Give me a focused brief for FooPodling covering reporting, releases, mentoring, and community health."
- "Does FooPodling look ready for graduation, and what evidence is missing?"
- "Which podlings appear to need mentor intervention?"
- "Show me podlings with missing mentor sign-offs or weak mentor coverage."
This keeps source facts, derived concerns, and confidence visible so mentors can decide what needs action versus clarification.
Generating a Board Summary
This server is not a board tool, but it can help assemble Incubator context for a human-written board report:
- "Summarize the main community-health themes across current podlings, with examples."
- "Which high-risk podlings may need narrative attention in the Incubator report?"
- "List reporting compliance issues separately from release-governance concerns."
- "Give me short evidence-backed briefs for the podlings most likely to be mentioned by name."
The intended output is briefing material for IPMC judgment, not text that should be copied into a board report without review.
Tools
recent_changes
Return per-podling recent deltas the IPMC should scan. This is delta-based only: unchanged/static fields are excluded.
Arguments:
podlings_source: optional URL or local file path forpodlings.xmlhealth_source: optional local reports directory for apache-health markdown reportsas_of_date: optionalYYYY-MM-DDdate for duration-sensitive viewspodling: optional podling name filterlimit: optional max number of results
reporting_gaps
Return podlings with Incubator reporting compliance gaps. Activity signals are intentionally excluded.
Arguments:
podlings_sourcehealth_sourceas_of_datepodling: optional podling name filterlimit: optional max number of resultsinclude_gaps: optional gap filter list
release_visibility
Return release-governance visibility concerns, including no releases in 12 months, release gaps of at least 6 months, and activity-without-release mismatches.
Arguments:
podlings_sourcehealth_sourceas_of_datepodling: optional podling name filterlimit: optional max number of resultsinclude_signals: optional release visibility signal filter list
stalled_podlings
Return podlings matching the strict stalled definition: low commits, low committers, low discussion, and no 12-month releases. This is a narrow subset signal, not a replacement for the watchlist.
Arguments:
podlings_sourcehealth_sourceas_of_datelimit: optional max number of results
ipmc_watchlist
Return podlings that most need IPMC attention based on combined lifecycle and health signals.
Arguments:
podlings_source: optional URL or local file path forpodlings.xmlhealth_source: optional local reports directory for apache-health markdown reportsas_of_date: optionalYYYY-MM-DDdate for duration-sensitive viewslimit: optional max number of resultsseverity_at_least: optional minimum severity filterinclude_reasons: optional reason filter list
graduation_readiness
Assess whether a podling appears ready, near ready, or not yet ready for graduation.
Arguments:
podling: required podling namepodlings_sourcehealth_sourceas_of_dateinclude_evidence: optional boolean, defaults to truestrict_mode: optional boolean
podling_brief
Return an IPMC-oriented briefing for one podling.
Arguments:
podling: required podling namepodlings_sourcehealth_sourceas_of_datefocus: optional area listbrief_format: optionalsummaryordetailed
mentoring_attention_needed
Return podlings where mentoring intervention appears necessary.
Arguments:
podlings_sourcehealth_sourceas_of_datelimit: optional max number of resultsurgency_at_least: optional minimum urgency filterinclude_causes: optional cause filter list
community_health_summary
Return an IPMC-level summary of community-health patterns across podlings.
Arguments:
podlings_sourcehealth_sourceas_of_datescope: optionalall_podlings,active_podlings, orreporting_podlingsgroup_by: optionalnone,risk_band,mentor_load, orage_bandinclude_examples: optional boolean
Defaults
- When omitted,
podlings_sourceuses--podlings-source,IPMC_PODLINGS_SOURCE, or the ASFpodlings.xmlURL. - When omitted,
health_sourceuses--health-source,IPMC_HEALTH_SOURCE, orreportsif no startup default is set. - Oversight views focus on current podlings by default.
- Health analysis prefers the freshest available window in this order:
3m,6m,12m,to-date. - Source metadata consistently exposes a
sourcefield. Health metadata also preserves the upstreamreports_dirfield for compatibility with apache-health.
Opinion Model
This server keeps source facts separate from derived opinions. Risk and readiness views are derived from:
- mentor coverage
- reporting reliability
- mentor sign-off signals
- community activity
- release visibility
- incubation duration
- participation breadth
The resulting outputs are intended to support IPMC judgment, not replace it.
Opinionated outputs include an explainability object so IPMC members can challenge the result:
source_data_used: the podlings and apache-health fields that informed the opinionreasoning: human-readable explanation of why the opinion was reachedconfidence: high, medium, or low confidence in the opinion based on source coveragemissing: source evidence that is absent or would improve the assessment
Per-podling tools attach this to podling-level judgments and supporting signals. The community-health summary attaches it to the overall summary and each derived risk theme.
推荐服务器
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 模型以安全和受控的方式获取实时的网络信息。