Skip to content

feat: serve and show member-server skills on gateways - #8268

Merged
simplesagar merged 12 commits into
mainfrom
claude/project-thread-0soong
Oct 30, 2026
Merged

simplesagar merged 12 commits into
mainfrom
claude/project-thread-0soong

Conversation

@simplesagar

@simplesagar simplesagar commented Oct 29, 2026 •

Copy link
Copy Markdown
Member

Requested by Sagar · project thread

Linear: AIM-829

Summary

Server

  • Gateway MCP dispatch (serve_meta.go, shared by stored gateways and the organization gateway) now handles skills/list, skills/get and resources/read of skill:// URIs. It also declares the Skills extension on initialize and server/discover while skills-over-mcp is on for the organization.
  • New serve_meta_skills.go builds the gateway's skill scope. The target is the stored gateway (meta_mcp_server) or organization_gateway. MemberMCPServerIDs holds the members the caller is actually served through the gateway: admitted, not hidden, and for a consented connection, approved with a selected tool. Skills requests load the consent catalog so that last filter applies.
  • Caller rules match the hosted surface: only a validated user session or an unstamped dashboard session is a recipient. API keys, assistants and other credentials get an empty listing. Agent gateways serve no skills (out of scope for v1).
  • The hosted list/get/read handlers are split into scope-taking cores (listServedSkills, getServedSkill, readServedSkill) that both surfaces share. Gateway reads are recorded as activations and logged under the gateway, on the meta metric surface.

Dashboard

  • The gateway Skills tab gets a read-only Inherited from servers section below the gateway's own links: one row per skill linked to a member server, with the servers it comes from. Skills are managed on the member server's own Skills tab.

Motivation

The direct-linking design (decided 2026-10-18) has gateways serve their own skill links plus their member servers' links, and the remote server Skills tab already tells users that linked skills reach agents through gateways. The resolver supported this through Scope.MemberMCPServerIDs, but the gateway surface never dispatched the skills methods. So neither direct gateway links nor inherited member links reached agents, and the gateway tab only showed direct links.

Gutternote review steps

  1. Setup: enable skills-over-mcp for the org. Create a gateway with at least one member server, and add a project skill to that member server on its Skills tab.
  2. Sidebar → MCP → open the gateway → Skills tab.
  3. Expect: under the gateway's own Skills list, a new Inherited from servers section lists the skill, with the member server's name in the From column. The skill name links to the skill page.

Also check: the empty state ("No inherited skills") on a gateway whose members have no skills.

🤖 Generated with Claude Code

https://claude.ai/code/session_011XLiZC2imSKsVczxS9s3AJ


🚀 Preview Environment (PR #8268)

Preview URL: https://pr-8268.dev.getgram.ai

Component Status Details Updated (UTC)
✅ Database Ready Existing database reused 2026-10-30 21:32:22.
✅ Images Available Container images ready 2026-10-30 21:34:32.

Gram Preview Bot

Refs AIM-829

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XLiZC2imSKsVczxS9s3AJ
@simplesagar simplesagar self-assigned this Oct 29, 2026
@changeset-bot

changeset-bot Bot commented Oct 29, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 8466412

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 2 packages
Name Type
dashboard Minor
server Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

… tab

Refs AIM-829

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XLiZC2imSKsVczxS9s3AJ
@simplesagar simplesagar changed the title feat: serve own and member-server skills on gateways feat: serve and show member-server skills on gateways Oct 29, 2026

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed

Reply with feedback, questions, or to request a fix.

View guided diff | Turn on auto-fix | Re-trigger cubic

Comment thread server/internal/mcp/serve_meta.go Resolved
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XLiZC2imSKsVczxS9s3AJ
…sion is on

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XLiZC2imSKsVczxS9s3AJ

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed

Reply with feedback, questions, or to request a fix.

View guided diff | Turn on auto-fix | Re-trigger cubic

Link each inherited skill's member server to its Skills tab, add a retry
to the section's error state, cover the consent selection of skill
members, and tell Platform MCP that gateways serve their members' skills.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XLiZC2imSKsVczxS9s3AJ
Move the inherited-skills grouping out of the component file for fast
refresh, and set the new gate field in every metaGateContext literal.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XLiZC2imSKsVczxS9s3AJ
@simplesagar
simplesagar marked this pull request as ready for review October 29, 2026 14:53
@simplesagar
simplesagar requested review from a team as code owners October 29, 2026 14:53
@github-actions github-actions Bot added the preview Spawn a preview environment label Oct 29, 2026

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 9 files (changes from recent commits).

Reply with feedback, questions, or to request a fix.

View guided diff | Turn on auto-fix | Re-trigger cubic

A Specific tools consent inherits only the selected member's skills, an
all-tools consent inherits every approved member's, and a member added
after consent contributes none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XLiZC2imSKsVczxS9s3AJ
Name an unnamed member server by its slug, then its id, test the
slug-based route with slugs that differ from ids, and tell
unlink_skill_from_mcp callers that inherited gateway skills stop only
when unlinked from the member server.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XLiZC2imSKsVczxS9s3AJ
Gateways now pick the skill recipient the same way the hosted surface
does since #8269, so a playground chat session minted from a dashboard
session is served the gateway's inherited skills.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XLiZC2imSKsVczxS9s3AJ

@cubic-dev-ai cubic-dev-ai Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All reported issues were addressed across 2 files (changes from recent commits).

Reply with feedback, questions, or to request a fix.

View guided diff | Turn on auto-fix | Re-trigger cubic

Gateways take identity only from their issuer gate and never
authenticate chat-session tokens, so a playground chat session cannot
reach gateway skills; the test asserted a path that does not exist.
Also reword the metaSkillScope caller comment.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XLiZC2imSKsVczxS9s3AJ
@simplesagar
simplesagar added this pull request to the merge queue Oct 30, 2026
Merged via the queue into main with commit eb80e1b Oct 30, 2026
56 of 59 checks passed
@simplesagar
simplesagar deleted the claude/project-thread-0soong branch October 30, 2026 23:52
@github-actions github-actions Bot locked and limited conversation to collaborators Oct 30, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

preview Spawn a preview environment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants