源码快照 @ 2026-09-02 (source-only, 剔除非源码素材)
This commit is contained in:
@@ -0,0 +1,110 @@
|
||||
# Native MCP Apps local demo
|
||||
|
||||
This runbook proves the native MCP Apps path with a deterministic local fixture.
|
||||
It does not depend on a hosted gallery, production rollout flags, customer
|
||||
connectors, or personal credentials.
|
||||
|
||||
The required fixture is Project Atlas from
|
||||
`evals/specs/remote-mcp-apps.e2e.test.ts`. It runs as a local Streamable HTTP MCP
|
||||
server, exposes `ui://project-atlas/view.html`, and has a same-server
|
||||
`search_projects` operation. The tape starts real local Den API and Web
|
||||
processes, a real Electron Desktop/local-server process, MySQL, Redis, and a
|
||||
synthetic model server.
|
||||
|
||||
## Prerequisites
|
||||
|
||||
- Node.js 24 and pnpm 11.4.0 (the versions declared by the repository)
|
||||
- Bun, Docker, and an available local MySQL port (`3306`)
|
||||
- no real model/provider credentials in the shell
|
||||
|
||||
From a clean checkout of the exact branch under test:
|
||||
|
||||
```bash
|
||||
pnpm install --frozen-lockfile
|
||||
pnpm --dir evals install --frozen-lockfile
|
||||
pnpm --filter @openwork/types build
|
||||
pnpm --filter @openwork-ee/den-db build
|
||||
pnpm --filter @openwork/email build
|
||||
pnpm dev:den:mysql
|
||||
```
|
||||
|
||||
## Run the exact-head demo tape
|
||||
|
||||
```bash
|
||||
OPENWORK_EVAL_E2E_TESTS=1 pnpm evals:e2e remote-mcp-apps
|
||||
```
|
||||
|
||||
A valid required proof ends with one passing test, zero failed tests, zero
|
||||
skips, and `"verdict":"passed"`. Keep the JSON report path printed by the
|
||||
runner with the local verification record.
|
||||
|
||||
The tape performs this demo sequence:
|
||||
|
||||
1. Starts an isolated Den organization, synthetic member, local Project Atlas
|
||||
MCP server, and Desktop profile.
|
||||
2. Adds Project Atlas as an organization Connect MCP server and waits for it to
|
||||
become ready.
|
||||
3. Confirms the model-visible surface contains only the central
|
||||
`search_capabilities` and `execute_capability` tools.
|
||||
4. Confirms stale per-connection compatibility exposes only that same bounded
|
||||
pair, no resources/templates/App metadata, and no direct provider tools.
|
||||
5. Confirms the private App host receives only the originating server's
|
||||
app-visible tools and exact `ui://project-atlas/view.html` resource.
|
||||
6. Searches and executes `search_projects` through the originating server's
|
||||
App-host capability pair and observes the synthetic Atlas migration result.
|
||||
7. Prompts the synthetic model to return the bound tool result, renders the App
|
||||
in Desktop, reloads it, and confirms it renders again.
|
||||
8. Restarts Desktop with the same isolated profile, revisits the session, and
|
||||
confirms the App recovers.
|
||||
|
||||
Native MCP Apps are enabled for every deployment and organization; no
|
||||
deployment or organization gate needs to be flipped for this demo.
|
||||
|
||||
## Focused security and compatibility checks
|
||||
|
||||
```bash
|
||||
cd apps/server
|
||||
bun --conditions=development test \
|
||||
src/connect-mcp-server-catalog.test.ts \
|
||||
src/mcp-app-host.test.ts \
|
||||
src/mcp-app-sandbox.test.ts \
|
||||
src/cloud-mcp-reconcile.e2e.test.ts
|
||||
|
||||
cd ../app
|
||||
bun test \
|
||||
tests/den-mcp-url.test.ts \
|
||||
tests/mcp-app-frame.test.ts \
|
||||
tests/session-mcp-maintenance.test.ts \
|
||||
tests/cloud-mcp-maintenance-gate.test.ts
|
||||
|
||||
cd ../../ee/apps/den-api
|
||||
bun test \
|
||||
test/remote-mcp-app-rollout.test.ts \
|
||||
test/external-connection-proxy.test.ts \
|
||||
test/admin-organization-capabilities.test.ts \
|
||||
test/organization-capabilities.test.ts
|
||||
```
|
||||
|
||||
These checks cover exact trusted-origin matching, cross-origin rejection,
|
||||
origin-bound App-host credentials, App-host credential privacy, sandbox/CSP
|
||||
enforcement, same-server binding, rollout defaults, older responses without an
|
||||
App-host credential, bounded stale-client compatibility, and preservation of
|
||||
ordinary Connect when Apps are disabled.
|
||||
|
||||
## Expected failure categories
|
||||
|
||||
- A skipped tape is incomplete proof. Check the consent environment variable,
|
||||
local placement, and MySQL availability.
|
||||
- `missing local server credentials` is a Desktop startup/readiness problem.
|
||||
- A resource error names the exact URI, MIME, size, or CSP validation failure.
|
||||
- An origin error indicates that the Den/App-host endpoint pair is not an exact
|
||||
trusted-origin match.
|
||||
- A tool denial indicates wrong-server routing, app visibility, workspace
|
||||
policy, provider authorization, or required mutation confirmation.
|
||||
- A client that does not advertise the private App-host capability keeps the
|
||||
bounded search/execute surface; that is expected, not a resource-loading
|
||||
failure.
|
||||
|
||||
The hosted SOL gallery may be checked separately as an external observation,
|
||||
but its reachability is not OpenWork compatibility proof and it is not part of
|
||||
this required demo.
|
||||
Reference in New Issue
Block a user