通过企享云 invoice_aggregation MCP 服务完成发票归集与明细查询。发票归集与税局企业登录强关联,对外优先使用 scripts/invoice_collection_workflow.py collect,不要让用户单独调用登录 Skill。
本 skill 依赖企享云开放平台凭证:
client_appkeyclient_secretAPI 密钥申请:https://open.qixiangyun.com
凭证读取优先级:
.env.env(/Users/xueds/Python/skills/qixiangyun-skill/.env)QXY_CLIENT_APPKEY / QXY_CLIENT_SECRET首次使用时,如果凭证不存在:
client_appkey 和 client_secret appKey和appSecret请注册企享云开放平台申请 https://open.qixiangyun.com
.env:```env
QXY_CLIENT_APPKEY=用户提供的appkey
QXY_CLIENT_SECRET=用户提供的secret
```
本 skill 的四个发票归集工具与电子税务局企业登录强关联。发票归集入口会使用本 Skill 内置的税局登录能力完成:
nsrsbh、必要时的 aggOrgId/accountId自然人登录密码必须通过环境变量传入,避免明文落入命令历史:
export QXY_LOGIN_PASSWORD="your_password"
如果同一个自然人账号关联多个企业,流程会返回 enterprise_selector 卡点,再由用户补充 --enterprise-index、--nsrmc 或 --nsrsbh 继续同一个 collect 命令。如果用户直接回复数字 1 / 2 / 3,必须按展示顺序把该数字作为 --enterprise-index。
如果用户输入地区与选中企业所属地区不同,企业订购、多账号创建和企业登录都必须使用选中企业的地区代码。不得继续使用用户最初输入的地区覆盖选中企业地区。
如果返回 waiting_for_user_input=true,只能继续调用同一个 collect 命令并补充对应参数:
user_input_kind=enterprise_selector:展示返回的 enterprises,用户选择后补充 --enterprise-index、--nsrmc 或 --nsrsbhuser_input_kind=natural_sms_code:补充 --natural-sms-codeuser_input_kind=enterprise_sms_code:补充 --enterprise-sms-codensrsbh、aggOrgId、accountId 来自登录选中的企业。用户显式在 --args 中传入这些字段时,必须与登录结果一致;不一致时脚本会阻断调用,不能把 A 企业登录态用于 B 企业发票归集。
scripts/invoice_collection_workflow.py collectscripts/mcp_client.pycurl、requests、OpenAPI、网页浏览或手写 HTTP 请求发起业务调用client_secret 原文invoice_aggregation:发票归集详细映射见 references/mcp-services.md。
query_input_output_invoice_info_auto:进销项发票信息query_invoice_basic_info_auto:发票基础信息query_invoice_detail_aggregation_auto:发票详情归集query_taxable_voucher_input_tax_transfer_out_auto:应税凭证进项税额转出MCP 服务还暴露 clear_cache,仅用于认证缓存清理,不属于本 skill 的四个业务工具。
列出当前 skill 支持的服务:
python3 scripts/mcp_client.py --list-services
检查凭证是否已配置:
python3 scripts/mcp_client.py --check-config
列出 invoice_aggregation 服务下的工具:
python3 scripts/mcp_client.py --service invoice_aggregation --list-tools
查看工具 schema:
python3 scripts/mcp_client.py \
--service invoice_aggregation \
--describe-tool query_invoice_basic_info_auto
登录并查询进销项发票信息:
python3 scripts/invoice_collection_workflow.py collect \
--area-code 3100 \
--phone 13800138000 \
--password-env QXY_LOGIN_PASSWORD \
--tool query_input_output_invoice_info_auto \
--args '{"kprqq":"2026-01-01","kprqz":"2026-01-31","jxxbz":"jx","fplx":"10,14"}'
登录并分页查询发票基础信息:
python3 scripts/invoice_collection_workflow.py collect \
--area-code 3100 \
--phone 13800138000 \
--password-env QXY_LOGIN_PASSWORD \
--tool query_invoice_basic_info_auto \
--args '{"jxxbz":"jx","kprqq":"2026-01-01","kprqz":"2026-01-31","pageSize":100,"pageNumber":1}'
登录并查询单张发票详情:
python3 scripts/invoice_collection_workflow.py collect \
--area-code 3100 \
--phone 13800138000 \
--password-env QXY_LOGIN_PASSWORD \
--tool query_invoice_detail_aggregation_auto \
--args '{"jxxbz":"jx","kprq":"2026-01-16","gjlx":"1,2,3,4","sdphm":"26112000000*****"}'
登录并查询应税凭证进项税额转出:
python3 scripts/invoice_collection_workflow.py collect \
--area-code 3100 \
--phone 13800138000 \
--password-env QXY_LOGIN_PASSWORD \
--tool query_taxable_voucher_input_tax_transfer_out_auto \
--args '{"skssq":"202602"}'
输出结果应尽量包含以下信息:
scripts/invoice_collection_workflow.pyinvoice_aggregationnsrsbh、kprqq/kprqz、kprq、jxxbz、fplx、aggOrgId、skssqreqId、code、success、messagedata.jsonUrldata.Total、data.PageNumber、data.PageSize 或 data.totalenterpriseLogin.verified=true 只表示历史流程走到企业登录完成,不能直接等同于税局缓存仍有效。login_enterprise_account 校验缓存或快速登录;校验不 ready 时,保留企业选择、订购和多账号信息,清理企业登录态并重新发起企业短信登录。aggOrgId/accountId 可兼容读取历史 camelCase 和内部 snake_case 字段,但提交 invoice_aggregation MCP 前必须统一为 aggOrgId/accountId。accountId,否则服务端可能无法解析 gdsdlfs 登录方式并返回“gdsdlfs 不能为空”。query_invoice_detail_aggregation_auto 和 query_taxable_voucher_input_tax_transfer_out_auto 必须额外绑定登录返回的 aggOrgId。共 2 个版本