# feat\(mcp\): expose project service operations · PR \#10563 · pingdotgg/t3code

[View on GitCafe](https://git.cafe/pingdotgg/t3code/pull/10563)

Repository: [pingdotgg/t3code](https://git.cafe/pingdotgg/t3code)

Visibility: public

State: merged

Source repository: pingdotgg/t3code

Source branch: agents/mcp-thin/projects

Target branch: agents/mcp-thin/scheduled-tasks

Head commit: bc357ee0f9bf9f944ee62d3541ced375f4437c76

[Discussion and reviews](https://git.cafe/pingdotgg/t3code/pull/10563)

[Commits](https://git.cafe/pingdotgg/t3code/pull/10563/commits?format=markdown)

[Files changed](https://git.cafe/pingdotgg/t3code/pull/10563/diffs?format=markdown)

## Description

---

Part 13/16 of the [shared-core and MCP stack](https://github.com/pingdotgg/t3code/stacks/10582). Based on [#10562](https://github.com/pingdotgg/t3code/pull/10562). Next: [#10564](https://github.com/pingdotgg/t3code/pull/10564).

Expose project list/read/create/update/delete and repository clone using ProjectService and SourceControlRepositoryService.

Mutations require a full-access/default caller. Clone and registration are separate operations; no lost-result adoption, journal or custom cascade/count implementation. Existing service validation and deletion behavior remain authoritative.

Create/update inputs now use the shared ProjectCreatePayload and ProjectUpdatePayload schemas also used by RPC and ProjectService.

MCP-only rebuild of [#8677](https://github.com/pingdotgg/t3code/pull/8677), preserving attribution to Julius Marminge's original work. Original branches remain available for separate service follow-ups.

Validation: The composed stack passes 94 tests across 12 focused files, including shared core MCP and real MCP/V2 integration, attachment intake, project RPC/service contracts, and client model command selection. Server/contracts/shared/client-runtime typechecks and targeted format/lint/diff checks pass. New behavior coverage lives with the shared operation; no per-tool mock suite was added. Current-head CI is shown below.

Layer size: 7 files, +196/-0. No domain-service production implementation or documentation files change in this MCP layer.

Prepared with Codex in the OpenAI agent runtime.

<!-- Macroscope's pull request summary starts here -->
<!-- Macroscope will only edit the content between these invisible markers, and the markers themselves will not be visible in the GitHub rendered markdown. -->
<!-- If you delete either of the start / end markers from your PR's description, Macroscope will append its summary at the bottom of the description. -->
> [!NOTE]
> ### Expose project service CRUD and clone operations via MCP toolkit
> - Adds `ProjectToolkit` exposing `t3_project_list`, `t3_project_read`, `t3_project_create`, `t3_project_update`, `t3_project_delete`, and `t3_project_clone`.
> - Implements live handlers in [handlers.ts](https://github.com/pingdotgg/t3code/pull/10563/files#diff-36650bfead1dda8d55048c5405173867dcd78e7a1dad5d9cc6c0854638d1fb20) that require full-access, live threads with default interaction mode for mutation operations.
> - Maps project service errors to structured MCP failures (e.g., not-found, conflict) instead of exposing service errors directly.
> - Updates [ClaudeAdapterV2.ts](https://github.com/pingdotgg/t3code/pull/10563/files#diff-688f35750a1a36e66ae76758c856df3d4f0115f93627eb17b390b3abb76afef4) read-only allowlist and the presentation map to include the new tools.
> - Risk: The `mutation` access effect in [handlers.ts](https://github.com/pingdotgg/t3code/pull/10563/files#diff-36650bfead1dda8d55048c5405173867dcd78e7a1dad5d9cc6c0854638d1fb20) rejects archived threads, non-full-access modes, and non-default interaction modes with a capability-denied failure.
>
> <!-- Macroscope's review summary starts here -->
>
> <sup><a href="https://app.macroscope.com">Macroscope</a> summarized bc357ee.</sup>
> <!-- Macroscope's review summary ends here -->
>
<!-- Macroscope's pull request summary ends here -->
