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.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.