stakeholder-mcp

by okkimus

Not rated
GitHub

About

Let your AI agent have conversations with different personas on features and implementation details

Details

Author
okkimus
Categories
Productivity

Setup

Install stakeholder-mcp in your MCP client (Claude Desktop, Cursor, Windsurf, and others).

Repository: https://github.com/okkimus/stakeholder-mcp

Follow the installation instructions in the repository README, then restart your MCP client.

An MCP (Model Context Protocol) server that exposes stakeholder personas as tools for iterative product feedback. Each stakeholder represents a distinct role with a unique personality, expertise, and concerns.

Cost-sensitive?The server uses a high default token limit so models can reason about requirements and implementation. To control cost, setSTAKEHOLDER_MCP_MAX_TOKENS(seeConfiguration).

Disclaimer— This project was fully AI-generated with Cursor. There is no warranty or liability; use it at your own responsibility.

- 7 Pre-configured Stakeholders: Tech Lead, Product Manager, UX Designer, Security Engineer, DevOps Engineer, and two End User personas
- Runtime Persona Management: Create, update, and delete stakeholders at runtime
- Multi-Provider LLM Support: Uses OpenRouter for access to 100+ models (GPT-4, Claude, Gemini, Llama, etc.)
- Flexible Consultation: Query stakeholders individually or in groups (parallel or sequential mode)
- Multiple Transports: stdio (default) and HTTP/SSE support

cp .env.example .env # Edit .env and add your OpenRouter API key

Get an OpenRouter API key at:https://openrouter.ai/keys

The server uses stdio transport, which is the standard for MCP clients like Claude Desktop.

When using the MCP with Claude, Cursor, or another AI assistant, you can prompt the model to use the stakeholder tools. The model will then call the MCP (e.g.list_stakeholders,consult_stakeholder,consult_group) on your behalf.

Theexamples/full-example-language-app/directory contains a full run of the MCP in action: an AI agent (in Cursor) acts as a product manager, consults multiple stakeholders (end users, tech lead, UX designer) to refine gamified vocabulary features for a language app, records the conversations, and produces PDRs (Prompt Requirements Documents). Useful to see the end-to-end workflow and the kind of outputs you can get from a single prompt.

- "I'm planning to add a dark mode toggle to our app. Consult the relevant stakeholders (UX, product, maybe tech) and summarize their feedback before we lock the design."
- "We're considering moving our auth from email/password to OAuth-only. Get feedback from the security engineer, product manager, and one end-user persona, then give me a recommendation."

- "I've drafted a spec for the new checkout flow (see below). Run it by the product manager, UX designer, and the senior end-user persona. Use sequential mode so each can see the previous feedback."
- "Review this API design with the tech lead and DevOps engineer. Ask them about scalability and deployment concerns."

- "Before I implement this feature, list stakeholders whose expertise is relevant to [security / UX / infra], then consult them on [specific question]."
- "I want to ship a beta of our mobile app. Consult the product manager and both end-user personas on what we should include in the first release."

- "We need accessibility input. Create a stakeholder who's an accessibility consultant, then ask them to review our button and form design."

{ "tool": "list_stakeholders", "arguments": { "filter": { "expertise": "security" } } }
{ "tool": "consult_stakeholder", "arguments": { "id": "tech-lead", "prompt": "What do you think about using microservices for a simple blog?", "context": { "projectDescription": "A personal blog with ~1000 monthly visitors" } } }

Stakeholders remember the discussion (session memory)
If your agent asks a question and then a follow-up, the stakeholder does not see the first message unless you pass asession ID. Setcontext.sessionIdto a stable value for the conversation (e.g. a task id or thread id). The server will load prior consultations for that session from the database and inject them into the prompt, so the stakeholder sees the previous Q&A and can answer follow-ups in context. Use the samesessionIdfor the initial question and all follow-ups with that stakeholder.

Consult Multiple Stakeholders (tool call)

{ "tool": "create_stakeholder", "arguments": { "stakeholder": { "id": "accessibility-expert", "name": "Sam", "role": "Accessibility Consultant", "personality": { "traits": ["detail-oriented", "empathetic", "standards-focused"], "communication_style": "educational and supportive" }, "expertise": ["WCAG compliance", "screen readers", "keyboard navigation"], "concerns": ["inclusive design", "legal compliance", "user independence"] } } }

Consultations call the LLM with adefault maximum of 8192 tokensper response so stakeholders can give detailed, thoughtful feedback. You can override this in two ways:
- Environment variable— SetSTAKEHOLDER_MCP_MAX_TOKENSto the desired cap (e.g.2048or1024). The value is clamped to 128,000. Example in.env:

STAKEHOLDER_MCP_MAX_TOKENS=2048

Runtime stakeholders (created viacreate_stakeholderor overrides fromupdate_stakeholder) are persisted to a JSON file so they survive server restarts. By default the file isdata/runtime-stakeholders.json(same directory asDB_PATH). You can override the path when creating the server viaruntimeStakeholdersPathinServerConfig.

Editconfig/stakeholders.yamlto customize or add stakeholders:

stakeholders: - id: "my-stakeholder" name: "Custom Name" role: "Custom Role" model: "openai/gpt-4-turbo" # Optional: per-stakeholder model personality: traits: ["trait1", "trait2"] communication_style: "description of how they communicate" expertise: - "area 1" - "area 2" concerns: - "priority 1" - "priority 2"

You can usedifferent stakeholder personas per projectby pointing the MCP at a project-local config file. That way each repo gets its own set of stakeholders (e.g. domain experts, product roles) when you use the MCP from Cursor or another tool.

Option 1: Convention (no env vars)
If the MCP server is started with the project as the current working directory (typical when using Cursor’s project-level MCP), it will look for a config file in this order:
- ./.cursor/stakeholders.yaml(project root)
- ./config/stakeholders.yaml
- ./stakeholders.yaml

So you can add.cursor/stakeholders.yamlin your project with project-specific personas; that file will be used automatically when the MCP runs in that project.

Option 2: Explicit path via env
SetSTAKEHOLDER_MCP_CONFIG_PATHin the MCP’senvto the path of your project’s config file. Relative paths are resolved from the process working directory (usually the project root when using Cursor’s project-level MCP).
-

In your project, create.cursor/stakeholders.yamlwith the personas for that project (or putstakeholders.yamlin the project root).

In the same project, create.cursor/mcp.jsonso this project uses the stakeholder MCP with that config:

{ "mcpServers": { "stakeholder-mcp": { "command": "bun", "args": ["run", "/path/to/stakeholder-mcp/src/index.ts"], "env": { "OPENROUTER_API_KEY": "your-key-here", "STAKEHOLDER_MCP_CONFIG_PATH": ".cursor/stakeholders.yaml", "STAKEHOLDER_MCP_DB_PATH": ".cursor/data/consultations.db", "STAKEHOLDER_MCP_RUNTIME_STORE_PATH": ".cursor/data/runtime-stakeholders.json" } } } }

Replace/path/to/stakeholder-mcpwith the real path to the stakeholder-mcp repo. If you use the convention above, you can omitSTAKEHOLDER_MCP_CONFIG_PATHand only set the paths if you want consultation logs and runtime stakeholders stored under.cursor/data/for this project.

Generating a project config
Copy the format fromconfig/stakeholders.yamlin this repo, or start from a minimal file:

stakeholders: - id: "domain-expert" name: "Jamie" role: "Domain Expert" personality: traits: ["pragmatic", "user-focused"] communication_style: "clear and concise" expertise: - "your domain" concerns: - "accuracy" - "usability"

Then add or edit entries to match the roles and expertise that matter for the project.

Add to your Claude Desktop MCP config (~/Library/Application Support/Claude/claude_desktop_config.jsonon macOS):

{ "mcpServers": { "stakeholder-mcp": { "command": "bun", "args": ["run", "/path/to/stakeholder-mcp/src/index.ts"], "env": { "OPENROUTER_API_KEY": "your-key-here" } } } }

Add the server to your MCP config. User-level:Cursor Settings → MCP → Edit config(or~/.cursor/mcp.json). Project-level:.cursor/mcp.jsonin the repo root.

{ "mcpServers": { "stakeholder-mcp": { "command": "bun", "args": ["run", "/path/to/stakeholder-mcp/src/index.ts"], "env": { "OPENROUTER_API_KEY": "your-key-here" } } } }

Replace/path/to/stakeholder-mcpwith the actual path to this project.

Codex CLI (and the Codex VSCode extension) use ashared TOML configat~/.codex/config.toml. MCP servers run as local subprocesses over STDIO.
-

Create the config directory(if it doesn’t exist):

Add the stakeholder MCPto~/.codex/config.toml:

[mcp_servers.stakeholder_mcp] command = "bun" args = ["run", "/path/to/stakeholder-mcp/src/index.ts"] env = { "OPENROUTER_API_KEY" = "your-key-here" }

Replace/path/to/stakeholder-mcpwith the actual path to this repo (e.g./Users/you/repos/stakeholder-mcp). Use an absolute path so it works from any working directory.

Restart Codex(CLI session or VSCode extension) so it reloads the config.

Then in Codex you can ask things like:"List the stakeholders and consult the tech lead on using microservices for a simple blog."

# Run with watch mode bun dev # Run tests bun test # Type check bun typecheck # Test client (basic functionality) bun run examples/test-client.ts

The 1Password MCP server creates a bridge that allows MCP clients such as Codex and Kiro to manage your 1Password Environments with secure authorization prompts.

This is the 1st, easiest, and cheapest PPT, slides, presentation AI generation MCP Server in the world.

Persistent memory for any AI assistant. Zero token cost until recall. Stores memories in local SQLite, ranks by 6-factor scoring, returns results 79% smaller than JSON. Works with Claude, ChatGPT, Grok, Cursor, Windsurf, and any MCP client.

A MCP server that enables AI assistants to interact with Anki, the spaced repetition flashcard application.

Enables LLM clients to interact with macOS applications through AppleScript. Built using the @beyondbetter/bb-mcp-server library, this server provides safe, controlled execution of predefined scripts with optional support for arbitrary script execution.

An MCP server for WordPress plugin audits

Turn your AI assistant into a digital marketing hub that creates, organizes, and analyzes links and QR Codes on demand.

Connect AI clients to Cal.com scheduling through the Model Context Protocol using the hosted server at mcp.cal.com or a local instance.

Sync Calendars, Scheduling Links, AI Executive Scheduling Assistant, Unified Calendar

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.