会议mcp服务器

展示 MCP(模型上下文协议) TypeScript中的服务器。
它揭示了:
- 工具:
UserStory-Extractor,Gherkin-Extractor,MeetingSignals-Extractor,UserStory-Synthesizer,Gherkin-Synthesizer - 资源:租户特定的会议指南+来自
data/tenants/* - 提示:可重复使用的模板可驱动一致的提取
此回购是 默认情况下为确定性 (不需要API密钥)。
- 这 *提取器* 只是确定性的。
- 这 *合成器* 可以选择使用 OpenAI兼容 如果您提供env变量,则表示聊天完成端点;它们总是支持确定性回退。
先决条件
- Node.js 20+
安装
npm install运行(stdio)--默认值
npm run dev:stdio演示(stdio)--端到端运行工具
这将运行一个小型演示客户端,生成stdio服务器,读取 examples/inputs/sample-notes.txt,调用这三个工具,并打印JSON结果。
npm run demo:stdio演示(流式HTTP)——端到端运行工具
这将运行一个小型演示客户端,在本地主机上生成HTTP服务器入口点,通过Streamable HTTP客户端传输进行连接,调用三个工具,并打印JSON结果。
npm run demo:http运行(流式HTTP)--可选
这是后续场景的第二个入口点。它绑定到 127.0.0.1.
npm run dev:http然后POST MCP JSON-RPC请求:
http://127.0.0.1:3000/mcp
MCP表面的作用
工具
提取器工具接受相同的输入形状:
{ "text": "...", "tenantId": "demo" }所有工具归还 structuredContent 形状像:
{ "ok": true, "result": { "tenantId": "demo", "...": "..." } }UserStory-Extractor
- 从以下行中提取明确的用户故事: As a I want so that . - 捕获附近的验收标准(AC: / Acceptance Criteria: +子弹)。 - 发射 gaps + followUpQuestions 当故事是缺失的领域。 - 细节: docs/tools/UserStory-Extractor.md
Gherkin-Extractor
- 提取物 Feature: / Scenario: 块和 Given/When/Then 步骤。 - 支持 And / But 继续步骤。 - 发射 nonGherkinFindings 适用于不符合Gherkin结构的线条。 - 细节: docs/tools/Gherkin-Extractor.md
MeetingSignals-Extractor
- 检测会议“信号”,如 Decision:, Action item:, Risk:, Dependency:, Open question:. - 如果 tenantId 如果提供了,它可以使用租户配置 extractionRules 从 data/tenants//signals.json. - 发射 suggestedActions 基于检测到的信号。 - 细节: docs/tools/MeetingSignals-Extractor.md
UserStory-Synthesizer
- 从简单的英语成绩单/笔记中合成用户故事。 - 支持 mode: auto (默认), deterministic, llm. - 细节: docs/tools/UserStory-Synthesizer.md
Gherkin-Synthesizer
- 从简单的英语成绩单/笔记中合成小黄瓜风格的特征/场景。 - 支持 mode: auto (默认), deterministic, llm. - 细节: docs/tools/Gherkin-Synthesizer.md
可选LLM配置(仅限合成器)
设置这些环境变量以启用LLM支持的合成:
LLM_CHAT_COMPLETIONS_URL(需要启用LLM)LLM_API_KEY(除非LLM_AUTH_MODE=none)LLM_AUTH_MODE(可选):bearer(默认)|api-key|noneLLM_MODEL(可选)LLM_EXTRA_HEADERS_JSON(可选):额外标头的JSON对象LLM_TIMEOUT_MS(可选):请求超时(毫秒)(默认值:20000)
验证说明:
LLM_AUTH_MODE必须是以下之一bearer,api-key,none.LLM_EXTRA_HEADERS_JSON必须是具有字符串值的JSON对象(例如。{"x-foo":"bar"}).- 无效值会很快失败,并出现显式的启动/工具调用错误。
OpenAI示例:
set LLM_CHAT_COMPLETIONS_URL=https://api.openai.com/v1/chat/completions
set LLM_AUTH_MODE=bearer
set LLM_API_KEY=...your key...Azure OpenAI示例(与OpenAI兼容的聊天完成):
set LLM_CHAT_COMPLETIONS_URL=https://YOUR-RESOURCE.openai.azure.com/openai/deployments/YOUR-DEPLOYMENT/chat/completions?api-version=YYYY-MM-DD
set LLM_AUTH_MODE=api-key
set LLM_API_KEY=...your key...资源(数据通道)
资源将租户文件作为MCP资源公开:
tenant:///guidance→ Markdown指导文本。
- 支持: data/tenants//guidance.md - 缺少租户/文件会返回一条友好的错误消息,其中包含所请求的 tenantId. - 细节: docs/resources/tenant-guidance.md
tenant:///signals→ JSON信号分类+可选提取规则。
- 支持: data/tenants//signals.json - 缺少租户/文件或无效的JSON返回一条友好的错误消息,其中包含请求的 tenantId. - 细节: docs/resources/tenant-signals.md
静态知识资源(回购拥有的指导):
knowledge://user-story-structure→ 用户故事结构指导。knowledge://gherkin-structure→ 小黄瓜结构指导。knowledge://mapping-guidelines→ 如何将会议文本映射到故事/场景。
- 支持: data/knowledge/* - 细节: docs/resources/knowledge-docs.md
提示
提示是可重用的消息模板,适用于希望驱动一致提取的客户端。
extract-user-stories→ 询问用户故事+接受标准+后续问题的提示。
- 细节: docs/prompts/extract-user-stories.md
extract-gherkin→ 一个提示,要求输入小黄瓜特征/场景/步骤。
- 细节: docs/prompts/extract-gherkin.md
租户数据
租户文件位于:
data/tenants//guidance.mddata/tenants//signals.json
租户样本 demo 包括在内。
租户信号提取规则
signals.json 可以可选地包括 extractionRules 控制方式 MeetingSignals-Extractor 检测该租户的信号。
- 如果
tenantId提供给工具,以及extractionRules如果存在,则使用这些规则。 - 如果规则缺失或无效,服务器将恢复其内置默认值。
图案格式:
- 普通正则表达式源字符串(使用不区分大小写的标志编译),例如。
"^\\s*(decision)\\s*[:\\-]" - 或
/.../flags形式,例如。"/^\\s*decision\\s*[:\\-]/i"
备注
- 提取逻辑是有意轻量级的(启发式+解析),以在没有API键的情况下保持repo可运行。
- 您可以选择配置与OpenAI兼容的端点,以提高合成精度,而无需更改工具契约。
