模拟ITR场景MCP服务器
创建和管理Mock ItrLoader项目方案的模型上下文协议(MCP)服务器。
功能
MCP工具
基本工具
| 工具 | 说明 |
|---|---|
template_list | 查看可用方案模板列表 |
template_load | 加载特定模板 |
scenario_build_normal | 创建正常退款方案 |
scenario_build_error | 生成错误方案 |
scenario_build_progress | 创建进度传输方案 |
scenario_validate | 验证方案 |
scenario_assign | 将方案分配给user_ern |
scenario_unassign | 取消分配方案 |
error_types_list | 查看支持的错误类型列表 |
Flow特定方案生成工具
| 工具 | 说明 | Flow |
|---|---|---|
scenario_build_simple_auth | \[个人\]创建简单的身份验证流方案 | cert_request→cert_response→check→load |
scenario_build_common_cert 创建联合证书流方案 | check(common_cert)→load | |
scenario_build_corp_common_cert 创建联合证书流方案corp_check(common_cert)→corp_load_calc |
创建失败方案工具
| 工具 | 说明 |
|---|---|
scenario_build_simple_auth_fail | 创建简单身份验证请求(cert_request)失败方案 |
scenario_build_cert_response_fail | 快速验证完成确认(cert_response)生成失败方案 |
MCP资源
| 资源 | 说明 |
|---|---|
scenario://templates | 模板列表 |
scenario://error-types | 支持的错误类型列表 |
scenario://schema | 场景JSON Schema |
安装
uv安装
如果未安装uv,可以使用以下命令进行安装:
curl -LsSf https://astral.sh/uv/install.sh | sh
# 또는 macOS/Homebrew
brew install astral-sh/uv/uv
# Windows PowerShell
irm https://astral.sh/uv/install.ps1 | iex# uv 사용
uv pip install -e .
# pip 사용
pip install -e .从GitHub导入和注册MCP服务器的过程
- GitHub存储库分支
- 原始(Upstream): https://github.com/danny-zent/mock-itr-scenario-mcp - 使用组织或个人GitHub帐户创建Fork。
- 分支存储库克隆
git clone https://github.com//mock-itr-scenario-mcp.git
cd mock-itr-scenario-mcp- 依赖性安装 (上面
설치请参见步骤) - 验证MCP服务器路径
- command: uv - args: ["run", "-m", "mock_itr_scenario_mcp.server"] - cwd:克隆的存储库路径,例如: /Users/danny/git/mock-itr-scenario-mcp)
- 将mcpServers条目添加到Cursor/Claude配置文件
- 光标: ~/.cursor/mcp.json - 克劳德桌面: claude_desktop_config.json - 如以下示例所示 mcpServers.mock-itr-scenario 添加块并将环境变量设置为所需值
- 重新启动编辑器或刷新MCP服务器
- 光标: ⌘K → “重新加载MCP服务器” - Claude Desktop:保存设置后重新启动应用程序
使用方法
Cursor设置
~/.cursor/mcp.json:
{
"mcpServers": {
"mock-itr-scenario": {
"command": "uv",
"args": ["run", "-m", "mock_itr_scenario_mcp.server"],
"cwd": "/Users/you/path/to/your-fork/mock-itr-scenario-mcp",
"env": {
"MOCK_ITR_MODEL_YEAR": "2024",
"DYNAMODB_ENDPOINT_URL": "http://localhost:8000"
}
}
}
}Claude桌面设置
claude_desktop_config.json:
{
"mcpServers": {
"mock-itr-scenario": {
"command": "uv",
"args": ["run", "-m", "mock_itr_scenario_mcp.server"],
"cwd": "C:/Users/you/path/to/your-fork/mock-itr-scenario-mcp",
"env": {
"MOCK_ITR_MODEL_YEAR": "2024"
}
}
}
}环境变量
| 变量 | 说明 | 默认值 |
|---|---|---|
MOCK_ITR_MODEL_YEAR | 归属年份(attr_yr) | 2024 |
DYNAMODB_ENDPOINT_URL | DynamoDB端点URL | (AWS基本) |
SCENARIO_TABLE_NAME | DynamoDB表名称 | mock-itr-scenarios |
AWS_REGION | AWS区域 | ap-northeast-2 |
使用示例
查看模板列表
模板是项目根目录的 templates/ 目录中 TPL_*.json 以格式保存。
사용자: "사용 가능한 템플릿 목록 보여줘"
AI: template_list 도구를 사용합니다.
사용 가능한 템플릿:
- TPL_NORMAL_BIZ_HIGH: 개인사업자 고액환급 (5,500,000원)
- TPL_NORMAL_BIZ_LOW: 개인사업자 저액환급 (150,000원)
- TPL_ERR_NO_TAX_RETURN: 종소세신고내역없음 에러
...创建方案
사용자: "300만원 환급 시나리오 만들어줘"
AI: scenario_build_normal 도구를 사용합니다.
생성된 시나리오:
- 사용자: 테스트사용자
- 환급액: 3,000,000원
- 사업자 유형: 개인사업자创建特定于Flow的方案
简单认证Flow(个人)
사용자: "카카오 간편인증으로 500만원 환급 시나리오 만들어줘"
AI: scenario_build_simple_auth 도구를 사용합니다.
생성된 시나리오:
- Flow: cert_request → cert_response → check → load
- 사용자: 테스트사용자
- 간편인증: 카카오
- 환급액: 5,000,000원联合证书Flow(个人)
사용자: "공동인증서로 200만원 환급 시나리오 만들어줘"
AI: scenario_build_common_cert 도구를 사용합니다.
생성된 시나리오:
- Flow: check (common_cert) → load
- 환급액: 2,000,000원联合证书Flow(实体)
사용자: "법인 공동인증서 시나리오 만들어줘"
AI: scenario_build_corp_common_cert 도구를 사용합니다.
생성된 시나리오:
- Flow: corp_check (common_cert) → corp_load_calc
- 사업체명: 주식회사 테스트사업자创建失败方案
简单身份验证请求失败
사용자: "카카오 간편인증 요청 실패 시나리오 만들어줘"
AI: scenario_build_simple_auth_fail 도구를 사용합니다.
생성된 시나리오:
- cert_request: 실패
- 에러 타입: 간편인증오류
- 에러 메시지: "카카오톡 간편인증 요청에 실패했습니다. 사용자 정보를 확인해주세요."无法快速验证完成确认
사용자: "간편인증 완료 확인 실패 시나리오 만들어줘"
AI: scenario_build_cert_response_fail 도구를 사용합니다.
생성된 시나리오:
- cert_request: 성공
- cert_response: 실패
- 에러 타입: 간편인증미완료
- 에러 메시지: "간편인증이 완료되지 않았습니다."创建错误方案
退款者错误
사용자: "기환급자 에러 시나리오 만들어줘"
AI: scenario_build_error 도구를 사용합니다.
생성된 시나리오:
- 에러 타입: 기환급자
- 발생 액션: load
- 에러 메시지: "2024" (환경변수 MOCK_ITR_MODEL_YEAR 값)
- 설명: 같은 귀속년도에 이미 환급을 받은 사람이 다시 조회(load) 액션을 할 때 발생无综合所得税申报明细错误
사용자: "종소세 신고내역 없음 에러 시나리오 만들어줘"
AI: scenario_build_error 도구를 사용합니다.
생성된 시나리오:
- 에러 타입: 종소세신고내역없음
- 에러 메시지: "종합소득세 신고 내역이 없습니다."开发
# 개발 의존성 설치
uv pip install -e ".[dev]"
# 테스트 실행
pytest
# 린트
ruff check .
# 타입 체크
mypy src方案数据结构
特定于动作的请求/响应数据
每个场景动作 Confluence文档中的API规格包含与匹配的请求/响应数据结构:
- cert_request:简单的身份验证请求(基于user_info)
- cert_response:快速验证完成(基于user_info+cert_info)
- 检查:用户验证(基于token或common_cert,返回tin/cookies)
- 负载:收集和计算(基于cookies,返回退款结果)
- 计算:计算(基于export_file_prefix)
- corp_load_calc:法人收集和计算(基于cookies)
Flow说明
1.\[个人\]简单认证Flow
사용자정보입력 → cert_request → 사용자 인증완료 → cert_response → check (token) → load2.\[个人\]共同证书Flow
인증서정보 → check (common_cert) → load3.\[法人\]共同证书Flow
인증서정보 → corp_check (common_cert) → corp_load_calc主要错误类型
捐赠者(ALREADY_REFUNDED)
- 具体值动作:
load - 说明:当同一归属年已收到退税的人再次进行查询(load)操作时发生。
- 错误消息:环境变量
MOCK_ITR_MODEL_YEAR的值(例如“2024”、“2025”) - 示例:2024年已收到退税的用户试图重新查询2024年退税时发生。
无运营商错误(NO_BIZ)
- 具体值动作:
load - 说明:HomeTax帐户中没有商家
- 错误消息:“处理过程中发生异常。\[未更改运营商\]”
会话过期(SESSION_EXPIRED)
- 具体值动作:
load - 说明:收集期间会话过期(需要重试)
- 错误消息:“会话因重复连接而过期。”
身份证号码错误(INVALID_SSN)
- 具体值动作:
load - 说明:由于身份证号码错误,收集失败
- 错误消息:“请确认商家注册号/身份证号。”
