MCP_Agent:RE 是一个用于从 TAPD 平台获取需求和缺陷数据并生成质量分析报告的 Python 项目,旨在为 AI 客户端提供数据支持。以下是项目的详细介绍和使用指南。
此项目于 2025 年 6 月 10 日由 punkpeye (Frank Fiegel) 收录于 TAPD Data Fetcher | Glama。
本项目提供了丰富的 MCP 工具集,支持 TAPD 数据的获取、处理、分析和智能摘要功能:
get_tapd_data() - 从 TAPD API 获取需求和缺陷数据并保存到本地文件,返回数量统计【推荐】
get_tapd_stories() - 获取 TAPD 项目需求数据,支持分页并直接返回 JSON 数据,但不保存至本地,建议仅在数据量较小时使用get_tapd_bugs() - 获取 TAPD 项目缺陷数据,支持分页并直接返回 JSON 数据,但不保存至本地,建议仅在数据量较小时使用preprocess_tapd_description(data_file_path, output_file_path, use_api, process_documents, process_images) - 清理 TAPD 数据中 description 字段的 HTML 样式,提取文字、链接、图片内容并通过 DeepSeek API 优化表达(需要配置 DeepSeek API 密钥),大幅压缩数据长度同时保留关键信息【仍在开发中...】preview_tapd_description_cleaning(data_file_path, item_count) - 预览 description 字段清理效果,展示压缩比例和提取信息,不修改原始数据docx_summarizer.py - 提取 .docx 文档中的文本、图片和表格信息,并生成摘要【仍在开发中...】vectorize_data(data_file_path, chunk_size) - 向量化工具,支持自定义数据源的向量化,将数据转换为向量格式,用于后续的语义搜索和分析get_vector_info() - 获取简化版向量数据库状态和统计信息search_data(query, top_k) - 基于语义相似度的智能搜索,支持自然语言查询,返回与查询最相关的结果generate_fake_tapd_data(n_story_A, n_story_B, n_bug_A, n_bug_B, output_path) - 生成模拟 TAPD 数据,用于测试和演示(若不指明地址,使用后可能会覆盖本地数据,若需要来自 API 的正确数据,请再次调用数据获取工具)generate_tapd_overview(since, until, max_total_tokens, model, endpoint, use_local_data) - 使用 LLM 简要生成项目概览报告与摘要,用于了解项目概况(需要在环境中配置 DeepSeek API 密钥)analyze_word_frequency(min_frequency, use_extended_fields, data_file_path) - 分析 TAPD 数据的词频分布,生成关键词词云统计,为搜索功能提供精准关键词建议example_tool(param1, param2) - 示例工具,展示 MCP 工具注册方式mcp_tools\test_case_rules_customer.py - 测试用例评估规则配置脚本,用于配置测试用例的评估标准和优先级mcp_tools\test_case_require_list_knowledge_base.py - 测试用例需求知识库生成脚本,可从 TAPD 数据中提取需求信息并生成知识库,或手动修改需求信息mcp_tools\test_case_evaluator.py - 测试用例 AI 评估器脚本,用于根据配置的规则评估测试用例质量,并生成评估报告至本地文件位于 mcp_tools\common_utils.py,提供统一的工具接口,简化 MCP 工具的注册和调用,包含的工具如下:
__init__() - 初始化配置管理器,自动创建项目所需的目录结构(local_data、models、vector_data)_get_project_root() - 获取项目根目录的绝对路径get_data_file_path(relative_path) - 获取数据文件的绝对路径,支持相对路径自动转换get_vector_db_path(name) - 获取向量数据库文件路径,默认为 "data_vector"get_model_cache_path() - 获取模型缓存目录路径__init__(config) - 初始化模型管理器,依赖 MCPToolsConfig 实例get_project_model_path(model_name) - 检测本地是否存在指定模型,返回模型路径或 Noneget_model(model_name) - 获取 SentenceTransformer 模型实例,优先使用本地模型,支持自动下载和缓存clear_cache() - 清除全局模型缓存,释放内存资源extract_text_from_item(item, item_type) - 从 TAPD 数据项(需求/缺陷)中提取关键文本信息,支持不同类型的字段提取策略__init__(config) - 初始化文件管理器,依赖 MCPToolsConfig 实例load_tapd_data(file_path) - 加载 TAPD JSON 数据文件,支持绝对路径和相对路径load_json_data(file_path) - 加载 JSON 数据文件,支持错误处理,文件不存在时返回空字典save_json_data(data, file_path) - 保存数据为 JSON 格式,自动创建目录结构__init__() - 初始化 API 管理器,支持 DeepSeek 和 SiliconFlow 双 API 配置get_headers(endpoint) - 智能构建 API 请求头,根据 endpoint 自动选择对应的 API 密钥call_llm(prompt, session, model, endpoint, max_tokens) - 兼容多 API 的 LLM 调用接口
deepseek-chat、deepseek-reasoner 模型moonshotai/Kimi-K2-Instruct 等模型get_config() - 获取全局 MCPToolsConfig 实例(单例模式)get_model_manager() - 获取全局 ModelManager 实例(单例模式)get_file_manager() - 获取全局 FileManager 实例(单例模式)get_api_manager() - 获取全局 APIManager 实例(单例模式)以下是将项目移植到其他 Windows 电脑的详细步骤(尚未测试 Mac 与 Linux):
Add Python to PATH(关键!否则需手动配置环境变量)python --version,应输出 Python 3.10.11pip install uv(需确保 pip 已随 Python 安装):pip install uv
uv --version,应显示版本信息D:\MiniProject\MCPAgentRE 完整复制到目标电脑(建议路径无中文/空格,如 D:\MCPAgentRE)cd D:\MCPAgentRE(根据实际路径调整)uv sync
pyproject.toml 安装所有依赖(包括 MCP SDK、aiohttp 等)api.txt 文件,复制下列文本,并替换配置为目标 TAPD 项目的真实值:API_USER = '替换为你的 TAPD API 用户名'
API_PASSWORD = '替换为你的 TAPD API 密码'
WORKSPACE_ID = '替换为你的 TAPD 项目 ID'
.gitignore 忽略 api.txt 文件,确保敏感信息不被泄露如果您需要使用智能摘要功能(generate_tapd_overview)或 description 优化功能(preprocess_tapd_description),需要配置 DeepSeek API 密钥:
# 临时设置(仅当前会话有效)
$env:DS_KEY = "your-deepseek-api-key-here"
# 永久设置(推荐)
[Environment]::SetEnvironmentVariable("DS_KEY", "your-deepseek-api-key-here", "User")
SiliconFlow 提供多种优质模型,包括 Kimi、通义千问等:
# 临时设置(仅当前会话有效)
$env:SF_KEY = "your-siliconflow-api-key-here"
# 永久设置(推荐)
[Environment]::SetEnvironmentVariable("SF_KEY", "your-siliconflow-api-key-here", "User")
echo $env:DS_KEY
echo $env:SF_KEY
knowledge_documents/DeepSeek API 环境变量配置指南.mduv run tapd_data_fetcher.py
预期输出:
成功加载配置: 用户=********, 工作区=********
===== 开始获取需求数据 =====
需求数据获取完成,共获取 X 条
===== 开始获取缺陷数据 =====
缺陷数据获取完成,共获取 Y 条
数据已成功保存至 msg_from_fetcher.json 文件。
uv run check_mcp_tools.py
输出结果如下:
成功加载配置: 用户=4ikoesFM, 工作区=37857678
✅ MCP 服务器启动成功!
📊 已注册工具数量: 14
🛠️ 已注册的工具列表:
1. example_tool -
示例工具函数(用于演示 MCP 工具注册方式)
功能描述:
...
2. get_tapd_data - 从 TAPD API 获取需求和缺陷数据并保存到本地文件
功能描述:
...
uv run test\vector_quick_start.py
# 生成模拟 TAPD 数据(用于测试)
uv run mcp_tools\fake_tapd_gen.py
# 使用上下文优化器生成数据概览(离线模式)
uv run mcp_tools\context_optimizer.py -f local_data\msg_from_fetcher.json --offline --debug
# 生成详细摘要(需要配置 API 密钥)
uv run mcp_tools\context_optimizer.py -f local_data\msg_from_fetcher.json --debug
set DS_KEY=your_deepseek_api_key # DeepSeek API 密钥
set DS_EP=https://api.deepseek.com/v1 # API 端点 URL(可选,默认为 DeepSeek)
set DS_MODEL=deepseek-chat # 模型名称(可选,默认为 deepseek-chat)
--offline 参数)和在线智能摘要生成uv run mcp_tools\word_frequency_analyzer.py
local_data/msg_from_fetcher.json 中的数据,生成关键词词云统计uv run mcp_tools\docx_summarizer.py
# 运行自定义规则演示
uv run test\demo_custom_rules.py
# 运行需求单知识库初始化
uv run test\init_requirement_kb.py
# 运行测试用例评估器
uv run mcp_tools\test_case_evaluator.py
config/test_case_rules.json 与 config/require_list_config.jsonknowledge_documents\AI 测试用例评估器操作手册.mduv run test\test_api_compatibility.py
tapd_mcp_server.py 的 main 函数中没有任何 print 语句(或已注释掉),以避免在启动时输出调试信息。uv run tapd_mcp_server.py
# 查看规则配置
uv run mcp_tools/test_case_rules_customer.py
# 修改规则配置
uv run mcp_tools/test_case_rules_customer.py --config
# 重置为默认配置
uv run mcp_tools/test_case_rules_customer.py --reset
# 查看帮助信息
uv run mcp_tools/test_case_rules_customer.py --help
uv run mcp_tools/test_case_require_list_knowledge_base.py
uv run mcp_tools/test_case_evaluator.py
MCPAgentRE\
├─config\ # 配置文件目录
├─knowledge_documents\ # 知识文档(Git 提交时默认忽略目录下的文件,若要提交请手动在 .gitignore 中取消忽略)
├─documents_data\ # 文档数据目录(暂时,最终将替换至 local_data)
│ ├─docx_data\ # 存储 .docx 文档的目录
│ ├─excel_data\ # 存储 Excel 表格的目录
│ └─pictures_data\ # 存储图片的目录
├─local_data\ # 本地数据目录,用于存储从 TAPD 获取的数据、数据库等(Git 提交时会被忽略)
│ ├─msg_from_fetcher.json # 从 TAPD 获取的需求和缺陷数据
│ ├─fake_tapd.json # 假数据生成器生成的模拟 TAPD 数据
│ ├─preprocessed_data.json # 预处理后的 TAPD 数据
│ └─vector_data\ # 向量数据库文件目录
│ ├─data_vector.index # 向量数据库索引文件
│ ├─data_vector.metadata.pkl # 向量数据库元数据文件
│ └─data_vector.config.json # 向量数据库配置文件
├─mcp_tools\ # MCP 工具目录
│ ├─data_vectorizer.py # 向量化工具,支持自定义数据源的向量化
│ ├─context_optimizer.py # 上下文优化器,支持智能摘要生成
│ ├─docx_summarizer.py # 文档摘要生成器,提取 .docx 文档内容
│ ├─fake_tapd_gen.py # TAPD 假数据生成器,,用于测试和演示
│ ├─word_frequency_analyzer.py # 词频分析工具,生成关键词词云统计
│ ├─data_preprocessor.py # 数据预处理工具,清理和优化 TAPD 数据
│ ├─common_utils.py # 统一的公共工具模块
│ └─example_tool.py # 示例工具
├─models\ # 模型目录
├─test\ # 测试目录
│ ├─test_comprehensive.py # 综合向量化功能测试
│ ├─test_vectorization.py # 基础向量化功能测试
│ ├─test_data_vectorizer.py # 测试完整版 data_vectorizer 工具功能
│ ├─test_word_frequency.py # 词频分析工具测试
│ └─vector_quick_start.py # 向量化功能快速启动脚本
├─.gitignore # Git 提交时遵守的过滤规则
├─.python-version # 记录 Python 版本(3.10)
├─提示词-TAPD平台MCP分析助手.md
├─TAPD平台MCP服务器开发指南.md
├─api.txt # 包含 API 密钥信息,需要自行创建(Git 提交时会被忽略)
├─main.py # 项目入口文件,无实际作用
├─pyproject.toml # 现代的 Python 依赖管理文件
├─README.md # 项目说明文档,也就是本文档
├─tapd_data_fetcher.py # 包含从 TAPD API 获取需求和缺陷数据的逻辑
├─tapd_mcp_server.py # MCP 服务器启动脚本,用于提供所有 MCP 工具
└─uv.lock # UV 包管理器使用的锁定文件
Ctrl + , 打开设置页面(或者点击左上角菜单图标 - File - Settings)Developer 选项卡Edit Config 按钮,将会弹出文件资源管理器claude_desktop_config.json 文件,添加以下内容(若有其他内容,请注意层级关系):{
"mcpServers": {
"tapd_mcp_server": {
"command": "uv",
"args": [
"--directory",
"D:\\MiniProject\\MCPAgentRE",
"run",
"tapd_mcp_server.py"
]
}
}
}
command 字段指定了运行 MCP 服务器的命令(通常为 uv)args 字段指定了运行 MCP 服务器的参数,包括项目目录(--directory)和运行的脚本文件(run tapd_mcp_server.py)--directory 指向的是 MCP 服务器所在的目录,即 D:\MiniProject\MCPAgentRE(请按照实际目录修改)+ 按钮,选择 New Chat请使用 tapd_mcp_server 插件获取 TAPD 项目的需求和缺陷数据
%APPDATA%\Claude\logs)以获取更多信息type "%APPDATA%\Claude\logs\mcp*.log"
为了让项目目录结构更清晰,建议将 MCP 工具函数放在 mcp_tools 文件夹中。下面是一个添加新工具函数的示例方法。
mcp_tools 文件夹中创建新的 Python 文件(如 new_tool.py)async def new_function(param1: str, param2: int) -> dict:
"""
新工具函数说明
参数:
param1: 参数说明
param2: 参数说明
返回:
返回数据结构说明
"""
# 函数实现
return {"result": "处理结果"}
tapd_mcp_server.py 中添加:
from mcp_tools.new_tool import new_function@mcp.tool() 装饰器注册函数:@mcp.tool()
async def new_tool(param1: str, param2: int) -> dict:
"""
工具功能详细说明
参数:
param1 (str): 参数详细说明
param2 (int): 参数详细说明
返回:
dict: 返回数据结构详细说明
"""
return await new_function(param1, param2)
本项目是一个用于从 TAPD 平台获取需求和缺陷数据并生成质量分析报告的 Python 项目,旨在为 AI 客户端提供数据支持。项目提供了丰富的 MCP 工具集,支持 TAPD 数据的获取、处理、分析和智能摘要功能。
get_tapd_data():从 TAPD API 获取需求和缺陷数据并保存到本地文件,返回数量统计。该函数适用于首次获取数据或定期更新本地数据,包含需求和缺陷数据的完整集成。get_tapd_stories():获取 TAPD 项目需求数据,支持分页并直接返回 JSON 数据,但不保存至本地,建议仅在数据量较小时使用。get_tapd_bugs():获取 TAPD 项目缺陷数据,支持分页并直接返回 JSON 数据,但不保存至本地,建议仅在数据量较小时使用。preprocess_tapd_description():清理 TAPD 数据中 description 字段的 HTML 样式,提取文字、链接、图片内容并通过 DeepSeek API 优化表达(需要配置 DeepSeek API 密钥),大幅压缩数据长度同时保留关键信息。preview_tapd_description_cleaning():预览 description 字段清理效果,展示压缩比例和提取信息,不修改原始数据。docx_summarizer.py:提取 .docx 文档中的文本、图片和表格信息,并生成摘要。vectorize_data():向量化工具,支持自定义数据源的向量化,将数据转换为向量格式,用于后续的语义搜索和分析。get_vector_info():获取简化版向量数据库状态和统计信息。search_data():基于语义相似度的智能搜索,支持自然语言查询,返回与查询最相关的结果。generate_fake_tapd_data():生成模拟 TAPD 数据,用于测试和演示。generate_tapd_overview():使用 LLM 简要生成项目概览报告与摘要,用于了解项目概况(需要在环境中配置 DeepSeek API 密钥)。analyze_word_frequency():分析 TAPD 数据的词频分布,生成关键词词云统计,为搜索功能提供精准关键词建议。位于 mcp_tools\common_utils.py,提供统一的工具接口,简化 MCP 工具的注册和调用。包含的工具类有 MCPToolsConfig、ModelManager、TextProcessor、FileManager 和 APIManager,以及全局实例管理函数。
项目包含多个目录和文件,用于存储配置文件、知识文档、文档数据、本地数据、MCP 工具、模型、测试脚本等。详细的项目结构请参考上文的项目结构部分。
文档中未提及相关信息,暂无法提供。
ModuleNotFoundError,检查是否执行 uv add 命令,或尝试 uv add <缺失模块名>API_USER / API_PASSWORD / WORKSPACE_ID 正确,且 TAPD 账号有对应项目的读取权限python --version 验证)