pm-agent
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., "@pm-agentprioritize my backlog using RICE"
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.
PM Agent — MCP Server
An MCP server that gives Claude the tools to help a product manager make sprint decisions grounded in real data. Built for DevPulse's PM Asha: four tools that answer the questions she spends 60% of her week answering manually.
Tools
Tool | Purpose |
| Score and rank backlog items by RICE, customer signal, or a combined method. Flags stale, unestimated, blocked, and anomalous items. |
| Extract themes from customer feedback with ARR weighting and bias warnings (over-represented customers, churned signal, segment skew). |
| Compute per-engineer available capacity for the sprint, accounting for allocation %, PTO, and carry-over work. |
| Trace dependency chains, detect cycles, and flag external blockers and long chains for a set of backlog items. |
Related MCP server: BigQuery MCP Server
Prerequisites
Python 3.10+
uv(recommended) orpip
Setup
cd mcp_starter
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txtPlace the five data files in ./data/:
data/
product_backlog.json
customer_feedback.json
team_roster.json
dependency_map.json
sprint_history.jsonRunning
python server.pyThe server uses stdio transport (what Claude Desktop and Claude Code expect). It will not print anything to stdout on startup — that's normal.
DATA PATH CONTRACT
The server reads its dataset from the PM_AGENT_DATA environment variable, falling back to ./data for local development:
DATA_DIR = Path(os.environ.get("PM_AGENT_DATA", Path(__file__).parent / "data"))At grading time the evaluation harness mounts a different dataset at PM_AGENT_DATA. No IDs, names, or numbers are hardcoded — all tools compute from whatever is mounted.
Connecting to Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"pm-agent": {
"command": "python",
"args": ["/absolute/path/to/mcp_starter/server.py"],
"env": { "PM_AGENT_DATA": "/absolute/path/to/data" }
}
}
}Use absolute paths. Restart Claude Desktop after editing.
Connecting via Claude Code
claude mcp add pm-agent python /absolute/path/to/mcp_starter/server.pyTool Reference
prioritize_backlog
Score and rank backlog items by one of three methods.
Parameter | Type | Default | Description |
| string |
|
|
| string |
| Filter to |
| list |
| e.g. |
| bool |
| Flag and penalize blocked items |
| int |
| Max items returned |
Flags: STALE, UNESTIMATED, NO_CUSTOMER_SIGNAL, BLOCKED, EXECUTIVE_PRIORITY_ANOMALY, LOW_CONFIDENCE, DUPLICATE_TITLE
analyze_feedback
Extract themes from customer feedback with bias detection.
Parameter | Type | Default | Description |
| int |
| Number of top themes |
| string |
|
|
| string |
| Filter: |
| string |
| Filter: |
Bias warnings: OVER_REPRESENTED_CUSTOMER, CHURNED_CUSTOMER_SIGNAL, SEGMENT_SKEW, ARR_CONCENTRATION
assess_capacity
Per-engineer sprint capacity with three tiers: total → effective (after allocation/PTO) → available (after carry-over).
Parameter | Type | Default | Description |
| string |
| Filter to |
| list |
| e.g. |
Formula: effective = 21 × (allocation%/100) × ((10 - pto_days)/10) · available = effective - carry_over_points
map_dependencies
Trace dependency chains and surface risks.
Parameter | Type | Default | Description |
| list | required | e.g. |
| int |
| Hops to follow |
| bool |
| Include non-blocking soft deps |
Risk flags: CYCLE, EXTERNAL_NO_ETA, EXTERNAL_WITH_ETA, LONG_CHAIN
Repo Structure
mcp_starter/
├── server.py # MCP entry point
├── requirements.txt
├── olympics.json # run contract
├── README.md
├── TDL.md # Technical Decision Log
├── tools/
│ ├── __init__.py
│ ├── prioritize_backlog.py
│ ├── analyze_feedback.py
│ ├── assess_capacity.py
│ └── map_dependencies.py
└── data/ # sample data for local dev (not committed)This server cannot be installed
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
- 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/santoshkumarpuvvada92/Claude_Olympics_Round1'
If you have feedback or need assistance with the MCP directory API, please join our Discord server