ccc-mcp 0.1.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. ccc_mcp-0.1.0/.env.example +7 -0
  2. ccc_mcp-0.1.0/.github/workflows/release.yaml +154 -0
  3. ccc_mcp-0.1.0/.gitignore +14 -0
  4. ccc_mcp-0.1.0/LICENSE +21 -0
  5. ccc_mcp-0.1.0/PKG-INFO +157 -0
  6. ccc_mcp-0.1.0/README.md +120 -0
  7. ccc_mcp-0.1.0/README_ZH.md +121 -0
  8. ccc_mcp-0.1.0/VALIDATION.md +143 -0
  9. ccc_mcp-0.1.0/docs/ch/1-install-and-sign-in.md +148 -0
  10. ccc_mcp-0.1.0/docs/ch/10-technical-reference.md +214 -0
  11. ccc_mcp-0.1.0/docs/ch/11-architecture-spec.md +975 -0
  12. ccc_mcp-0.1.0/docs/ch/12-chatgpt-only-e2e-walkthrough.md +165 -0
  13. ccc_mcp-0.1.0/docs/ch/13-meeting-mode-walkthrough.md +105 -0
  14. ccc_mcp-0.1.0/docs/ch/2-connect-chatgpt.md +104 -0
  15. ccc_mcp-0.1.0/docs/ch/3-first-project.md +86 -0
  16. ccc_mcp-0.1.0/docs/ch/4-workflow.md +141 -0
  17. ccc_mcp-0.1.0/docs/ch/5-configuration.md +92 -0
  18. ccc_mcp-0.1.0/docs/ch/6-skills.md +120 -0
  19. ccc_mcp-0.1.0/docs/ch/7-reliability-and-security.md +229 -0
  20. ccc_mcp-0.1.0/docs/ch/8-cli-reference.md +175 -0
  21. ccc_mcp-0.1.0/docs/ch/9-protocol.md +54 -0
  22. ccc_mcp-0.1.0/docs/ch/README.md +19 -0
  23. ccc_mcp-0.1.0/docs/en/1-install-and-sign-in.md +36 -0
  24. ccc_mcp-0.1.0/docs/en/10-technical-reference.md +19 -0
  25. ccc_mcp-0.1.0/docs/en/11-architecture-spec.md +22 -0
  26. ccc_mcp-0.1.0/docs/en/12-chatgpt-only-e2e-walkthrough.md +165 -0
  27. ccc_mcp-0.1.0/docs/en/13-meeting-mode-walkthrough.md +105 -0
  28. ccc_mcp-0.1.0/docs/en/2-connect-chatgpt.md +29 -0
  29. ccc_mcp-0.1.0/docs/en/3-first-project.md +70 -0
  30. ccc_mcp-0.1.0/docs/en/4-workflow.md +41 -0
  31. ccc_mcp-0.1.0/docs/en/5-configuration.md +72 -0
  32. ccc_mcp-0.1.0/docs/en/6-skills.md +98 -0
  33. ccc_mcp-0.1.0/docs/en/7-reliability-and-security.md +38 -0
  34. ccc_mcp-0.1.0/docs/en/8-cli-reference.md +68 -0
  35. ccc_mcp-0.1.0/docs/en/9-protocol.md +13 -0
  36. ccc_mcp-0.1.0/docs/en/README.md +19 -0
  37. ccc_mcp-0.1.0/docs/schema/agent-report.json +89 -0
  38. ccc_mcp-0.1.0/docs/schema/clarification-request.json +35 -0
  39. ccc_mcp-0.1.0/docs/schema/clarification-response.json +26 -0
  40. ccc_mcp-0.1.0/docs/schema/context-patch.json +92 -0
  41. ccc_mcp-0.1.0/docs/schema/context-snapshot.json +277 -0
  42. ccc_mcp-0.1.0/examples/PLAN-A.md +9 -0
  43. ccc_mcp-0.1.0/examples/context-patch.json +13 -0
  44. ccc_mcp-0.1.0/examples/demo.py +129 -0
  45. ccc_mcp-0.1.0/examples/mcp_probe.py +45 -0
  46. ccc_mcp-0.1.0/examples/shared-context/CONTEXT.md +36 -0
  47. ccc_mcp-0.1.0/examples/shared-context/SESSION-HANDOFF.md +40 -0
  48. ccc_mcp-0.1.0/examples/skills/demo-mcp-skill/SKILL.md +15 -0
  49. ccc_mcp-0.1.0/examples/skills/demo-multilevel-skill/SKILL.md +18 -0
  50. ccc_mcp-0.1.0/examples/skills/demo-multilevel-skill/references/deeper/level3.md +8 -0
  51. ccc_mcp-0.1.0/examples/skills/demo-multilevel-skill/references/level2.md +4 -0
  52. ccc_mcp-0.1.0/examples/skills/demo-nested-skill/SKILL.md +63 -0
  53. ccc_mcp-0.1.0/examples/skills/demo-nested-skill/references/notes.md +6 -0
  54. ccc_mcp-0.1.0/examples/skills/demo-nested-skill/scripts/helpers/check.sh +5 -0
  55. ccc_mcp-0.1.0/pyproject.toml +65 -0
  56. ccc_mcp-0.1.0/requirements-windows.lock +51 -0
  57. ccc_mcp-0.1.0/scripts/setup-real-agents.sh +91 -0
  58. ccc_mcp-0.1.0/src/ccc_mcp/__init__.py +3 -0
  59. ccc_mcp-0.1.0/src/ccc_mcp/__main__.py +3 -0
  60. ccc_mcp-0.1.0/src/ccc_mcp/adapters/__init__.py +0 -0
  61. ccc_mcp-0.1.0/src/ccc_mcp/adapters/agent_setup.py +139 -0
  62. ccc_mcp-0.1.0/src/ccc_mcp/adapters/agents/__init__.py +14 -0
  63. ccc_mcp-0.1.0/src/ccc_mcp/adapters/agents/base.py +361 -0
  64. ccc_mcp-0.1.0/src/ccc_mcp/adapters/agents/claude.py +125 -0
  65. ccc_mcp-0.1.0/src/ccc_mcp/adapters/agents/codex.py +111 -0
  66. ccc_mcp-0.1.0/src/ccc_mcp/adapters/agents/fake.py +67 -0
  67. ccc_mcp-0.1.0/src/ccc_mcp/adapters/codebase_snapshot.py +136 -0
  68. ccc_mcp-0.1.0/src/ccc_mcp/adapters/git.py +75 -0
  69. ccc_mcp-0.1.0/src/ccc_mcp/adapters/mcp_servers.py +361 -0
  70. ccc_mcp-0.1.0/src/ccc_mcp/adapters/skills.py +173 -0
  71. ccc_mcp-0.1.0/src/ccc_mcp/adapters/storage.py +246 -0
  72. ccc_mcp-0.1.0/src/ccc_mcp/adapters/test_runner.py +307 -0
  73. ccc_mcp-0.1.0/src/ccc_mcp/adapters/tunnel_client.py +178 -0
  74. ccc_mcp-0.1.0/src/ccc_mcp/core/__init__.py +0 -0
  75. ccc_mcp-0.1.0/src/ccc_mcp/core/access.py +182 -0
  76. ccc_mcp-0.1.0/src/ccc_mcp/core/approval.py +33 -0
  77. ccc_mcp-0.1.0/src/ccc_mcp/core/configuration.py +952 -0
  78. ccc_mcp-0.1.0/src/ccc_mcp/core/context.py +1598 -0
  79. ccc_mcp-0.1.0/src/ccc_mcp/core/directedit.py +372 -0
  80. ccc_mcp-0.1.0/src/ccc_mcp/core/evidence.py +35 -0
  81. ccc_mcp-0.1.0/src/ccc_mcp/core/models.py +171 -0
  82. ccc_mcp-0.1.0/src/ccc_mcp/core/tasks.py +3073 -0
  83. ccc_mcp-0.1.0/src/ccc_mcp/core/workspace.py +376 -0
  84. ccc_mcp-0.1.0/src/ccc_mcp/infra/__init__.py +0 -0
  85. ccc_mcp-0.1.0/src/ccc_mcp/infra/config.py +35 -0
  86. ccc_mcp-0.1.0/src/ccc_mcp/infra/errors.py +24 -0
  87. ccc_mcp-0.1.0/src/ccc_mcp/infra/security.py +137 -0
  88. ccc_mcp-0.1.0/src/ccc_mcp/infra/telemetry.py +137 -0
  89. ccc_mcp-0.1.0/src/ccc_mcp/interfaces/__init__.py +0 -0
  90. ccc_mcp-0.1.0/src/ccc_mcp/interfaces/cli.py +2062 -0
  91. ccc_mcp-0.1.0/src/ccc_mcp/interfaces/server.py +655 -0
  92. ccc_mcp-0.1.0/src/ccc_mcp/service.py +19 -0
  93. ccc_mcp-0.1.0/src/ccc_mcp/worker.py +274 -0
  94. ccc_mcp-0.1.0/test-results.txt +2 -0
  95. ccc_mcp-0.1.0/tests/conftest.py +74 -0
  96. ccc_mcp-0.1.0/tests/test_adapters.py +310 -0
  97. ccc_mcp-0.1.0/tests/test_agent_setup.py +167 -0
  98. ccc_mcp-0.1.0/tests/test_chatgpt_only_profile.py +201 -0
  99. ccc_mcp-0.1.0/tests/test_clear_history.py +84 -0
  100. ccc_mcp-0.1.0/tests/test_codebase_snapshot_skill.py +130 -0
  101. ccc_mcp-0.1.0/tests/test_configurable_agents.py +924 -0
  102. ccc_mcp-0.1.0/tests/test_context.py +236 -0
  103. ccc_mcp-0.1.0/tests/test_context_budget_enforcement.py +93 -0
  104. ccc_mcp-0.1.0/tests/test_context_refinement.py +306 -0
  105. ccc_mcp-0.1.0/tests/test_continuous_workflow.py +259 -0
  106. ccc_mcp-0.1.0/tests/test_dependency_install.py +271 -0
  107. ccc_mcp-0.1.0/tests/test_directedit.py +307 -0
  108. ccc_mcp-0.1.0/tests/test_fallback_classification.py +67 -0
  109. ccc_mcp-0.1.0/tests/test_mcp_cli.py +778 -0
  110. ccc_mcp-0.1.0/tests/test_mcp_install.py +362 -0
  111. ccc_mcp-0.1.0/tests/test_mcp_proxy.py +209 -0
  112. ccc_mcp-0.1.0/tests/test_meeting_mode.py +518 -0
  113. ccc_mcp-0.1.0/tests/test_meeting_mode_chatgpt.py +177 -0
  114. ccc_mcp-0.1.0/tests/test_project_access.py +175 -0
  115. ccc_mcp-0.1.0/tests/test_project_deletion.py +88 -0
  116. ccc_mcp-0.1.0/tests/test_project_root_recovery.py +111 -0
  117. ccc_mcp-0.1.0/tests/test_project_scope.py +252 -0
  118. ccc_mcp-0.1.0/tests/test_protocol_schema.py +44 -0
  119. ccc_mcp-0.1.0/tests/test_real_agents.py +95 -0
  120. ccc_mcp-0.1.0/tests/test_resumable_advance.py +292 -0
  121. ccc_mcp-0.1.0/tests/test_security.py +222 -0
  122. ccc_mcp-0.1.0/tests/test_skills.py +167 -0
  123. ccc_mcp-0.1.0/tests/test_skills_integration.py +59 -0
  124. ccc_mcp-0.1.0/tests/test_skills_multilevel.py +52 -0
  125. ccc_mcp-0.1.0/tests/test_task_handoff.py +317 -0
  126. ccc_mcp-0.1.0/tests/test_task_preflight.py +512 -0
  127. ccc_mcp-0.1.0/tests/test_tasks.py +282 -0
  128. ccc_mcp-0.1.0/tests/test_test_evidence.py +216 -0
  129. ccc_mcp-0.1.0/tests/test_tunnel_client.py +219 -0
  130. ccc_mcp-0.1.0/tests/test_tunnel_reload.py +90 -0
  131. ccc_mcp-0.1.0/tests/test_verification_evidence.py +211 -0
@@ -0,0 +1,7 @@
1
+ # Set in the OS environment; this file is not loaded automatically.
2
+ # Register a project, then grant access once in the local terminal:
3
+ # ccc-mcp project add "D:/Projects/my-app" --id my-app
4
+ # ccc-mcp project authorize my-app
5
+ # CCC_MCP_HOME=C:\Users\YOUR_NAME\.ccc-mcp
6
+ # Real agents are opt-in; Fake requires no login or model credits.
7
+ CCC_MCP_ENABLE_REAL_AGENTS=0
@@ -0,0 +1,154 @@
1
+ name: Release
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ inputs:
6
+ version:
7
+ description: Release version without the v prefix (for example 0.1.1)
8
+ required: true
9
+ type: string
10
+
11
+ permissions:
12
+ contents: read
13
+
14
+ concurrency:
15
+ group: release-${{ inputs.version }}
16
+ cancel-in-progress: false
17
+
18
+ jobs:
19
+ lint:
20
+ runs-on: ubuntu-latest
21
+ steps:
22
+ - uses: actions/checkout@v7
23
+ - uses: actions/setup-python@v7
24
+ with:
25
+ python-version: "3.12"
26
+ cache: pip
27
+ - run: python -m pip install "ruff>=0.13,<1"
28
+ - run: ruff check src tests
29
+
30
+ test:
31
+ name: test (${{ matrix.os }}, py${{ matrix.python-version }})
32
+ runs-on: ${{ matrix.os }}
33
+ strategy:
34
+ fail-fast: false
35
+ matrix:
36
+ include:
37
+ # Linux covers every supported Python version. macOS and Windows run the
38
+ # same suite once to catch OS-specific path, process and locking behavior.
39
+ - os: ubuntu-latest
40
+ python-version: "3.11"
41
+ - os: ubuntu-latest
42
+ python-version: "3.12"
43
+ - os: ubuntu-latest
44
+ python-version: "3.13"
45
+ - os: ubuntu-latest
46
+ python-version: "3.14"
47
+ - os: macos-latest
48
+ python-version: "3.14"
49
+ - os: windows-latest
50
+ python-version: "3.14"
51
+ steps:
52
+ - uses: actions/checkout@v7
53
+ - uses: actions/setup-python@v7
54
+ with:
55
+ python-version: ${{ matrix.python-version }}
56
+ cache: pip
57
+ - name: Configure Git identity
58
+ run: |
59
+ git config --global user.name "ci"
60
+ git config --global user.email "ci@example.invalid"
61
+ git config --global init.defaultBranch main
62
+ - run: python -m pip install -e ".[dev]"
63
+ - run: python -m pytest -q
64
+
65
+ build:
66
+ name: build sdist + wheel
67
+ runs-on: ubuntu-latest
68
+ outputs:
69
+ version: ${{ steps.version.outputs.version }}
70
+ steps:
71
+ - uses: actions/checkout@v7
72
+ - uses: actions/setup-python@v7
73
+ with:
74
+ python-version: "3.12"
75
+ - name: Version must match the package
76
+ id: version
77
+ env:
78
+ RELEASE_VERSION: ${{ inputs.version }}
79
+ run: |
80
+ version=$(sed -n 's/^__version__ = "\(.*\)"$/\1/p' src/ccc_mcp/__init__.py)
81
+ if [ "${RELEASE_VERSION}" != "${version}" ]; then
82
+ echo "Requested version ${RELEASE_VERSION} does not match package version ${version}" >&2
83
+ exit 1
84
+ fi
85
+ echo "version=${version}" >> "${GITHUB_OUTPUT}"
86
+ - run: python -m pip install build twine
87
+ - run: python -m build
88
+ - run: python -m twine check --strict dist/*
89
+ - name: Require one universal wheel
90
+ run: python -c "from pathlib import Path; wheels = list(Path('dist').glob('*.whl')); assert len(wheels) == 1 and wheels[0].name.endswith('-py3-none-any.whl'), wheels"
91
+ - uses: actions/upload-artifact@v7
92
+ with:
93
+ name: dist
94
+ path: dist/
95
+ if-no-files-found: error
96
+
97
+ smoke-install:
98
+ name: install wheel (${{ matrix.os }})
99
+ needs: build
100
+ runs-on: ${{ matrix.os }}
101
+ strategy:
102
+ fail-fast: false
103
+ matrix:
104
+ os: [ubuntu-latest, macos-latest, windows-latest]
105
+ steps:
106
+ - uses: actions/setup-python@v7
107
+ with:
108
+ python-version: "3.14"
109
+ - uses: actions/download-artifact@v8
110
+ with:
111
+ name: dist
112
+ path: dist
113
+ - name: Install the exact built wheel
114
+ run: python -c "from pathlib import Path; import subprocess, sys; wheels = list(Path('dist').glob('*.whl')); assert len(wheels) == 1, wheels; subprocess.check_call([sys.executable, '-m', 'pip', 'install', str(wheels[0])])"
115
+ - name: Smoke-test the installed CLI
116
+ run: |
117
+ python -m ccc_mcp --help
118
+ python -c "import ccc_mcp, importlib.metadata as m; assert ccc_mcp.__version__ == m.version('ccc-mcp'); print(ccc_mcp.__version__)"
119
+ - name: Verify the Windows runtime dependency
120
+ if: runner.os == 'Windows'
121
+ run: python -c "import win32job"
122
+
123
+ github-release:
124
+ name: attach build to GitHub Release
125
+ needs: [lint, test, build, smoke-install]
126
+ runs-on: ubuntu-latest
127
+ permissions:
128
+ contents: write
129
+ steps:
130
+ - uses: actions/download-artifact@v8
131
+ with:
132
+ name: dist
133
+ path: dist
134
+ - name: Create release with the sdist and wheel
135
+ env:
136
+ GH_TOKEN: ${{ github.token }}
137
+ RELEASE_VERSION: ${{ needs.build.outputs.version }}
138
+ run: gh release create "v${RELEASE_VERSION}" dist/* --repo "${GITHUB_REPOSITORY}" --target "${GITHUB_SHA}" --title "v${RELEASE_VERSION}" --generate-notes
139
+
140
+ publish:
141
+ name: publish
142
+ needs: [build, smoke-install, github-release]
143
+ runs-on: ubuntu-latest
144
+ environment:
145
+ name: pypi
146
+ url: https://pypi.org/p/ccc-mcp
147
+ permissions:
148
+ id-token: write
149
+ steps:
150
+ - uses: actions/download-artifact@v8
151
+ with:
152
+ name: dist
153
+ path: dist
154
+ - uses: pypa/gh-action-pypi-publish@v1.14.2
@@ -0,0 +1,14 @@
1
+ .venv/
2
+ __pycache__/
3
+ *.py[cod]
4
+ .pytest_cache/
5
+ .ruff_cache/
6
+ dist/
7
+ *.egg-info/
8
+ .env
9
+ .ccc-mcp/
10
+ .agentbridge/
11
+ .demo/
12
+ .tools/
13
+ .tunnel/
14
+ npm
ccc_mcp-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 bruce601080102
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
ccc_mcp-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,157 @@
1
+ Metadata-Version: 2.5
2
+ Name: ccc-mcp
3
+ Version: 0.1.0
4
+ Summary: Persistent context and governed agent orchestration over MCP
5
+ Project-URL: Homepage, https://github.com/bruce601080102/ccc-mcp
6
+ Project-URL: Repository, https://github.com/bruce601080102/ccc-mcp
7
+ Project-URL: Issues, https://github.com/bruce601080102/ccc-mcp/issues
8
+ License-Expression: MIT
9
+ License-File: LICENSE
10
+ Keywords: ai-agents,chatgpt,claude-code,codex,mcp,workflow
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Environment :: Console
13
+ Classifier: Intended Audience :: Developers
14
+ Classifier: Operating System :: MacOS
15
+ Classifier: Operating System :: Microsoft :: Windows
16
+ Classifier: Operating System :: POSIX :: Linux
17
+ Classifier: Programming Language :: Python :: 3
18
+ Classifier: Programming Language :: Python :: 3.11
19
+ Classifier: Programming Language :: Python :: 3.12
20
+ Classifier: Programming Language :: Python :: 3.13
21
+ Classifier: Programming Language :: Python :: 3.14
22
+ Classifier: Topic :: Software Development
23
+ Requires-Python: >=3.11
24
+ Requires-Dist: mcp<3,>=2.3
25
+ Requires-Dist: portalocker<4,>=3
26
+ Requires-Dist: psutil<8,>=7
27
+ Requires-Dist: pydantic<3,>=2.10
28
+ Requires-Dist: pyjwt[crypto]<3,>=2.10
29
+ Requires-Dist: pywin32>=311; sys_platform == 'win32'
30
+ Requires-Dist: typer<1,>=0.16
31
+ Provides-Extra: dev
32
+ Requires-Dist: httpx<1,>=0.28; extra == 'dev'
33
+ Requires-Dist: pytest-asyncio<2,>=1; extra == 'dev'
34
+ Requires-Dist: pytest<10,>=8; extra == 'dev'
35
+ Requires-Dist: ruff<1,>=0.13; extra == 'dev'
36
+ Description-Content-Type: text/markdown
37
+
38
+ # ccc-mcp
39
+
40
+ **Let the right coding agent do the right job—and keep the handoff verifiable.**
41
+
42
+ [![CI](https://img.shields.io/github/actions/workflow/status/bruce601080102/ccc-mcp/release.yaml?branch=main&style=flat-square&logo=githubactions&logoColor=white&label=CI)](https://github.com/bruce601080102/ccc-mcp/actions/workflows/release.yaml)
43
+ [![Python 3.11+](https://img.shields.io/badge/Python-3.11%2B-3776AB?style=flat-square&logo=python&logoColor=white)](https://www.python.org/downloads/)
44
+ [![Platforms](https://img.shields.io/badge/Platforms-macOS%20%7C%20Linux%20%7C%20Windows-555555?style=flat-square)](docs/en/1-install-and-sign-in.md)
45
+ [![MCP](https://img.shields.io/badge/Protocol-MCP-6E56CF?style=flat-square)](https://modelcontextprotocol.io/)
46
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue?style=flat-square)](LICENSE)
47
+
48
+ [![ChatGPT](https://img.shields.io/badge/ChatGPT-PM-10A37F?style=flat-square)](docs/en/2-connect-chatgpt.md)
49
+ [![Codex](https://img.shields.io/badge/Codex-SA%20%C2%B7%20REVIEW-000000?style=flat-square)](docs/en/4-workflow.md)
50
+ [![Claude Code](https://img.shields.io/badge/Claude%20Code-SD%2FRD-D97757?style=flat-square)](docs/en/4-workflow.md)
51
+
52
+ ccc-mcp is a local MCP workflow for software projects. ChatGPT manages the request and shared context; Codex can analyse and review; Claude Code can implement. Or, when that is the better fit, ChatGPT can run every workflow role itself. Each handoff retains the evidence needed to continue, review, or recover the work.
53
+
54
+ It is designed for people who use more than one AI coding tool and do not want a quota limit, lost chat history, or an unverified "tests passed" claim to end a project.
55
+
56
+ > [Traditional Chinese README](README_ZH.md) · [English documentation](docs/en/1-install-and-sign-in.md)
57
+
58
+ ## What it does
59
+
60
+ - Routes work through configurable `PM → SA → SD/RD → REVIEW → PM` roles.
61
+ - Preserves versioned shared context, raw agent reports, diffs, and host-observed test evidence.
62
+ - Uses Codex and Claude Code through their native CLIs, or assigns every role to ChatGPT for a ChatGPT-only workflow.
63
+ - Falls back only for recognised quota exhaustion, never for a normal install, login, or execution error.
64
+ - Shares operator-installed `SKILL.md` guidance across all roles.
65
+
66
+ ## Choose your mode
67
+
68
+ **Best-model workflow** uses ChatGPT as PM, Codex for analysis/review, and Claude Code for implementation. It is the default when you have all three tools.
69
+
70
+ **ChatGPT-only workflow** sets all five role slots (`SA`, `SD`, `RD`, `SD/RD`, and `REVIEW`) to ChatGPT via `config profile chatgpt-only` — including the standalone `SD`/`RD` slots, so neither `config show` nor a manual dispatch is left showing a leftover Codex/Claude provider. The automatic workflow itself still only ever dispatches `SA → SD/RD → REVIEW`. It needs no Codex or Claude Code CLI, so it does not consume their CLI allowances. Available models, quotas, and tool access always follow your connected ChatGPT account and plan — never assume unlimited usage.
71
+
72
+ ## Quick start
73
+
74
+ Prerequisites: Git, Python 3.11+, and an OpenAI Platform Tunnel. The best-model workflow also needs signed-in Codex and/or Claude Code accounts.
75
+
76
+ ```bash
77
+ git clone https://github.com/bruce601080102/ccc-mcp.git
78
+ cd ccc-mcp
79
+ source scripts/setup-real-agents.sh
80
+ # Run this only when using Codex and/or Claude Code:
81
+ ccc-mcp setup all
82
+
83
+ ccc-mcp project create hello-demo
84
+ ccc-mcp project authorize hello-demo
85
+ ```
86
+
87
+ For a ChatGPT-only workflow, omit `ccc-mcp setup all`, then apply the `chatgpt-only` profile after creating the project:
88
+
89
+ ```bash
90
+ ccc-mcp --project hello-demo config profile chatgpt-only
91
+ ```
92
+
93
+ Connect the local server to ChatGPT with the Tunnel instructions in [Chinese](docs/ch/2-connect-chatgpt.md) or [English](docs/en/2-connect-chatgpt.md). Then ask ChatGPT, with the ccc-mcp connection selected:
94
+
95
+ > Create `hello.py` in `hello-demo`; it should print `Hello, World!`, with a test that verifies the output.
96
+
97
+ Verify the work on the machine that owns the project:
98
+
99
+ ```bash
100
+ ccc-mcp --project hello-demo task status
101
+ ccc-mcp --project hello-demo task usage
102
+ ccc-mcp --project hello-demo context show
103
+ ```
104
+
105
+ For a native role, `task usage` is the source of truth for whether its CLI was actually invoked. A ChatGPT role is intentionally interactive and has no native CLI invocation: `task usage` marks it `"interactive": true` with `invocation.source: "chatgpt_web"`, so `cli_invoked: false` there reads as "by design," never as an ambiguous CLI failure. In either mode, a reported success is not sufficient: the configured host test command is recorded before review can complete the task.
106
+
107
+ `ccc-mcp --project hello-demo config show` (or `config providers`) also reports a read-only `profile` field — `chatgpt-only`, `best-model`, or `custom` — derived live from every role's current provider. Switch back at any time with `ccc-mcp --project hello-demo config profile best-model`, which resolves dynamically from whichever native CLIs are actually installed (both → the Codex/Claude split; only one → every role on it; neither → rejected).
108
+
109
+ ## How the workflow works
110
+
111
+ ```text
112
+ ChatGPT (PM) → Codex (SA) → Claude Code (SD/RD) → Codex (REVIEW)
113
+ ↑ │
114
+ └──────── shared context + evidence + next task ─────┘
115
+ ```
116
+
117
+ The defaults are deliberately opinionated, not mandatory. Assign any supported provider to a role:
118
+
119
+ ```bash
120
+ ccc-mcp --project hello-demo config role REVIEW codex --effort high --quota-fallback chatgpt
121
+ ccc-mcp --project hello-demo config role SD/RD claude
122
+ ccc-mcp --project hello-demo config show
123
+ ```
124
+
125
+ For the complete role and workflow model, see [the workflow guide](docs/en/4-workflow.md) or the [Traditional Chinese guide](docs/ch/4-workflow.md).
126
+
127
+ ## Documentation
128
+
129
+ Read the numbered documents in order for a full setup. The two language trees use the same filenames and sequence.
130
+
131
+ | Step | Topic |
132
+ | --- | --- |
133
+ | 1 | Install and sign in |
134
+ | 2 | Connect ChatGPT |
135
+ | 3 | Create and authorize a first project |
136
+ | 4 | Run and resume the workflow |
137
+ | 5 | Configure providers, roles, context, and tests |
138
+ | 6 | Install and use skills |
139
+ | 7 | Understand reliability and security boundaries |
140
+ | 8–11 | CLI reference, public protocol, technical reference, and architecture |
141
+
142
+ - [Traditional Chinese README](README_ZH.md)
143
+ - [English documentation index](docs/en/README.md)
144
+
145
+ ## Important boundary
146
+
147
+ `project authorize` permits ccc-mcp to modify that project and run its configured test command. Dependency installation can execute package scripts, so review dependency changes as part of the diff. Codex runs in its configured sandbox. Claude Code has a restricted tool policy, but does **not** yet have an equivalent OS-enforced sandbox; use a least-privileged OS account for it.
148
+
149
+ Done with a project? `ccc-mcp project revoke <id>` (if still authorized) then `ccc-mcp project delete <id>` permanently removes it from `project list` and blocks the ID from ever being used or re-registered again. It never deletes files on disk or any historical Context/task/evidence — delete the project directory yourself once you've confirmed its path. See [reliability and security](docs/en/7-reliability-and-security.md) for the full guarantee.
150
+
151
+ ## Development
152
+
153
+ ```bash
154
+ python3.11 -m pytest -q
155
+ ```
156
+
157
+ The repository requires Python 3.11 or newer. Real-agent tests are opt-in because they need locally installed, authenticated CLIs; see [Chinese](docs/ch/1-install-and-sign-in.md) or [English](docs/en/1-install-and-sign-in.md).
@@ -0,0 +1,120 @@
1
+ # ccc-mcp
2
+
3
+ **Let the right coding agent do the right job—and keep the handoff verifiable.**
4
+
5
+ [![CI](https://img.shields.io/github/actions/workflow/status/bruce601080102/ccc-mcp/release.yaml?branch=main&style=flat-square&logo=githubactions&logoColor=white&label=CI)](https://github.com/bruce601080102/ccc-mcp/actions/workflows/release.yaml)
6
+ [![Python 3.11+](https://img.shields.io/badge/Python-3.11%2B-3776AB?style=flat-square&logo=python&logoColor=white)](https://www.python.org/downloads/)
7
+ [![Platforms](https://img.shields.io/badge/Platforms-macOS%20%7C%20Linux%20%7C%20Windows-555555?style=flat-square)](docs/en/1-install-and-sign-in.md)
8
+ [![MCP](https://img.shields.io/badge/Protocol-MCP-6E56CF?style=flat-square)](https://modelcontextprotocol.io/)
9
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue?style=flat-square)](LICENSE)
10
+
11
+ [![ChatGPT](https://img.shields.io/badge/ChatGPT-PM-10A37F?style=flat-square)](docs/en/2-connect-chatgpt.md)
12
+ [![Codex](https://img.shields.io/badge/Codex-SA%20%C2%B7%20REVIEW-000000?style=flat-square)](docs/en/4-workflow.md)
13
+ [![Claude Code](https://img.shields.io/badge/Claude%20Code-SD%2FRD-D97757?style=flat-square)](docs/en/4-workflow.md)
14
+
15
+ ccc-mcp is a local MCP workflow for software projects. ChatGPT manages the request and shared context; Codex can analyse and review; Claude Code can implement. Or, when that is the better fit, ChatGPT can run every workflow role itself. Each handoff retains the evidence needed to continue, review, or recover the work.
16
+
17
+ It is designed for people who use more than one AI coding tool and do not want a quota limit, lost chat history, or an unverified "tests passed" claim to end a project.
18
+
19
+ > [Traditional Chinese README](README_ZH.md) · [English documentation](docs/en/1-install-and-sign-in.md)
20
+
21
+ ## What it does
22
+
23
+ - Routes work through configurable `PM → SA → SD/RD → REVIEW → PM` roles.
24
+ - Preserves versioned shared context, raw agent reports, diffs, and host-observed test evidence.
25
+ - Uses Codex and Claude Code through their native CLIs, or assigns every role to ChatGPT for a ChatGPT-only workflow.
26
+ - Falls back only for recognised quota exhaustion, never for a normal install, login, or execution error.
27
+ - Shares operator-installed `SKILL.md` guidance across all roles.
28
+
29
+ ## Choose your mode
30
+
31
+ **Best-model workflow** uses ChatGPT as PM, Codex for analysis/review, and Claude Code for implementation. It is the default when you have all three tools.
32
+
33
+ **ChatGPT-only workflow** sets all five role slots (`SA`, `SD`, `RD`, `SD/RD`, and `REVIEW`) to ChatGPT via `config profile chatgpt-only` — including the standalone `SD`/`RD` slots, so neither `config show` nor a manual dispatch is left showing a leftover Codex/Claude provider. The automatic workflow itself still only ever dispatches `SA → SD/RD → REVIEW`. It needs no Codex or Claude Code CLI, so it does not consume their CLI allowances. Available models, quotas, and tool access always follow your connected ChatGPT account and plan — never assume unlimited usage.
34
+
35
+ ## Quick start
36
+
37
+ Prerequisites: Git, Python 3.11+, and an OpenAI Platform Tunnel. The best-model workflow also needs signed-in Codex and/or Claude Code accounts.
38
+
39
+ ```bash
40
+ git clone https://github.com/bruce601080102/ccc-mcp.git
41
+ cd ccc-mcp
42
+ source scripts/setup-real-agents.sh
43
+ # Run this only when using Codex and/or Claude Code:
44
+ ccc-mcp setup all
45
+
46
+ ccc-mcp project create hello-demo
47
+ ccc-mcp project authorize hello-demo
48
+ ```
49
+
50
+ For a ChatGPT-only workflow, omit `ccc-mcp setup all`, then apply the `chatgpt-only` profile after creating the project:
51
+
52
+ ```bash
53
+ ccc-mcp --project hello-demo config profile chatgpt-only
54
+ ```
55
+
56
+ Connect the local server to ChatGPT with the Tunnel instructions in [Chinese](docs/ch/2-connect-chatgpt.md) or [English](docs/en/2-connect-chatgpt.md). Then ask ChatGPT, with the ccc-mcp connection selected:
57
+
58
+ > Create `hello.py` in `hello-demo`; it should print `Hello, World!`, with a test that verifies the output.
59
+
60
+ Verify the work on the machine that owns the project:
61
+
62
+ ```bash
63
+ ccc-mcp --project hello-demo task status
64
+ ccc-mcp --project hello-demo task usage
65
+ ccc-mcp --project hello-demo context show
66
+ ```
67
+
68
+ For a native role, `task usage` is the source of truth for whether its CLI was actually invoked. A ChatGPT role is intentionally interactive and has no native CLI invocation: `task usage` marks it `"interactive": true` with `invocation.source: "chatgpt_web"`, so `cli_invoked: false` there reads as "by design," never as an ambiguous CLI failure. In either mode, a reported success is not sufficient: the configured host test command is recorded before review can complete the task.
69
+
70
+ `ccc-mcp --project hello-demo config show` (or `config providers`) also reports a read-only `profile` field — `chatgpt-only`, `best-model`, or `custom` — derived live from every role's current provider. Switch back at any time with `ccc-mcp --project hello-demo config profile best-model`, which resolves dynamically from whichever native CLIs are actually installed (both → the Codex/Claude split; only one → every role on it; neither → rejected).
71
+
72
+ ## How the workflow works
73
+
74
+ ```text
75
+ ChatGPT (PM) → Codex (SA) → Claude Code (SD/RD) → Codex (REVIEW)
76
+ ↑ │
77
+ └──────── shared context + evidence + next task ─────┘
78
+ ```
79
+
80
+ The defaults are deliberately opinionated, not mandatory. Assign any supported provider to a role:
81
+
82
+ ```bash
83
+ ccc-mcp --project hello-demo config role REVIEW codex --effort high --quota-fallback chatgpt
84
+ ccc-mcp --project hello-demo config role SD/RD claude
85
+ ccc-mcp --project hello-demo config show
86
+ ```
87
+
88
+ For the complete role and workflow model, see [the workflow guide](docs/en/4-workflow.md) or the [Traditional Chinese guide](docs/ch/4-workflow.md).
89
+
90
+ ## Documentation
91
+
92
+ Read the numbered documents in order for a full setup. The two language trees use the same filenames and sequence.
93
+
94
+ | Step | Topic |
95
+ | --- | --- |
96
+ | 1 | Install and sign in |
97
+ | 2 | Connect ChatGPT |
98
+ | 3 | Create and authorize a first project |
99
+ | 4 | Run and resume the workflow |
100
+ | 5 | Configure providers, roles, context, and tests |
101
+ | 6 | Install and use skills |
102
+ | 7 | Understand reliability and security boundaries |
103
+ | 8–11 | CLI reference, public protocol, technical reference, and architecture |
104
+
105
+ - [Traditional Chinese README](README_ZH.md)
106
+ - [English documentation index](docs/en/README.md)
107
+
108
+ ## Important boundary
109
+
110
+ `project authorize` permits ccc-mcp to modify that project and run its configured test command. Dependency installation can execute package scripts, so review dependency changes as part of the diff. Codex runs in its configured sandbox. Claude Code has a restricted tool policy, but does **not** yet have an equivalent OS-enforced sandbox; use a least-privileged OS account for it.
111
+
112
+ Done with a project? `ccc-mcp project revoke <id>` (if still authorized) then `ccc-mcp project delete <id>` permanently removes it from `project list` and blocks the ID from ever being used or re-registered again. It never deletes files on disk or any historical Context/task/evidence — delete the project directory yourself once you've confirmed its path. See [reliability and security](docs/en/7-reliability-and-security.md) for the full guarantee.
113
+
114
+ ## Development
115
+
116
+ ```bash
117
+ python3.11 -m pytest -q
118
+ ```
119
+
120
+ The repository requires Python 3.11 or newer. Real-agent tests are opt-in because they need locally installed, authenticated CLIs; see [Chinese](docs/ch/1-install-and-sign-in.md) or [English](docs/en/1-install-and-sign-in.md).
@@ -0,0 +1,121 @@
1
+ # ccc-mcp
2
+
3
+ **讓最適合的 coding agent 負責最適合的工作,並讓每一次交接都能驗證。**
4
+
5
+ [![CI](https://img.shields.io/github/actions/workflow/status/bruce601080102/ccc-mcp/release.yaml?branch=main&style=flat-square&logo=githubactions&logoColor=white&label=CI)](https://github.com/bruce601080102/ccc-mcp/actions/workflows/release.yaml)
6
+ [![Python 3.11+](https://img.shields.io/badge/Python-3.11%2B-3776AB?style=flat-square&logo=python&logoColor=white)](https://www.python.org/downloads/)
7
+ [![Platforms](https://img.shields.io/badge/Platforms-macOS%20%7C%20Linux%20%7C%20Windows-555555?style=flat-square)](docs/ch/1-install-and-sign-in.md)
8
+ [![MCP](https://img.shields.io/badge/Protocol-MCP-6E56CF?style=flat-square)](https://modelcontextprotocol.io/)
9
+ [![License: MIT](https://img.shields.io/badge/License-MIT-blue?style=flat-square)](LICENSE)
10
+
11
+ [![ChatGPT](https://img.shields.io/badge/ChatGPT-PM-10A37F?style=flat-square)](docs/ch/2-connect-chatgpt.md)
12
+ [![Codex](https://img.shields.io/badge/Codex-SA%20%C2%B7%20REVIEW-000000?style=flat-square)](docs/ch/4-workflow.md)
13
+ [![Claude Code](https://img.shields.io/badge/Claude%20Code-SD%2FRD-D97757?style=flat-square)](docs/ch/4-workflow.md)
14
+
15
+ ccc-mcp 是給軟體專案使用的本機 MCP 工作流程。ChatGPT 管理需求與共用 Context;Codex 可以負責分析與審查;Claude Code 可以負責實作。若那才是合適選擇,也能讓 ChatGPT 單獨完成所有工作流角色。每一次交接都會保留繼續工作、審查或恢復任務需要的證據。
16
+
17
+ 它適合同時使用多種 AI coding 工具的人:不讓額度耗盡、對話遺失,或模型一句「測試通過」就中止專案。
18
+
19
+ > [English README](README.md) · [繁體中文文件](docs/ch/1-install-and-sign-in.md)
20
+
21
+ ## 它能做什麼
22
+
23
+ - 以可設定的 `PM → SA → SD/RD → REVIEW → PM` 角色接力處理工作。
24
+ - 保存版本化共用 Context、原始 agent 報告、diff 與主機實際觀察到的測試證據。
25
+ - 透過原生 CLI 使用 Codex 和 Claude Code,也可將所有角色指定給 ChatGPT,走 ChatGPT-only workflow。
26
+ - 只在辨識為額度耗盡時才啟用 fallback,不會把安裝、登入或一般執行錯誤誤當成額度問題。
27
+ - 讓操作者安裝的 `SKILL.md` 指引可供所有角色使用。
28
+
29
+ ## 選擇模式
30
+
31
+ **最佳模型工作流**:ChatGPT 擔任 PM、Codex 負責分析與審查、Claude Code 負責實作。若你三種工具都有,這是預設模式。
32
+
33
+ **ChatGPT-only workflow**:用 `config profile chatgpt-only` 把全部五個角色(`SA`、`SD`、`RD`、`SD/RD`、`REVIEW`)都設為 ChatGPT——包含獨立的 `SD`、`RD`,`config show` 或手動派工都不會殘留 Codex/Claude。自動工作流本身實際上仍只會接力派發 `SA → SD/RD → REVIEW`。不需要 Codex 或 Claude Code CLI,也不會消耗它們的 CLI 額度;但可用模型、額度與功能一律依你連接的 ChatGPT 帳戶與方案而定,不要假設額度是無限的。
34
+
35
+ ## 快速開始
36
+
37
+ 需求:Git、Python 3.11 以上、OpenAI Platform Tunnel。最佳模型工作流另需已登入的 Codex 和/或 Claude Code 帳戶。
38
+
39
+ ```bash
40
+ git clone https://github.com/bruce601080102/ccc-mcp.git
41
+ cd ccc-mcp
42
+ source scripts/setup-real-agents.sh
43
+ # 只有要使用 Codex 和/或 Claude Code 時才執行:
44
+ ccc-mcp setup all
45
+
46
+ ccc-mcp project create hello-demo
47
+ ccc-mcp project authorize hello-demo
48
+ ```
49
+
50
+ 若要全程使用 ChatGPT,略過 `ccc-mcp setup all`,建立專案後套用 `chatgpt-only` profile:
51
+
52
+ ```bash
53
+ ccc-mcp --project hello-demo config profile chatgpt-only
54
+ ```
55
+
56
+ 依照[連接 ChatGPT](docs/ch/2-connect-chatgpt.md)建立 Tunnel 並選取 ccc-mcp 連線後,在 ChatGPT 提出:
57
+
58
+ > 請在 `hello-demo` 建立 `hello.py`,執行時輸出 `Hello, World!`,並加入驗證輸出的測試。
59
+
60
+ 在擁有專案的本機驗證結果:
61
+
62
+ ```bash
63
+ ccc-mcp --project hello-demo task status
64
+ ccc-mcp --project hello-demo task usage
65
+ ccc-mcp --project hello-demo context show
66
+ ```
67
+
68
+ 對原生角色而言,`task usage` 才是 CLI 是否真的被呼叫的依據;ChatGPT 角色本來就是互動式執行,沒有原生 CLI 呼叫:`task usage` 會標示 `"interactive": true` 與 `invocation.source: "chatgpt_web"`,所以這裡的 `cli_invoked: false` 代表「設計上本來就不呼叫」,不是模糊的 CLI 失敗訊號。不論哪種模式,聊天回覆自稱成功都不夠;設定的主機測試命令會在 REVIEW 完成前留下紀錄。
69
+
70
+ `ccc-mcp --project hello-demo config show`(或 `config providers`)也會顯示唯讀的 `profile` 欄位——`chatgpt-only`、`best-model` 或 `custom`——由目前所有角色的 provider 即時推算。隨時可用 `ccc-mcp --project hello-demo config profile best-model` 切回,這會依本機實際安裝的 CLI 動態決定(兩個都裝=Codex/Claude 分工;只裝一個=全部角色用那一個;一個都沒裝則拒絕)。
71
+
72
+ ## 工作流程
73
+
74
+ ```text
75
+ ChatGPT(PM)→ Codex(SA)→ Claude Code(SD/RD)→ Codex(REVIEW)
76
+ ↑ │
77
+ └──────── 共用 Context、證據與下一個任務 ────────────┘
78
+ ```
79
+
80
+ 預設角色是有意見的預設值,不是硬性規定。你可以替角色指定支援的 provider:
81
+
82
+ ```bash
83
+ ccc-mcp --project hello-demo config role REVIEW codex --effort high --quota-fallback chatgpt
84
+ ccc-mcp --project hello-demo config role SD/RD claude
85
+ ccc-mcp --project hello-demo config show
86
+ ```
87
+
88
+ 完整說明請看[協作工作流程](docs/ch/4-workflow.md)。
89
+
90
+ ## 文件
91
+
92
+ 完整設定建議依序閱讀編號文件;英文與繁中的檔名和順序一致。
93
+
94
+ | 步驟 | 主題 |
95
+ | --- | --- |
96
+ | 1 | 安裝與登入 |
97
+ | 2 | 連接 ChatGPT |
98
+ | 3 | 建立並授權第一個專案 |
99
+ | 4 | 執行與恢復工作流程 |
100
+ | 5 | 設定 provider、角色、Context 與測試 |
101
+ | 6 | 安裝與使用 Skill |
102
+ | 7 | 了解可靠性與安全邊界 |
103
+ | 8–11 | CLI 參考、公開協議、技術參考與架構 |
104
+
105
+ - [繁體中文文件目錄](docs/ch/README.md)
106
+ - [English README](README.md)
107
+ - [English documentation index](docs/en/README.md)
108
+
109
+ ## 重要邊界
110
+
111
+ `project authorize` 允許 ccc-mcp 修改該專案並執行設定的測試命令。相依套件安裝可能執行 package script,因此相依變更也必須納入 diff 審閱。Codex 依設定的 sandbox 執行;Claude Code 雖有限制工具政策,但尚未有同等的 OS 強制 sandbox,應以最低權限的 OS 帳戶執行。
112
+
113
+ 不想再用某個專案了?先 `ccc-mcp project revoke <id>`(若目前仍是持續授權狀態),再執行 `ccc-mcp project delete <id>` 永久從 `project list` 移除,之後這個 ID 不能再被使用或重新註冊。它不會刪除磁碟上的檔案,也不會刪除任何歷史 Context/task/證據——確認路徑後請自行刪除專案目錄。完整說明見[可靠性與安全邊界](docs/ch/7-reliability-and-security.md)。
114
+
115
+ ## 開發
116
+
117
+ ```bash
118
+ python3.11 -m pytest -q
119
+ ```
120
+
121
+ 本專案要求 Python 3.11 以上。真實 agent 測試需要本機已安裝且登入的 CLI,預設不會執行;詳見[安裝與登入](docs/ch/1-install-and-sign-in.md)。