需求管理建议服务

一个基于模型上下文协议(MCP)的服务,提供来自Jama Software的《需求管理与可追溯性基础指南》等权威来源的需求管理最佳实践指导。

  • by arthurfantaci
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 arthurfantaci/requirements-advisor

使用说明

需求顾问MCP服务器

MCP(模型上下文协议)服务器,为Jama Softare的“需求管理和可追溯性基本指南”中的需求管理最佳实践提供专家指导。未来的版本将添加INCOSE指南和EARS文档中的最佳实践。

特性

  • FastMCP服务器:具有流式HTTP传输的远程MCP服务器,与任何LLM兼容
  • 矢量搜索:需求管理指导的语义搜索
  • 多源:支持多个权威来源(Jama Guide、INCOSE、EARS)
  • Voyage AI嵌入:针对技术内容优化的高质量嵌入
  • Docker就绪:容器化,便于部署
  • 抽象层:交换嵌入提供程序或矢量存储,无需更改代码

快速开始

先决条件

  • Docker和Docker Compose
  • Voyage AI API键(在这里买一个)
  • 内容文件(JSONL格式) content/ 目录

1.克隆和配置

cd requirements-advisor

# Create environment file
cp .env.example .env

# Edit .env and add your Voyage API key
nano .env  # or use your preferred editor

2.添加内容

将您抓取的内容放在 content/ 目录:

  • requirements_management_guide.jsonl -Jama Guide(来自Jama导轨刮刀)
  • incose_gwr.jsonl -INCOSE指南(未来)
  • ears_notation.jsonl -EARS文件(未来)

3.构建和运行

# Build the container
docker compose build

# Ingest content into vector store
docker compose run --rm ingestion

# Start the server
docker compose up -d

# Check logs
docker compose logs -f mcp-server

MCP服务器现在正在运行 http://localhost:8000/mcp


部署场景

场景A:Jama高管演示

目标:快速演示MCP服务器功能

选项1:本地演示(推荐给高管)

会议期间在笔记本电脑上运行:

# Ensure content is ingested
docker compose run --rm ingestion

# Start server
docker compose up

# Server available at http://localhost:8000/mcp

连接Claude Desktop或任何兼容MCP的客户端(请参阅下面的“连接客户端”)。

选项2:云演示(可共享链接)

部署到云提供商以获取持久演示URL:

铁路(最简单)

# Install Railway CLI
npm install -g @railway/cli

# Login and deploy
railway login
railway init
railway up

# Set environment variables in Railway dashboard
# Get public URL from Railway

渲染

# Create render.yaml
# Push to GitHub
# Connect repo in Render dashboard
# Set VOYAGE_API_KEY in environment

AWS/GCP/Azure

# Build and push to container registry
docker build -t requirements-advisor .
docker tag requirements-advisor:latest <your-registry>/requirements-advisor:latest
docker push <your-registry>/requirements-advisor:latest

# Deploy to ECS/Cloud Run/Container Apps

对于任何云部署,您都需要:

  1. 保留ChromaDB卷或迁移到受管向量存储
  2. 集 VOYAGE_API_KEY 作为环境变量/秘密
  3. 配置适当的网络/防火墙规则

场景B:笔记本电脑的本地开发

目标:在本地运行所有内容以进行开发和测试

使用Docker(推荐)

# 1. Start everything
docker compose up

# 2. In another terminal, test the search
docker compose exec mcp-server python -m requirements_advisor.cli test-search "how to write requirements"

# 3. Make changes and rebuild
docker compose up --build

使用UV(无Docker)

# 1. Install UV if not already installed
curl -LsSf https://astral.sh/uv/install.sh | sh

# 2. Create virtual environment and install dependencies
uv sync

# 3. Set up environment
cp .env.example .env
# Edit .env with your VOYAGE_API_KEY

# 4. Ingest content
uv run requirements-advisor ingest

# 5. Start server
uv run requirements-advisor serve

# 6. Or run directly with Python
source .venv/bin/activate
python -m requirements_advisor.cli serve

使用pip(传统)

# 1. Create virtual environment
python -m venv .venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate

# 2. Install package
pip install -e .

# 3. Configure and run
cp .env.example .env
# Edit .env
requirements-advisor ingest
requirements-advisor serve

连接MCP客户端

克劳德桌面版

添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上):

{
  "mcpServers": {
    "requirements-advisor": {
      "url": "http://localhost:8000/mcp"
    }
  }
}

重新启动Claude Desktop以进行连接。

克劳德代码

# Add the MCP server
claude mcp add requirements-advisor --url http://localhost:8000/mcp

其他MCP客户端

任何兼容MCP的客户端都可以通过Streamable HTTP传输连接到:

http://localhost:8000/mcp

对于远程部署,请替换 localhost:8000 使用您的服务器URL。


MCP服务器规范

服务器元数据

财产 价值
名字 requirements-advisor
运输 流式HTTP(/mcp 端点)
描述 需求管理最佳实践的专家指导。提供来自权威来源的答案,包括Jama Software的《需求管理基本指南》、INCOSE指南和EARS符号。

工具

此服务器公开了4个工具。未提供任何资源或提示。

search_requirements_guidance

搜索需求管理最佳实践和指导。

参数 类型 必填 默认 说明
query string 是 - 关于需求管理的自然语言问题
top_k integer 没有 5 要返回的结果数(1-10)
source string 没有 null 按来源筛选: "jama_guide", "incose",或 "ears"
include_images boolean 没有 true 在响应中包含相关图像

退货: 相关指导摘录列表,包括源引用和可选图像。

用途: 编写要求、可追溯性、验证/确认、监管合规性、系统工程、行业特定实践(医疗、汽车、航空航天)。


get_definition

获取需求管理术语或缩写词的定义。

参数 类型 必填 默认 说明
term string 是 - 要定义的术语或缩写

退货: 定义和来源归因。

用途: SRS、EARS、可追溯性、V&V、RTM和其他需求管理术语等术语。


list_available_topics

列出知识库中可用的主题和来源。

参数 类型 必填 默认 说明
(无) - - - -

退货: 可用主题、来源和文档数的摘要。

用途: 在搜索之前了解可用的指导。


get_best_practices

获取特定需求管理主题的最佳实践。

参数 类型 必填 默认 说明
topic string 是 - 获取最佳实践的主题
include_images boolean 没有 true 在响应中包含相关图像

退货: 最佳实践,包括解释、源引用和可选图像。

用途: 主题包括编写需求、可追溯性、验证、变更管理、法规遵从性、敏捷需求。


查询示例

"How do I write good functional requirements?"
"What is requirements traceability and why does it matter?"
"Best practices for medical device requirements"
"Define EARS notation"
"What are non-functional requirements?"

CLI命令

# Start the MCP server
requirements-advisor serve [--host 0.0.0.0] [--port 8000]

# Ingest content into vector store
requirements-advisor ingest [--content-dir ./content] [--clear]

# Show configuration and status
requirements-advisor info

# Test a search query
requirements-advisor test-search "your query here" [--top-k 5]

项目结构

requirements-advisor/
├── pyproject.toml              # Python package configuration
├── Dockerfile                  # Container image definition
├── docker-compose.yml          # Multi-container orchestration
├── .env.example                # Environment template
├── src/requirements_advisor/
│   ├── __init__.py
│   ├── cli.py                  # Typer CLI commands
│   ├── config.py               # Pydantic settings
│   ├── logging.py              # Loguru logging configuration
│   ├── server.py               # FastMCP server + tools
│   ├── embeddings/
│   │   ├── base.py             # Abstract interface
│   │   └── voyage.py           # Voyage AI implementation
│   ├── vectorstore/
│   │   ├── base.py             # Abstract interface
│   │   └── chroma.py           # ChromaDB implementation
│   ├── images/
│   │   ├── base.py             # Image models (CachedImage, ImageIndex)
│   │   └── cache.py            # Image fetching and caching
│   └── ingestion/
│       └── pipeline.py         # Content ingestion
├── tests/                      # Test suite
│   ├── conftest.py             # Pytest fixtures
│   └── test_*.py               # Test modules
├── content/                    # JSONL content files
│   └── requirements_management_guide.jsonl
└── data/                       # Persistent data (gitignored)
    ├── chroma/                 # Vector store
    └── images/                 # Cached images

配置

所有配置均通过环境变量(或 .env 文件):

变量 必填 默认 描述
VOYAGE_API_KEY ✅ - Voyage AI API键
VOYAGE_MODEL voyage-context-3 嵌入模型(情境化)
VOYAGE_BATCH_SIZE 20 每个嵌入API调用的文本
VECTOR_STORE_TYPE chroma 矢量存储后端
VECTOR_STORE_PATH ./data/chroma 本地存储路径
COLLECTION_NAME requirements_guidance 收藏名称
CONTENT_DIR ./content 内容文件位置
IMAGE_CACHE_PATH ./data/images 图像缓存目录
IMAGE_MAX_DIMENSION 1024 最大图像尺寸(像素)
IMAGE_QUALITY 85 JPEG压缩质量
IMAGE_FETCH_TIMEOUT 30 图像获取超时(秒)
HOST 0.0.0.0 服务器绑定主机
PORT 8000 服务器绑定端口
LOG_LEVEL INFO 日志记录级别
LOG_JSON false JSON日志输出格式

未来的增强功能

  • []Qdrant矢量存储支持远程/托管部署
  • []其他嵌入提供商(OpenAI、Cohere)
  • []INCOSE编写要求内容指南
  • []EARS符号文档
  • []Kubernetes部署的Helm chart
  • []身份验证/API密钥支持
  • []使用情况分析和反馈

故障排除

“未设置VOYAGE_API_KEY”

  • 确保 .env 存在具有有效API密钥的文件
  • 检查密钥已导出: echo $VOYAGE_API_KEY

“矢量存储中没有文档”

  • 跑步摄入: docker compose run --rm ingestion
  • 检查内容目录是否有JSONL文件

客户端“连接被拒绝”

  • 确保服务器正在运行: docker compose ps
  • 检查端口8000是否堵塞
  • 验证客户端配置中的URL是否与服务器匹配

Docker构建失败

  • 确保Docker正在运行
  • 尝试: docker compose build --no-cache

许可证

MIT许可证-有关详细信息,请参阅许可证文件。