feat: E2E verify deploy + connect to claude.ai #9

Closed
opened 2026-04-21 01:31:18 +00:00 by forgejo_admin · 2 comments
Contributor

Type

Feature

Lineage

Standalone — final E2E verification ticket for project-notion-mcp-remote. Proves Milestone M1 (first prod deploy reachable from claude.ai) is complete.

Repo

forgejo_admin/notion-mcp-remote

User Story

As a claude.ai user (Lucas)
I want to paste the public URL into claude.ai's MCP integration UI, complete Notion OAuth, and run a Notion tool
So that I confirm the full stack works end-to-end and the project Vision is delivered.

Context

This is the last ticket in the deploy chain. All prior tickets (Harbor URL fix, var.services entry, overlay, tofu apply, OAuth integration, secrets, Woodpecker activation) must be closed before this one is exercised. The acceptance criteria collect every check from sop-validation relevant to this service.

File Targets

No repo file changes. Verification + validation-note creation only.

Deliverables:

  • A post-merge validation note (per sop-validation) capturing pass/fail of each check
  • Milestone M1 marked complete on project-notion-mcp-remote → Status section

Acceptance Criteria

Platform checks:

  • Woodpecker last-run for main = success (mcp__woodpecker__list_pipelines)
  • ArgoCD Application notion-mcp-remote = Healthy + Synced
  • Pod Running in notion-mcp-remote namespace; no CrashLoopBackOff
  • curl https://notion-mcp-remote.tail5b443a.ts.net/health returns 200
  • curl https://notion-mcp-remote.tail5b443a.ts.net/.well-known/oauth-authorization-server returns valid JSON with the expected issuer, authorization_endpoint, token_endpoint
  • ServiceMonitor scraped by Prometheus (notion_mcp_remote_up{...} == 1 visible in Prometheus UI)

E2E checks:

  • claude.ai → Settings → Integrations → Add MCP server → paste https://notion-mcp-remote.tail5b443a.ts.net/mcp — accepted
  • Notion OAuth consent popup appears, approval completes in < 60s
  • New claude.ai chat: run a Notion tool (e.g. "search my Notion for X") — returns a real result from the authorized workspace
  • Second tool call (e.g. get_page of a specific ID) — also succeeds

Recordkeeping:

  • Validation note created per sop-validation
  • Milestone M1 marked on project-notion-mcp-remote Status section
  • All prior tickets closed

Test Expectations

  • All bulleted checks above pass
  • No 5xx errors in pod logs during the OAuth + tool-call window
  • Run commands: (per checklist above)

Constraints

  • Do not begin this ticket until all upstream tickets closed; otherwise failures are pre-existing and this ticket generates noise
  • Keep the validation note factual — pass/fail per check, with evidence (commit SHA, timestamp, screenshot URL if available)

Checklist

  • All prior tickets closed
  • Validation checklist executed
  • Validation note created
  • Milestone M1 marked
  • No unrelated changes
  • project-notion-mcp-remote
  • story-notion-mcp-remote-claude-ai-connect
  • story-notion-mcp-remote-ops-deploy-gitops
  • sop-validation
### Type Feature ### Lineage Standalone — final E2E verification ticket for `project-notion-mcp-remote`. Proves Milestone M1 (first prod deploy reachable from claude.ai) is complete. ### Repo `forgejo_admin/notion-mcp-remote` ### User Story As a claude.ai user (Lucas) I want to paste the public URL into claude.ai's MCP integration UI, complete Notion OAuth, and run a Notion tool So that I confirm the full stack works end-to-end and the project Vision is delivered. ### Context This is the last ticket in the deploy chain. All prior tickets (Harbor URL fix, var.services entry, overlay, tofu apply, OAuth integration, secrets, Woodpecker activation) must be closed before this one is exercised. The acceptance criteria collect every check from `sop-validation` relevant to this service. ### File Targets No repo file changes. Verification + validation-note creation only. Deliverables: - A post-merge validation note (per `sop-validation`) capturing pass/fail of each check - Milestone M1 marked complete on `project-notion-mcp-remote` → Status section ### Acceptance Criteria Platform checks: - [ ] Woodpecker last-run for `main` = success (`mcp__woodpecker__list_pipelines`) - [ ] ArgoCD Application `notion-mcp-remote` = Healthy + Synced - [ ] Pod Running in `notion-mcp-remote` namespace; no CrashLoopBackOff - [ ] `curl https://notion-mcp-remote.tail5b443a.ts.net/health` returns 200 - [ ] `curl https://notion-mcp-remote.tail5b443a.ts.net/.well-known/oauth-authorization-server` returns valid JSON with the expected `issuer`, `authorization_endpoint`, `token_endpoint` - [ ] ServiceMonitor scraped by Prometheus (`notion_mcp_remote_up{...} == 1` visible in Prometheus UI) E2E checks: - [ ] claude.ai → Settings → Integrations → Add MCP server → paste `https://notion-mcp-remote.tail5b443a.ts.net/mcp` — accepted - [ ] Notion OAuth consent popup appears, approval completes in < 60s - [ ] New claude.ai chat: run a Notion tool (e.g. "search my Notion for X") — returns a real result from the authorized workspace - [ ] Second tool call (e.g. `get_page` of a specific ID) — also succeeds Recordkeeping: - [ ] Validation note created per `sop-validation` - [ ] Milestone M1 marked on `project-notion-mcp-remote` Status section - [ ] All prior tickets closed ### Test Expectations - [ ] All bulleted checks above pass - [ ] No 5xx errors in pod logs during the OAuth + tool-call window - Run commands: (per checklist above) ### Constraints - Do not begin this ticket until all upstream tickets closed; otherwise failures are pre-existing and this ticket generates noise - Keep the validation note factual — pass/fail per check, with evidence (commit SHA, timestamp, screenshot URL if available) ### Checklist - [ ] All prior tickets closed - [ ] Validation checklist executed - [ ] Validation note created - [ ] Milestone M1 marked - [ ] No unrelated changes ### Related - `project-notion-mcp-remote` - `story-notion-mcp-remote-claude-ai-connect` - `story-notion-mcp-remote-ops-deploy-gitops` - `sop-validation`
Author
Contributor

Scope Review: NEEDS_REFINEMENT

Review note: review-1049-2026-04-21

Ticket scope is solid overall — verification-only shape matches the claude-ai-connect user story, AC are testable, dependencies documented. One scope gap to close before promotion to todo.

Gaps:

  • [SCOPE] No arch-tailscale-funnel architecture note exists in pal-e-docs to back the arch:tailscale-funnel label. Same gap surfaced in review-788-2026-04-03. Recommend creating a shared arch-tailscale-funnel note (proxy pod pattern, *.tail5b443a.ts.net hostnames, TLS termination) before this label is used again.
  • [BODY] (optional) AC for /.well-known/oauth-authorization-server asserts issuer, authorization_endpoint, token_endpoint — consider adding registration_endpoint since DCR is required for claude.ai onboarding.

Not a blocker for this review, but flagged: all 7 upstream prerequisites (pal-e-platform#296, pal-e-services#57, pal-e-deployments#132, notion-mcp-remote#5/#6/#7/#8) are still open. Per the ticket's own Constraints section, execution must not start until they close.

No decomposition needed — 11 AC is the correct shape for a cross-cutting validation ticket (points=2).

## Scope Review: NEEDS_REFINEMENT Review note: `review-1049-2026-04-21` Ticket scope is solid overall — verification-only shape matches the claude-ai-connect user story, AC are testable, dependencies documented. One scope gap to close before promotion to todo. **Gaps:** - `[SCOPE]` No `arch-tailscale-funnel` architecture note exists in pal-e-docs to back the `arch:tailscale-funnel` label. Same gap surfaced in `review-788-2026-04-03`. Recommend creating a shared `arch-tailscale-funnel` note (proxy pod pattern, `*.tail5b443a.ts.net` hostnames, TLS termination) before this label is used again. - `[BODY]` (optional) AC for `/.well-known/oauth-authorization-server` asserts `issuer`, `authorization_endpoint`, `token_endpoint` — consider adding `registration_endpoint` since DCR is required for claude.ai onboarding. **Not a blocker for this review, but flagged:** all 7 upstream prerequisites (pal-e-platform#296, pal-e-services#57, pal-e-deployments#132, notion-mcp-remote#5/#6/#7/#8) are still open. Per the ticket's own Constraints section, execution must not start until they close. No decomposition needed — 11 AC is the correct shape for a cross-cutting validation ticket (points=2).
Author
Contributor

Done. Service deployed at https://notion-mcp-remote.tail5b443a.ts.net/mcp, ArgoCD Synced+Healthy, OAuth flow verified. Closing.

Done. Service deployed at `https://notion-mcp-remote.tail5b443a.ts.net/mcp`, ArgoCD Synced+Healthy, OAuth flow verified. Closing.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
ldraney/notion-mcp-remote#9
No description provided.