Metadata-Version: 2.4
Name: chujobfinder-mcp
Version: 0.1.1
Summary: MCP tools for Changda Job Finder
Author: Changda Job Finder Team
License: MIT
Keywords: career,job-search,mcp,oss
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.10
Requires-Dist: mcp==1.27.2
Requires-Dist: oss2==2.19.1
Provides-Extra: test
Requires-Dist: pytest>=8.0.0; extra == 'test'
Description-Content-Type: text/markdown

# chujobfinder-mcp

长大职通车 MCP 服务包，面向求职训练 Agent 暴露 4 个工具：

- `mock_job_search`
- `mock_resume_loader`
- `profile_manager`
- `fluency_analyzer`

本包通过环境变量读取阿里云 OSS 配置，不包含任何真实 AccessKey、Bucket、Endpoint、真实简历或用户隐私数据。JD、CV、Profile 均为 OSS JSON，所有 OSS 读写统一通过 `oss_store.py` 完成，数据格式清洗统一通过 `schemas.py` 完成。

## Local Development

在项目目录安装：

```powershell
cd C:\Users\PC\Desktop\chujobfinder\chujobfinder-mcp
python -m pip install -e ".[test]"
```

运行测试：

```powershell
python -m pytest -q
```

启动 MCP stdio 服务：

```powershell
chujobfinder-mcp
```

如果脚本目录不在 `PATH`，也可以用模块导入方式验证：

```powershell
python -c "from chujobfinder_mcp.server import create_server; print(type(create_server()).__name__)"
```

## Tools

### mock_job_search

用于用户需要查找、推荐或匹配模拟岗位 JD 的场景。参数：

```json
{
  "keyword": "产品经理",
  "city": "西安",
  "job_category": "产品",
  "page_size": 5
}
```

### mock_resume_loader

用于用户选择示例简历、加载模拟 CV 或按求职方向筛选简历的场景。参数：

```json
{
  "resume_id": "cv_001",
  "name": "",
  "target_role": ""
}
```

### profile_manager

用于读取或保存用户求职进度、目标岗位、面试记录等档案信息。用户档案路径统一为 `profiles/{safe_user_id}.json`。参数：

```json
{
  "action": "get",
  "user_id": "demo_user",
  "data": {}
}
```

支持的 `action`：

- `get`
- `update`
- `append_event`
- `clear`

### fluency_analyzer

用于文本模拟面试回答结束后，分析表达流畅度并给出改进建议。该工具只分析文字，不分析真实语音语速、音量、语调等音频特征。参数：

```json
{
  "text": "嗯，然后我当时负责这个项目..."
}
```

## PyPI Packaging

`pyproject.toml` 使用 `hatchling` 构建，并声明了 PyPI 包名、README、Python 版本、基础元数据和运行依赖：

```toml
[project]
name = "chujobfinder-mcp"
dependencies = [
  "mcp>=1.0.0",
  "oss2>=2.18.0",
]
```

console script 必须保持为：

```toml
[project.scripts]
chujobfinder-mcp = "chujobfinder_mcp.server:main"
```

本地打包与上传命令：

```powershell
python -m pip install -U build twine
python -m build
twine check dist/*
twine upload dist/*
```

发布新版本时请先更新 `pyproject.toml` 中的 `version`，重新构建并通过 `twine check` 后再上传。PyPI 包中不得包含真实 CV、真实用户档案、AccessKey、Bucket、Endpoint 或任何隐私数据。

## Bailian uvx Deployment

发布到 PyPI 后，可在阿里云百炼自定义 MCP 服务中选择 `uvx` 启动。示例只使用占位符，部署时替换为私有 OSS 和最小权限 RAM 用户配置：

```json
{
  "mcpServers": {
    "chujobfinder": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "chujobfinder-mcp==0.1.0",
        "chujobfinder-mcp"
      ],
      "env": {
        "CHU_OSS_ENDPOINT": "https://oss-cn-xxx.aliyuncs.com",
        "CHU_OSS_BUCKET": "your-private-bucket",
        "CHU_OSS_ACCESS_KEY_ID": "your-ram-access-key-id",
        "CHU_OSS_ACCESS_KEY_SECRET": "your-ram-access-key-secret",
        "CHU_OSS_JOBS_KEY": "data/mock_jobs.json",
        "CHU_OSS_RESUMES_KEY": "data/mock_resumes.json",
        "CHU_OSS_PROFILE_PREFIX": "profiles/"
      }
    }
  }
}
```

百炼中确认服务启动后，应能看到 4 个工具：`mock_job_search`、`mock_resume_loader`、`profile_manager`、`fluency_analyzer`。

## Environment Variables

必填：

```text
CHU_OSS_ENDPOINT
CHU_OSS_BUCKET
CHU_OSS_ACCESS_KEY_ID
CHU_OSS_ACCESS_KEY_SECRET
```

JD、CV 和用户档案路径配置：

```text
CHU_OSS_JOBS_KEY=data/mock_jobs.json
CHU_OSS_RESUMES_KEY=data/mock_resumes.json
CHU_OSS_PROFILE_PREFIX=profiles/
```

可选运行参数：

```text
CHU_DEFAULT_PAGE_SIZE=5
CHU_MAX_PAGE_SIZE=20
CHU_DEBUG=false
```

`safe_user_id` 由 `oss_store.safe_user_id` 生成，仅保留中文、英文、数字、下划线和中划线；其它字符替换为 `_`，空值替换为 `demo_user`，最大长度 80。

## Security Requirements

- 使用 RAM 最小权限用户访问 OSS。
- 不使用阿里云主账号 AccessKey。
- 不提交真实 AccessKey、Bucket、Endpoint 或配置截图。
- 不把真实 CV、真实用户档案或用户隐私打包进 PyPI 包。
- OSS Bucket 保持私有，JD/CV/Profile 均以 JSON 存储在 OSS。
- `CHU_OSS_PROFILE_PREFIX` 推荐保持为 `profiles/`，用户档案统一写入 `profiles/{safe_user_id}.json`。
