Skip to main content
Glama
devesh-gg

ProductNerveCenter

by devesh-gg

An MCP (Model Context Protocol) server that exposes product-management tools for AI agents. Built with the MCP Python SDK using FastMCP.

Tools

Tool

Description

prioritize_backlog

Rank backlog items using RICE, value/effort, or customer-signal scoring

analyze_feedback

Extract and rank themes from customer feedback

assess_capacity

Calculate per-engineer sprint capacity with carry-over and skill-fit checks

map_dependencies

Trace dependency chains via BFS and surface risks

Related MCP server: jt-mcp-server

Project Structure

ProductNerveCenter/
├── server.py                      # MCP server — data loading + tool wrappers
├── olympics.json                  # Evaluation agent configuration
├── tools/
│   ├── __init__.py                # Package exports
│   ├── prioritize_backlog.py      # RICE / value-effort / customer-signal scoring
│   ├── analyze_feedback.py        # Theme extraction & grouping logic
│   ├── assess_capacity.py         # Sprint capacity calculation
│   └── map_dependencies.py        # BFS dep traversal & risk analysis
├── data/
│   ├── product_backlog.json       # 35 backlog items
│   ├── customer_feedback.json     # 90 customer feedback entries
│   ├── team_roster.json           # 8 engineers across 2 squads
│   ├── dependencies.json          # Dependency graph edges
│   └── sprint_history.json        # 6 sprint history records
├── oracle_connection/
│   └── README.md                  # Discovery process documentation
├── TECHNICAL_DECISIONS.md         # Design decisions log
├── data_dictionary.md             # Field definitions for all data files
├── requirements.txt
├── agent_config.json
└── env_vars.json

Prerequisites

  • Python 3.11 or 3.12

  • pip

Setup

# Set Python version (if using pyenv)
pyenv local 3.11.11  # or 3.12.3

# Create and activate virtual environment
python3 -m venv .venv
source .venv/bin/activate

# Install dependencies
pip install -r requirements.txt

Running the Server

stdio mode (for Claude Desktop / evaluation agent)

python3 server.py

HTTP mode (for browser/network clients)

python3 server.py http 8000

This starts a Streamable HTTP server at http://127.0.0.1:8000.

Connecting to the Server

From Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "devpulse": {
      "command": "python3",
      "args": ["/full/path/to/ProductNerveCenter/server.py"],
      "env": {
        "PM_AGENT_DATA": "/full/path/to/ProductNerveCenter/data",
        "MCP_DATA_URL": "https://co-mcp-server-dev.apps-internal.lrl.lilly.com/mcp"
      }
    }
  }
}

From another MCP client (HTTP mode)

from mcp.client.streamable_http import streamablehttp_client
from mcp import ClientSession

async with streamablehttp_client("http://127.0.0.1:8000/mcp") as (read, write, _):
    async with ClientSession(read, write) as session:
        await session.initialize()
        result = await session.call_tool("prioritize_backlog", {"method": "rice"})
        print(result)

Environment Variables

Variable

Purpose

Default

PM_AGENT_DATA

Path to the data/ folder with JSON files

./data

MCP_DATA_URL

Remote MCP server URL for team roster & dependency map

https://co-mcp-server-dev.apps-internal.lrl.lilly.com/mcp

Quick Test (no remote server needed)

The server gracefully handles the remote MCP server being unreachable — it logs a warning and continues with empty roster/deps. You can run it locally right away:

source .venv/bin/activate
python3 server.py http 8000

You'll see:

[MCP] ... WARNING MCP server unreachable (...) — roster and deps will be empty

The 4 tools will still work using the local JSON files in data/.

Tool Details

prioritize_backlog

Parameter

Type

Default

Description

method

string

"value_effort"

Scoring method: "rice", "value_effort", "customer_signal"

filters

dict

null

Filter by squad, status, or tags

include_dependency_check

bool

true

Flag items with unresolved blockers

analyze_feedback

Parameter

Type

Default

Description

time_range

dict

null

{"start": "YYYY-MM-DD", "end": "YYYY-MM-DD"}

customer_tier

string

null

"enterprise", "mid_market", or "startup"

source

string

null

"support_ticket", "nps_survey", "sales_call", "user_interview"

group_by

string

"theme"

"theme", "customer", or "source"

assess_capacity

Parameter

Type

Default

Description

sprint_id

string

null

Target sprint ID (uses latest if null)

squad

string

"all"

Filter by squad name

include_carry_over

bool

true

Subtract in-progress points from capacity

check_skill_fit

bool

false

Flag skill mismatches on assigned items

map_dependencies

Parameter

Type

Default

Description

item_ids

list

null

Item IDs to trace (null = all in-progress/planned)

include_external

bool

true

Include external dependencies

max_depth

int

3

Maximum BFS traversal depth

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

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/devesh-gg/ProductNerveCenter'

If you have feedback or need assistance with the MCP directory API, please join our Discord server