Pm Mcp Server — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Pm Mcp Server (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A Python MCP server that gives Claude access to PM workflow data (sprints, roadmap, blockers, workload) so you can ask it questions a PM actually needs answered.
No API keys required. Runs entirely on synthetic fixture data representing a fictional product team ("Petal & Co"). Designed to be forked and connected to a real Linear or Jira workspace privately.
<img src="Demo-mcp.jpg" alt="Demo of Claude answering a sprint question using the MCP server" width="50%">
PMs spend a disproportionate amount of time context-switching: checking Linear for sprint status, Confluence for the roadmap, Slack for who's blocked. Each lookup is a tab, a search, a few seconds of reorientation.
The bigger problem is that the questions PMs ask are aggregate and cross-cutting ("what should I focus on today?", "who's overloaded?", "what's actually blocking us?") but the tools expose raw CRUD. You have to do the aggregation yourself.
This MCP server exposes PM-oriented tools to Claude so those questions get answered in one place, with actual data behind them.
Claude (Desktop or CLI)
│
│ MCP (stdio transport)
▼
pm-mcp-server (FastMCP)
│
│ loads
▼
data/fixture.json ← synthetic Petal & Co dataset
(or real Linear / Jira API in a private fork)The server runs as a local subprocess. Claude calls tools over stdio; no network, no auth for the demo.
| Tool | What Claude can ask |
|---|---|
get_current_sprint_tool | "What's in the current sprint?" / "How close are we to done?" |
get_my_issues_tool | "What's on Priya's plate right now?" |
get_blockers_tool | "What's blocking the team?" / "What should we unblock first?" |
search_issues_tool | "Find all issues related to payments" |
get_roadmap_tool | "How far along are we on each epic?" |
get_team_workload_tool | "Who has the most issues assigned?" / "Show me the Growth team's workload" |
get_velocity_tool | "What's our sprint velocity trend?" |
Requirements: Python 3.10+, uv
# Clone and enter the repo
git clone https://github.com/jackhendon/pm-mcp-server
cd pm-mcp-server
# Install dependencies
uv sync
# Test a tool directly
uv run python -c "from tools.sprints import get_current_sprint; import json; print(json.dumps(get_current_sprint(), indent=2))"
# Run the MCP inspector (requires mcp[cli])
uv run mcp dev server.pyAdd this to your claude_desktop_config.json:
{
"mcpServers": {
"pm-context": {
"command": "/Users/yourname/.local/bin/uv",
"args": ["--directory", "/path/to/pm-mcp-server", "run", "python", "server.py"]
}
}
}Note: Claude Desktop on macOS doesn't inherit your shell PATH, souvmust be an absolute path. Runwhich uvin your terminal to find it.
Config location:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonRestart Claude Desktop. You should see pm-context listed under connected tools.
claude mcp add pm-context uv run python server.py --cwd /path/to/pm-mcp-serverThe synthetic dataset represents a fictional gift-card startup's product team:
The data is rich enough that all 7 tools return genuinely interesting and differentiated results.
This repo is designed to be forked privately and connected to a real Linear or Jira workspace.
.env.example to .env and add your credentialstools/integrations/linear.py or tools/integrations/jira.py that returns data in the same shape as the fixturetools/__init__.py to route to the real integration based on DATA_SOURCE env varThe tool signatures and return shapes stay the same. Claude doesn't know or care whether the data comes from a fixture or a live API.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.