Token导航 LogoToken导航TokenDH.com
Job Description Complexity Score logo
运维云端stdio官方级别未说明来源级核验

Job Description Complexity Score

MCP Server

一个轻量级的MCP服务器,用于从职位描述和简历文件中提取所需技术并提供难度评级与替代方案。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
Python云端部署Docker

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

ajay1133

提供方

ajay1133

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install -e .

详细介绍

技术提取器MCP服务器

一个轻量级的MCP(模型上下文协议)服务器,从职位描述中提取所需的技术 以及恢复文件 并提供具有替代方案的难度评级。

特性

  • 技术检测:自动检测文本或简历文件中提到的技术
  • 简历文件支持:解析.txt、.docx、.pdf和.doc简历文件
  • 难度评级:为每种技术提供难度分数(1-10分)
  • 体验追踪:三级经验验证:

- experience_mentioned_in_prompt:工作要求中规定的年限 - experience_accounted_for_in_resume:从简历中提取的年份 - experience_validated_via_github:基于GitHub的验证(未来的占位符)

  • 智能替代方案:建议具有难度等级的替代技术
  • 简单架构:返回干净、结构化的JSON,没有开销
  • 请求日志记录:自动记录每个请求的时间、CPU和内存指标

安装

# Clone the repository
git clone https://github.com/ajay1133/mcp-server-job-description-complexity-score.git
cd mcp-server-job-description-complexity-score

# Install dependencies (includes resume parsing libraries)
pip install -e .
# OR with uv:
uv pip install -e .

恢复自动安装的解析依赖关系:

  • python-docx 对于.docx文件
  • PyPDF2 pdf文件
  • python-magic-bin 用于Windows文件类型检测

用法

作为MCP服务器

python mcp_server/server.py

自检

python mcp_server/server.py --self-test

作为Python模块

from mcp_server.simple_tech_extractor import SimpleTechExtractor

extractor = SimpleTechExtractor()
result = extractor.extract_technologies("Senior Full-Stack Engineer with React and Node.js")

print(result)
# {
#   "technologies": {
#     "react": {
#       "difficulty": 5.2,
#       "experience_required": 2.5,
#       "mentioned_in_prompt": true,
#       "category": "frontend",
#       "alternatives": {
#         "vue": {"difficulty": 4.8, "experience_required": 2.0},
#         "angular": {"difficulty": 6.5, "experience_required": 3.0}
#       }
#     },
#     "node": {
#       "difficulty": 5.0,
#       "experience_required": 2.5,
#       "mentioned_in_prompt": true,
#       "category": "backend",
#       "alternatives": {
#         "python_fastapi": {"difficulty": 4.5, "experience_required": 2.0}
#       }
#     }
#   }
# }

响应架构

{
  "technologies": {
    "": {
      "difficulty": 5.2,                       // 1-10 scale
      "category": "frontend",                  // category
      "mentioned_explicitly": true,            // true if tech name appears in prompt/resume
      "experience_estimate": "5 years",        // Estimated from resume (priority) or prompt; can be years or a level like "senior"/"junior"
      "alternatives": {
        "": {
          "difficulty": 4.8,
          "experience_estimate": "5 years"    // Propagated global estimate when present
        }
      },
      "experience_mentioned_in_prompt": 5.0,    // If explicit years for this tech in prompt (legacy compatibility)
      "experience_accounted_for_in_resume": 3.0,// If explicit years for this tech in resume (legacy compatibility)
      "experience_validated_via_github": null   // Placeholder for future
    }
  }
}

笔记:

  • experience_estimate 更喜欢简历而不是提示。如果没有明确的年份,则使用“高级”、“中级”或“初级”等资历术语。
  • 备选方案在可用时获得全球估计值(总体年份或资历);技术特定年份不适用于替代品。

支持的技术

前端

  • React、Vue、Angular、Next.js、Svelte、TypeScript

后端

  • Node.js、FastAPI、Flask、Django、Golang、Java Spring、Ruby on Rails

数据库

  • PostgreSQL、MySQL、MongoDB、Redis、DynamoDB、Cassandra

基础设施

  • Docker、Kubernetes、AWS、Lambda

消息传递

  • 卡夫卡,拉比MQ

搜索

  • 弹性搜索

许可证

麻省理工学院 python active_learning_loop.py


4) (Optional) Analyze real GitHub repos for actual LOC/tech/hours

python analyze_github_repos.py


5. 合并所有来源并按文本进行重复数据消除

python merge_training_data.py --out data\merged_training_data.jsonl


6. 在合并的数据集上训练模型

python train_software_models.py --data data\merged_training_data.jsonl --out models\software


7. 验证并运行服务器

python test_new_schema.py python mcp_server\server.py --self-test python mcp_server\server.py # long-running MCP server


### 系统设计模式培训(推荐)

**新**:根据系统设计模式生成高质量的培训数据:

1. Generate training data from patterns (47 examples covering 10 major apps)

python generate_training_from_patterns.py --output data/training_from_patterns.jsonl

2. Merge with existing data

python merge_training_data.py --inputs data/training_from_patterns.jsonl data/software_training_data.jsonl --out data/merged_training_data.jsonl

3. Train models with enriched dataset

python train_software_models.py --data data/merged_training_data.jsonl --out models/software

4. Test the improved models

python run_requirements_cli.py --text "Build a Twitter clone with real-time feeds"


这种方法使用全面的系统设计知识库来生成现实的训练示例,用于:

- 推特、Instagram、YouTube、WhatsApp、优步、网飞、Airbnb、电子商务、Slack、TikTok模式
- 综合技术栈(每个示例15-22项技术)
- 生产就绪的微服务架构(10-15个服务)
- 准确的复杂性估计(平台为500-1200小时)

看 [AI_MODEL_TRAINIG_SUMMARY.md](AI_MODEL_TRAINING_SUMMARY.md) 了解完整细节。

### 当前状态

✅ **用系统设计知识训练的模型** -准备使用!

- **401训练示例** (基于模式+现有数据)
- **49个技术标签** (包括基础设施:kafka、redis、docker、cdn、监控等)
- **10种应用模式** 认可(推特、YouTube、优步等)
- **生产准备就绪** 体系结构建议

**测试系统**:

python test_software_scorer.py


MCP服务器(`server.py`)已配置为使用 `SoftwareComplexityScorer` 但在模型训练之前会失败。

### 可选:招聘vs构建分类器(二进制)

为了清晰地将职位描述的输出模式与构建要求分开,您可以训练一个小型二进制分类器:

数据集(JSONL):每行一个带字段的对象 `{ "text": str, "label": int }` 哪里 `label=1` 用于招聘/职位描述和 `label=0` 用于构建/实施。一个例子是 `data/hiring_build_training_data.example.jsonl`.

训练(PowerShell):

$env:HIRING_BUILD_DATA = "data/hiring_build_training_data.jsonl" python train_hiring_classifier.py


这写道 `models/software/hiring_build_classifier.joblib`当存在时, `SoftwareComplexityScorer` 将使用它来检测具有置信阈值的招聘提示(>=0.65→招聘,\ data\merged.jsonl
$env:HIRING_BUILD_DATA = "data\merged.jsonl"
python train_hiring_classifier.py

3.调整决策阈值,以尽量减少误分类成本:

如果假阴性(招聘→ 构建)比误报(构建)更昂贵→ 招聘),调整门槛:

python tune_hiring_threshold.py --data data/hiring_build_training_data.jsonl --cost-fp 1.0 --cost-fn 2.0 --write-config

这将找到最佳阈值并将其写入 config/hiring_threshold.json.更新 _predict_is_hiring 在记分员中使用新的阈值(默认招聘为0.65,构建为0.35)。

示例:如果调优建议招聘0.72,则更改:

if proba >= 0.72:  # was 0.65
    return True, proba, "model"

迭代改进循环:

  1. 用~100个示例训练初始模型
  2. 评估并识别薄弱环节
  3. 使用主动学习来标记不确定的例子
  4. 用扩展的数据重新打印
  5. 调整生产成本函数的阈值
  6. 重复,直到达到精确/召回目标

______________________________________________________________________

传统多职业评分器(已弃用)

原版 ComplexityScorer 通过在线搜索启发式和职业分类处理软件和非软件工作。这种方法正在逐步被淘汰。

一种MCP(模型上下文协议)服务器,使用机器学习模型预测编程任务和作业要求的复杂性。分数以100为基准进行校准(大致为“Replit Agent 3”难度),并包括估计的完成时间。

功能(传统得分手)

  • 基于机器学习的复杂性得分和完成时间预测
  • 带有人性化难度标签的校准评分(基线100)
  • 检测到的因素提示(前端、后端、数据库、实时等)
  • 不确定性范围内的时间估计(小时/天/周)
  • 持续时间提取:根据用户提示自动检测时间要求(例如,“几天”、“3周”)
  • 智能时间计算:区分项目截止日期(8小时工作日)和持续护理(24/7)
  • 职位分类:根据需求自动推断出工作类别和子类别
  • 扩展职业数据库:当主要分类失败时,返回综合职业数据库(100多个职业)
  • 支持MCP的助手的MCP工具集成

先决条件

  • python:3.11或更高版本
  • :Python包安装程序(通常随Python一起提供)
  • 紫外线 (推荐):快速Python包安装程序和解析器

- 通过PowerShell安装: powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex" - 或者通过pip: pip install uv

安装

  1. 克隆存储库 (如果尚未完成):
   git clone https://github.com/ajay1133/mcp-server-job-description-complexity-score.git
   cd mcp-server-job-description-complexity-score
  1. 使用uv安装依赖项 (推荐):
   uv pip install -e .

或者使用pip:

pip install -e .

用法

1) 训练模型(首次或更新数据后)

模型未提交;使用前必须在当地进行培训:

uv run train-model

备选方案:

python train_model.py

这将在下创建以下文件 models/:

  • tfidf_vectorizer.joblib
  • score_model.joblib
  • time_model.joblib

2) 运行MCP服务器

通过运行以下命令启动MCP服务器:

uv run mcp-server

备选方案:

python -m mcp_server.server

如果缺少模型,服务器将警告您运行 train_model.py 第一。

2b)使用MCP检查器检查服务器(推荐)

需要Node.js npx:

uv run mcp-inspect-server

这将启动MCP检查器,并通过uv(stdio)生成服务器,确保它使用与uv管理的Python环境和依赖项相同的Python环境。试试 score_complexity 交互式工具。

3) 作为独立工具使用

您还可以在Python代码中导入和使用复杂性评分器:

from mcp_server.complexity_scorer import ComplexityScorer

scorer = ComplexityScorer()
result = scorer.analyze_text("Build a full-stack web application with React frontend and Django backend")

print(f"Complexity Score: {result['complexity_score']}")
print(f"Difficulty: {result['difficulty_rating']}")
print(f"Summary: {result['summary']}")

4) 运行测试

运行测试套件:

python test_scoring.py

5) 运行演示

查看正在运行的时间估计功能:

uv run demo

这打印了几个从简单到专家级别的示例,并显示了预测的时间范围。

MCP工具: score_complexity

描述

分析编程要求或职位描述,并提供根据Replit Agent 3的能力校准的复杂性评分。

参数

  • requirement (string):编程要求或职位描述的文本描述

退货

包含以下内容的词典:

  • complexity_score:数值得分(基线参考=100)
  • detected_factors:因素和相关性信号图(例如,匹配、相关性)
  • task_size:简单|中等|复杂|非常复杂|专家
  • difficulty_rating:人性化描述
  • job_category:扣除工作类别(例如“软件开发人员”、“医生”、“管道工”)
  • job_sub_category:推断出工作专业化(例如,“全栈开发人员(React+Node.js)”、“胃肠病学家”、“通用水管工”)
  • category_lookup_method:如何确定类别-“primary_pattern”、“extended_database”、“online_search”或“default_fallback”
  • estimated_completion_time:对象 hours, days, weeks, best_estimate, time_range, assumptions
  • summary:简要总结,包括时间
  • model_type:始终 "machine_learning" 对于此版本

示例请求

{
  "requirement": "Create a RESTful API with PostgreSQL database, user authentication, and real-time notifications"
}

示例响应

{
  "complexity_score": 109.8,
  "baseline_reference": 100,
  "detected_factors": {
    "database": {"matches": 1, "relevance": 0.22},
    "api_integration": {"matches": 1, "relevance": 0.18},
    "security": {"matches": 1, "relevance": 0.14}
  },
  "task_size": "complex",
  "difficulty_rating": "Similar to Replit Agent 3 capabilities",
  "job_category": "Software Developer",
  "job_sub_category": "Backend Developer",
  "category_lookup_method": "primary_pattern",
  "estimated_completion_time": {
    "hours": 9.1,
    "days": 1.14,
    "weeks": 0.23,
    "best_estimate": "1.1 days",
    "time_range": "1.1-1.4 days",
    "assumptions": "Time estimate based on task complexity and typical completion times for similar requirements"
  },
  "summary": "Complexity score: 109.80. Complex task. Primary complexity factors: database, api integration, security. Estimated completion time: 1.1 days.",
  "model_type": "machine_learning"
}

复杂性因素

模型报告提示了以下因素类别(非详尽示例):

  • 基础网站:HTML、CSS、静态网站
  • 数据库:PostgreSQL、MySQL、MongoDB、ORM
  • API集成:REST、GraphQL、webhooks、OAuth
  • 前端:React、Vue、Angular、TypeScript
  • 后端:Django、Flask、FastAPI、Node.js
  • 实时:WebSockets、流媒体、协作功能
  • AI/ML:ML管道、模型训练、OpenAI、NLP
  • 部署:CI/CD、Docker、Kubernetes、云平台
  • 安全:身份验证、加密、JWT、RBAC
  • 测试:单元、集成、E2E、覆盖范围
  • 可扩展性:缓存、队列、负载平衡、分布式系统

配置因子类别(无硬编码列表)

您可以自定义因子类别,而无需更改代码:

  • 编辑 config/complexity_factors.json 添加/删除类别或关键字
  • 或设置 MCP_COMPLEXITY_FACTORS 指向自定义JSON文件
  • 或者在构建记分器时直接传递映射: ComplexityScorer(complexity_factors=...)

如果找不到配置,则使用合理的内置默认值。

工作分类

评分员自动从需求文本中推断出工作类别和子类别。此功能适用于软件开发角色和一般职业。

支持的类别

软件开发:

  • 全栈开发人员(React+Node.js、Vue.js、Angular、MERN Stack)
  • 前端开发人员(React、Vue、Angular)
  • 后端开发人员(Node.js、Django、Flask、FastAPI)
  • 移动开发人员(React Native、Flutter、iOS、Android)
  • AI/ML开发人员
  • 数据科学家
  • DevOps 工程师

医疗保健:

  • 医生(胃肠病学家、心脏病学家、神经科医生、骨科医生、皮肤科医生、儿科医生、眼科医生、全科医生)
  • 护士(注册护士、执业护士)

贸易与服务:

  • 水管工(应急水管工、普通水管工)
  • 电工
  • 木匠

儿童和家庭护理:

  • 儿童保育提供者(保姆、保姆、儿童保育专家)
  • 管家
  • 照顾者 (家庭健康助理、家政服务家庭健康助理)

专业服务:

  • 律师(刑事辩护、公司、全科)
  • 教师(数学、科学、语言艺术)
  • 会计师(注册会计师、综合会计师)
  • 司机(拼车、商业、个人)

延伸职业 (通过回退数据库支持100+):

  • 医疗:兽医、牙医、治疗师、心理学家、药剂师、护理人员
  • 创意:摄影师、摄像师、平面设计师、作家、音乐家、艺术家
  • 烹饪:厨师、厨师、面包师、调酒师
  • 行业:机械师、暖通空调技术员、焊工、石匠、屋顶工、油漆工
  • 服务:理发师、理发师、按摩治疗师、私人教练
  • 房地产:建筑师、工程师、测量师、承包商、房地产经纪人
  • 业务:顾问、分析师、银行家、经纪人
  • 保安:保安、消防员、警察
  • 交通:飞行员、空乘、送货司机
  • 农业:农民、园丁、园艺师、花店
  • 还有更多。..

工作类别扣减示例

要求职位类别职位子类别
“我需要一个可以用React Js和Node Js开发视频流应用程序的软件开发人员”软件开发人员全栈开发人员(React+Node.Js)
“我的肝脏有问题”医生胃肠病学家
“我需要一个可以在我上班时照看我孩子的人”儿童保育提供者儿童保育专家
“寻找具有机器学习经验的数据科学家”数据科学家机器学习专家
“需要一个使用Flutter的iOS和Android移动应用程序开发人员”软件开发人员移动开发人员(Flutter)
“我需要有人照顾我的爸爸,他因为糖尿病几乎不能走路,也不能做饭”看护人家政家庭健康助理

类别查找方法

category_lookup_method 字段跟踪工作类别是如何确定的,提供透明度和可审计性。

查找方法

方法描述图标示例
primary_pattern使用具有上下文感知子类别的常见职业的主要模式匹配进行检测🎯软件开发工程师→ “全栈开发人员(React+Node.js)”
extended_database在包含多个领域100多个职业的扩展职业数据库中找到📚兽医、摄影师、厨师、机械师
online_search当主模式和扩展数据库不匹配时,通过在线关键字匹配回退检索🌐通过动作关键字检测到的不常见职业(维修、设计、安装等)
default_fallback使用通用分类在任何数据库或联机搜索中都找不到匹配项非常不常见或模糊的要求

在线搜索功能

当主要模式和扩展数据库无法对职业进行分类时,系统会自动使用在线搜索逻辑:

触发器:

  • 当没有主模式符合要求时
  • detected_factors 为空(未找到技术关键字)
  • 在确定“普通专业人员”之前,用于默认回退情况

搜索策略:

  1. 主要搜索:尝试DuckDuckGo API即时答案查找(如果可用)
  2. 关键字回退:匹配文本中基于动作的关键字:

- 动作动词:修复、修复、安装、设计、构建、创建、组织、计划、管理、协调、帮助、服务 - 稀有职业:侍酒师、策展人、图书管理员、拍卖师、鉴定师、珠宝商、锁匠、装潢师、动物标本制作师、殡葬师、口译员、翻译、速记员、精算师、统计学家、气象学家、地质学家、天文学家、植物学家、动物学家、生态学家

示例:

  • “我需要有人修理我的古董钟”→ Repair Technician (通过“修复”关键字)✅ 在线搜索
  • “我的餐厅需要一个侍酒师”→ Sommelier (通过专业关键字)✅ 在线搜索
  • “帮助我组织我的活动”→ Event Organizer (通过“组织”关键字)✅ 在线搜索
  • “我需要设计一个标志”→ Designer (通过“设计”关键字)✅ 在线搜索

用法

category_lookup_method 字段可以帮助您:

  • 跟踪分类性能:查看每个请求使用了哪种方法
  • 找出差距:查找经常访问扩展数据库或回退的职业
  • 审计准确性:验证分类逻辑是否按预期工作
  • 提高覆盖率:在主要模式中添加经常要求的职业

示例

{
  "job_category": "Veterinarian",
  "job_sub_category": "Animal Healthcare Professional",
  "category_lookup_method": "extended_database"
}

这表示该职业是在扩展数据库(第2层)中找到的,而不是通过主模式匹配找到的。

持续时间提取

记分器自动检测用户提示中提到的持续时间要求,并相应地调整时间估计。

支持的持续时间模式

数字模式:

  • “3小时”、“2天”、“4周”、“两个月”

基于单词的模式:

  • “几天”=2天
  • “几天”=3天
  • “两周”=两周
  • “周末”=2天

特殊情况:

  • “过夜”=12小时
  • “全天”/“全天”=8小时
  • “半天”=4小时

项目截止日期与持续护理

该系统智能地区分:

  1. 项目截止日期 (8小时工作日):

- 当出现“需要完成”、“截止日期”、“完成时间”等短语时检测到 - 示例:“构建一个React应用程序,需要在3天内完成”=24个工作小时(3天×8小时)

  1. 持续护理 (24/7):

- 适用于护理人员、护士、儿童保育员、管家类别 - 示例:“需要有人照顾我爸爸几天”=48小时(2天×24小时)

持续时间提取示例

提示检测到的持续时间作业类别时间估计
“我需要有人照顾我的爸爸……我会离开几天”“几天”Caregiver2.0天(持续护理)
“构建一个React web应用程序,需要在3天内完成”“3天”软件开发人员3.0天
“周末需要保姆”“周末”儿童保育提供者2.0天(持续护理)
“我母亲的康复需要一名护士,需要两周的帮助”“两周”护士2.0周(持续护理)

评分解释

  • \ 150:比Replit Agent 3的功能更具挑战性

时间估计

假设开发人员熟练使用像Replit这样的AI编码代理,则记分员根据复杂性得分提供完成时间估计。

估计逻辑

  1. 基线:复杂性得分为100的任务估计为8小时(1个工作日)
  2. 线性缩放:时间与复杂性得分成比例
  3. 任务大小调整:基于任务复杂性的非线性调整:

- 简单任务:0.6倍乘数(完成速度比线性快) - 中等任务:0.8倍乘数 - 复杂任务:1.0倍乘数(线性) - 非常复杂的任务:1.3倍乘数(额外的协调开销) - 专家任务:1.6倍乘数(显著的架构开销)

  1. 时间范围:提供一个范围(最佳估计为1.3倍)来解释不确定性

时间格式

估算会自动选择最合适的时间单位:

  • 分钟:对于1小时以下的任务
  • 小时:任务1-8小时
  • 日子:任务1-5天(8小时工作日)
  • :对于超过5天的任务(每周工作5天)

时间估算示例

复杂性得分任务规模估计时间
30简单~1.4小时
75中等~4.8小时
100复杂~8小时(1天)
150非常复杂~2.4天
200专家~3.2天

项目结构

mcp_complexity_scorer/
├── mcp_server/
│   ├── __init__.py
│   ├── server.py              # MCP server implementation
│   └── complexity_scorer.py   # Core ML-based scoring logic
├── complexity_mcp_project/
│   ├── __init__.py
│   ├── settings.py            # Django settings
│   ├── urls.py
│   ├── wsgi.py
│   └── asgi.py
├── models/                   # Trained artifacts (created by training)
│   ├── tfidf_vectorizer.joblib
│   ├── score_model.joblib
│   └── time_model.joblib
├── train_model.py            # Train TF-IDF + regressors
├── training_data.py          # Labeled examples and validation ranges
├── demo_time_estimation.py   # Demo runner printing examples
├── pyproject.toml            # Project dependencies
├── test_scoring.py           # Scripted tests (ranges)
└── README.md                 # This file

发展

添加或细化训练数据

  1. 编辑 training_data.py 并附加新的标记示例。
  2. 回缩模型:
uv run train-model
  1. 重新运行演示/测试。

许可证

有关许可证信息,请参阅存储库。

贡献

欢迎投稿!请随时提交拉取请求。

仓库

______________________________________________________________________

Docker部署

该项目包括Docker支持MCP服务器和Flask API模式的容器化部署。

构建Docker镜像

# Build the image
docker build -t mcp-complexity-scorer:latest .

# Or build with a specific tag
docker build -t your-dockerhub-username/mcp-complexity-scorer:dev .

使用Docker运行

MCP服务器模式(默认):

docker run -p 8000:8000 mcp-complexity-scorer:latest

烧瓶API模式:

docker run -p 8000:8000 -e FLASK_MODE=1 mcp-complexity-scorer:latest

使用自定义配置:

docker run -p 8000:8000 `
  -e FLASK_MODE=1 `
  -e HOST=0.0.0.0 `
  -e PORT=8000 `
  -v ${PWD}/logs:/app/logs `
  mcp-complexity-scorer:latest

Docker Compose

对于装载日志的本地开发:

docker-compose up

docker-compose.yml 包括:

  • 用于日志持久性的卷装载
  • 配置的环境变量
  • 端口映射到本地主机:8000

Flask API终点

在Flask模式下运行时(FLASK_MODE=1):

  • 获取 /health -健康检查端点
  curl http://localhost:8000/health
  • 发布 /score -分析复杂性
  curl -X POST http://localhost:8000/score \
    -H "Content-Type: application/json" \
    -d '{"requirement": "Build a React dashboard with Stripe payments"}'

______________________________________________________________________

CI/CD管道

该项目使用GitHub Actions在多个环境中进行持续集成和部署。

管道概述

触发器:

  • 推至: master, development, qa, uat 分支
  • 将请求拉到这些分支中的任何一个

职位:

  1. 测试 -在Python 3.10、3.11、3.12上运行
  2. 棉绒 -代码质量检查(flake8、黑色、isort)
  3. 码头工人 -构建和推送图像(仅推送)
  4. 部署 -特定于环境的部署(占位符)

分支→ 环境贴图

分支环境Docker标签描述
master生产prod-{sha}, prod-latest稳定的生产发布
development发展dev-{sha}, dev-latest积极发展
qaQAqa-{sha}, qa-latest质量保证测试
uatUATuat-{sha}, uat-latest用户验收测试

设置CI/CD

1.配置Docker Hub密钥

将这些秘密添加到您的GitHub存储库(设置→ 秘密和变量→ 行动):

  • DOCKER_USERNAME:您的Docker Hub用户名
  • DOCKER_PASSWORD:Docker Hub访问令牌(推荐)或密码

要创建Docker Hub访问令牌,请执行以下操作:

  1. 登录到https://hub.docker.com
  2. 转到帐户设置→ 安全→ 访问令牌
  3. 点击“新建访问令牌”
  4. 设置权限:读取、写入、删除
  5. 复制令牌并添加为 DOCKER_PASSWORD 秘密

2.工作流程步骤

管道自动:

  • ✅ 在Python 3.10、3.11、3.12上运行测试
  • ✅ 使用flake8、黑色、isort检查代码样式
  • ✅ 使用特定于环境的标签构建Docker镜像
  • ✅ 成功构建后推送到Docker Hub
  • ℹ️ 通知部署(根据您的基础架构进行定制)

3.本地运行

在推送之前,在本地测试CI步骤:

# Install dev dependencies
pip install pytest pytest-cov flake8 black isort

# Run tests
pytest tests/ -v --cov=mcp_server

# Check linting
flake8 mcp_server/
black --check mcp_server/
isort --check-only mcp_server/

# Build Docker
docker build -t mcp-complexity-scorer:test .

部署

推送Docker镜像后,自定义 deploy 工作在 .github/workflows/ci-cd.yml 致:

  • 部署到Kubernetes集群
  • 更新ECS任务定义
  • 触发Azure容器实例
  • 或者您首选的容器编排平台

Kubernetes部署示例:

- name: Deploy to Kubernetes
  run: |
    kubectl set image deployment/complexity-scorer \
      app=${{ secrets.DOCKER_USERNAME }}/mcp-complexity-scorer:${{ env.IMAGE_TAG }} \
      --namespace=${{ env.ENV_NAME }}

监控CI/CD

  • 查看工作流运行:存储库→ 操作选项卡
  • 检查构建日志:单击任何工作流运行
  • Docker镜像:https://hub.docker.com/r/YOUR_USERNAME/mcp-complexity-scorer

______________________________________________________________________

目录标签

目录标签

Python云端部署Docker技术检测本地部署简历解析难度评级经验验证智能替代

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

oauth

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiooauth部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP