利益相关者MCP服务器
一个MCP(模型上下文协议)服务器,它将利益相关者角色作为迭代产品反馈的工具。每个利益相关者都代表着一个独特的角色,具有独特的个性、专业知识和关注点。
成本敏感? 服务器使用较高的默认令牌限制,因此模型可以对需求和实现进行推理。要控制成本,请设置 STAKEHOLDER_MCP_MAX_TOKENS (参见 配置).免责声明 --这个项目完全是用Cursor人工智能生成的。没有任何保证或责任;请自行负责使用。
特性
- 7预先配置的利益相关者:技术主管、产品经理、用户体验设计师、安全工程师、DevOps工程师和两个最终用户角色
- 运行时角色管理:在运行时创建、更新和删除利益相关者
- 多提供商LLM支持:使用OpenRouter访问100多种型号(GPT-4、Claude、Gemini、Llama等)
- 灵活咨询:单独或分组查询利益相关者(并行或顺序模式)
- 多个传输:stdio(默认)和HTTP/SSE支持
快速开始
1.安装依赖项
bun install2.配置环境
cp .env.example .env
# Edit .env and add your OpenRouter API key在以下位置获取OpenRouter API密钥:https://openrouter.ai/keys
3.运行服务器
bun start服务器使用stdio传输,这是Claude Desktop等MCP客户端的标准。
MCP工具
| 工具 | 说明 |
|---|---|
list_stakeholders | 列出所有可用的人物角色,并可选择过滤 |
get_stakeholder | 获取特定利益相关者的详细信息 |
consult_stakeholder | 向利益相关者询问反馈 |
consult_group | 查询多个利益相关者(并行或顺序) |
create_stakeholder | 创建新的运行时涉众 |
update_stakeholder | 更新现有利益相关者 |
delete_stakeholder | 删除运行时涉众 |
使用示例
AI模型提示示例
当将MCP与Claude、Cursor或其他AI助手一起使用时,您可以提示模型使用利益相关者工具。然后,模型将调用MCP(例如。 list_stakeholders, consult_stakeholder, consult_group)代表你。
完整示例:语言学习应用
这 示例/完整示例语言应用程序/ 目录中包含了MCP的完整运行:一个人工智能代理(在Cursor中)充当产品经理,咨询多个利益相关者(最终用户、技术主管、用户体验设计师)以完善语言应用程序的游戏化词汇功能,记录对话,并生成PDR(提示需求文档)。有助于查看端到端的工作流程以及您可以从单个提示中获得的输出类型。
规划新功能
- *“我计划在我们的应用程序中添加一个黑暗模式切换。在锁定设计之前,咨询相关利益相关者(用户体验、产品,也许是技术)并总结他们的反馈。”*
- *“我们正在考虑将我们的身份验证从电子邮件/密码转移到仅限OAuth。从安全工程师、产品经理和一个最终用户角色那里获得反馈,然后给我一个建议。”*
审查设计或规格
- *“我已经为新的结账流程起草了一份规范(见下文)。由产品经理、用户体验设计师和高级最终用户角色运行。使用顺序模式,这样每个人都可以看到之前的反馈。”*
- *“与技术负责人和DevOps工程师一起审查API设计。向他们询问可扩展性和部署方面的问题。”*
实施前
- *“在我实现此功能之前,请列出其专业知识与\[安全/UX/infra\]相关的利益相关者,然后就\[具体问题\]咨询他们。”*
- *“我想发布我们的移动应用程序的测试版。请咨询产品经理和两个最终用户角色,了解我们应该在第一个版本中包含什么。”*
定制利益相关者
- *“我们需要无障碍输入。创建一个作为无障碍顾问的利益相关者,然后让他们审查我们的按钮和表单设计。”*
______________________________________________________________________
列出利益相关者(工具调用)
{
"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"
}
}
}利益相关者记住讨论(会话记忆)\ 如果你的代理人问了一个问题,然后跟进,利益相关者不会看到第一条消息,除非你通过 会话ID.Set context.sessionId 为对话设置一个稳定的值(例如任务id或线程id)。服务器将从数据库中加载该会话的先前咨询,并将其注入提示中,以便利益相关者看到之前的问答,并可以在上下文中回答后续问题。使用相同 sessionId 对于最初的问题以及与该利益相关者的所有后续跟进。
咨询多个利益相关者(工具调用)
{
"tool": "consult_group",
"arguments": {
"ids": ["tech-lead", "product-manager", "ux-designer"],
"prompt": "Review this feature proposal for user authentication",
"mode": "sequential",
"context": {
"artifacts": [{
"type": "spec",
"content": "Users should be able to sign in with email/password or OAuth..."
}]
}
}
}创建自定义利益相关者(工具调用)
{
"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"]
}
}
}默认利益相关者
| ID | 名称 | 角色 |
|---|---|---|
tech-lead | Alex Chen | 技术主管 |
product-manager | Sarah Miller | 产品经理 |
ux-designer | 马库斯·里维拉 | 用户体验设计师 |
security-engineer | Priya Sharma | 安全工程师 |
devops-engineer | 田中健二 | DevOps工程师 |
end-user-millennial | 约旦 | 最终用户(28岁,城市专业人士) |
end-user-senior | Margaret | 最终用户(67岁,退休教师) |
配置
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
OPENROUTER_API_KEY | 您的OpenRouter API密钥 | (LLM调用所必需) |
DEFAULT_MODEL | 默认LLM模型 | anthropic/claude-3-haiku |
STAKEHOLDER_MCP_MAX_TOKENS | 每次咨询响应的最大代币数;降低成本 | 8192 |
DB_PATH | 咨询日志的SQLite路径 | data/consultations.db |
STAKEHOLDER_MCP_CONFIG_PATH | 利益相关者路径YAML(项目特定配置) | (参见 项目特定配置) |
STAKEHOLDER_MCP_DB_PATH | 覆盖数据库路径(例如,每个项目的咨询日志) | 与 DB_PATH 默认值 |
STAKEHOLDER_MCP_RUNTIME_STORE_PATH | 运行时利益相关者的路径JSON(每个项目) | 从DB路径导出 |
STAKEHOLDER_MCP_API_KEY | HTTP身份验证 | 的API密钥(可选) |
LOG_LEVEL | 日志记录级别 | info |
控制令牌使用(最大令牌数)
咨询电话LLM与 默认最大8192个令牌 这样利益相关者就可以给出详细、周到的反馈。您可以通过两种方式覆盖此内容:
- 环境变量 --设置
STAKEHOLDER_MCP_MAX_TOKENS达到所需的上限(例如。2048或1024).该值被固定为128000。示例在.env:
STAKEHOLDER_MCP_MAX_TOKENS=2048- 根据请求 --The
consult_stakeholder和consult_group工具接受可选maxTokens论证;如果提供,它将仅覆盖该调用的默认值。
运行时利益相关者(通过创建 create_stakeholder 或覆盖 update_stakeholder)它们被持久化为JSON文件,以便在服务器重启后仍然存在。默认情况下,文件为 data/runtime-stakeholders.json (与目录相同 DB_PATH).创建服务器时,您可以通过以下方式覆盖路径 runtimeStakeholdersPath 在 ServerConfig.
定制利益相关者
编辑 config/stakeholders.yaml 自定义或添加利益相关者:
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"项目特定配置
你可以使用 每个项目的不同利益相关者角色 通过将MCP指向项目本地配置文件。这样,当您使用Cursor或其他工具的MCP时,每个仓库都会得到自己的一组利益相关者(例如领域专家、产品角色)。
选项1:约定(无环境变量)\ 如果MCP服务器以项目作为当前工作目录启动(通常在使用Cursor的项目级MCP时),它将按以下顺序查找配置文件:
./.cursor/stakeholders.yaml(项目根)./config/stakeholders.yaml./stakeholders.yaml
所以你可以添加 .cursor/stakeholders.yaml 在你的项目中,使用项目特定的角色;当MCP在该项目中运行时,该文件将自动使用。
选项2:通过env显式路径\ 集 STAKEHOLDER_MCP_CONFIG_PATH 在MCP中 env 到项目配置文件的路径。相对路径从流程工作目录(使用Cursor的项目级MCP时通常是项目根目录)解析。
示例:项目级游标MCP
- 在您的项目中,创建
.cursor/stakeholders.yaml与该项目的人物角色(或stakeholders.yaml在项目根中)。
- 在同一项目中,创建
.cursor/mcp.json因此,该项目使用具有该配置的利益相关者MCP:
{
"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"
}
}
}
}替换 /path/to/stakeholder-mcp 与利益相关者mcp回购的真正路径。如果你使用上面的约定,你可以省略 STAKEHOLDER_MCP_CONFIG_PATH 仅当您希望咨询日志和运行时利益相关者存储在以下目录下时,才设置路径 .cursor/data/ 对于这个项目。
生成项目配置\ 从以下位置复制格式 config/stakeholders.yaml 在这个仓库中,或者从一个最小的文件开始:
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"然后添加或编辑条目,以匹配对项目重要的角色和专业知识。
使用MCP兼容工具进行设置
克劳德桌面
添加到您的Claude Desktop MCP配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):
{
"mcpServers": {
"stakeholder-mcp": {
"command": "bun",
"args": ["run", "/path/to/stakeholder-mcp/src/index.ts"],
"env": {
"OPENROUTER_API_KEY": "your-key-here"
}
}
}
}光标
将服务器添加到MCP配置中。用户级别: 光标设置→ MCP → 编辑配置 (或 ~/.cursor/mcp.json).项目级别: .cursor/mcp.json 在repo根目录中。
{
"mcpServers": {
"stakeholder-mcp": {
"command": "bun",
"args": ["run", "/path/to/stakeholder-mcp/src/index.ts"],
"env": {
"OPENROUTER_API_KEY": "your-key-here"
}
}
}
}替换 /path/to/stakeholder-mcp 与这个项目的实际路径。
Codex CLI
Codex CLI(和Codex VSCode扩展)使用 共享TOML配置 在 ~/.codex/config.toml.MCP服务器作为STDIO上的本地子进程运行。
- 创建配置目录 (如果不存在):
mkdir -p ~/.codex- 添加利益相关者MCP 到
~/.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" }替换 /path/to/stakeholder-mcp 与此仓库的实际路径(例如。 /Users/you/repos/stakeholder-mcp).使用绝对路径,这样它就可以在任何工作目录中工作。
- 重新启动Codex (CLI会话或VSCode扩展),因此它会重新加载配置。
然后在Codex中,你可以问这样的问题: *“列出利益相关者,并咨询技术负责人,了解如何使用微服务创建一个简单的博客。”*
发展
# Run with watch mode
bun dev
# Run tests
bun test
# Type check
bun typecheck
# Test client (basic functionality)
bun run examples/test-client.ts许可证
麻省理工学院
