Skip to content

feat: add remote MCP server management API endpoints#2254

Merged
bflad merged 2 commits intomainfrom
bflad/age-1718-remote-mcp-initial-api-endpoints
Apr 20, 2026
Merged

feat: add remote MCP server management API endpoints#2254
bflad merged 2 commits intomainfrom
bflad/age-1718-remote-mcp-initial-api-endpoints

Conversation

@bflad
Copy link
Copy Markdown
Member

@bflad bflad commented Apr 16, 2026

https://linear.app/speakeasy/issue/AGE-1718/remote-mcp-initial-api-endpoints

Introduce CRUD endpoints for remote MCP servers under /rpc/remoteMcp.* (createServer, listServers, getServer, updateServer, deleteServer) with new remote-mcp:read, remote-mcp:write, and remote-mcp:connect RBAC scopes and new remote-mcp resource type. Headers are stored as separate rows with per-value encryption for secrets and redaction in API responses. The update endpoint uses desired-state semantics for headers — clients send the full set and the server computes upserts/removals.

@bflad bflad requested a review from a team as a code owner April 16, 2026 15:09
@linear
Copy link
Copy Markdown

linear Bot commented Apr 16, 2026

Copy link
Copy Markdown

@claude claude Bot left a comment

Choose a reason for hiding this comment

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

Claude Code Review

This repository is configured for manual code reviews. Comment @claude review to trigger a review and subscribe this PR to future pushes, or @claude review once for a one-time review.

Tip: disable this comment in your organization's Code Review settings.

@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Apr 16, 2026

🦋 Changeset detected

Latest commit: 6f743c3

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

This PR includes changesets to release 1 package
Name Type
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

@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 16, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
gram-docs-redirect Ready Ready Preview, Comment Apr 20, 2026 6:02pm

Request Review

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

@bflad bflad force-pushed the bflad/age-1718-remote-mcp-initial-api-endpoints branch from 5687062 to 0171b94 Compare April 16, 2026 17:07
@bflad bflad force-pushed the bflad/age-1718-remote-mcp-initial-api-endpoints branch from 0171b94 to de21a64 Compare April 16, 2026 17:12
@bflad bflad force-pushed the bflad/age-1718-remote-mcp-initial-api-endpoints branch from de21a64 to efd77b2 Compare April 16, 2026 17:16
devin-ai-integration[bot]

This comment was marked as resolved.

Comment thread server/internal/access/scopes.go Outdated
Comment thread server/design/remotemcpservers/design.go Outdated
Comment thread server/design/remotemcpservers/design.go Outdated
Comment thread server/design/remotemcpservers/design.go Outdated
Comment thread server/design/remotemcp/design.go
Format(FormatUUID)
})
Attribute("project_id", String, "The project ID this remote MCP server belongs to", func() {
Format(FormatUUID)
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.

Do double check me on this, but I think we have the practice of not exposing the type of IDs we have internally - so just accepting a freeform string is OK, we can fail validation without letting external users know we use uuids internally. Unsure if it's a generic convention or if it was for a specific bit of work.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

I can look around to find the convention and update, but I'll be looking to understand the validation flow and data typing better. Seems worse to defer known format validation until a much later time in the request flow (e.g. if we leave it to database query to return an error). If we were changing ID formats, it would be a much bigger TODO involving adjusting database tables and such already.

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.

I wasn't suggesting changing / that we would change ID formats. It's mostly a concern around exposing how we store data internally (people will know that our IDs expect a UUID). This might be a minor thing so happy to keep it as is.

Comment thread server/internal/remotemcp/shared.go Outdated
Comment thread server/internal/remotemcpservers/shared.go Outdated
Comment thread server/internal/remotemcpservers/shared.go Outdated
Comment thread server/internal/remotemcpservers/impl.go Outdated
@bflad bflad force-pushed the bflad/age-1718-remote-mcp-initial-api-endpoints branch from efd77b2 to 442a863 Compare April 17, 2026 20:41
@bflad bflad requested a review from a team as a code owner April 17, 2026 20:41
@github-actions github-actions Bot added the preview Spawn a preview environment label Apr 17, 2026
@speakeasybot
Copy link
Copy Markdown
Collaborator

speakeasybot commented Apr 17, 2026

🚀 Preview Environment (PR #2254)

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

Component Status Details Updated (UTC)
✅ Database Ready Existing database reused 2026-04-20 18:07:43.
✅ Images Available Container images ready 2026-04-20 18:07:24.

Gram Preview Bot

devin-ai-integration[bot]

This comment was marked as resolved.

@bflad bflad force-pushed the bflad/age-1718-remote-mcp-initial-api-endpoints branch from 442a863 to 425e335 Compare April 17, 2026 21:03
@bflad
Copy link
Copy Markdown
Member Author

bflad commented Apr 17, 2026

@tgmendes I think I've addressed everything if you can take another look please

@bflad bflad requested a review from tgmendes April 17, 2026 21:04
devin-ai-integration[bot]

This comment was marked as resolved.

@bflad bflad force-pushed the bflad/age-1718-remote-mcp-initial-api-endpoints branch from 425e335 to f3e7ea4 Compare April 17, 2026 21:10
devin-ai-integration[bot]

This comment was marked as resolved.

Format(FormatUUID)
})
Attribute("project_id", String, "The project ID this remote MCP server belongs to", func() {
Format(FormatUUID)
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.

I wasn't suggesting changing / that we would change ID formats. It's mostly a concern around exposing how we store data internally (people will know that our IDs expect a UUID). This might be a minor thing so happy to keep it as is.

Comment thread server/internal/access/impl.go Outdated
Comment thread server/design/remotemcp/design.go
Comment thread server/design/remotemcp/design.go Outdated
@bflad bflad force-pushed the bflad/age-1718-remote-mcp-initial-api-endpoints branch from f3e7ea4 to 6529be7 Compare April 20, 2026 16:44
devin-ai-integration[bot]

This comment was marked as resolved.

https://linear.app/speakeasy/issue/AGE-1718/remote-mcp-initial-api-endpoints

Introduce CRUD endpoints for remote MCP servers under `/rpc/remoteMcpServers.*`
(create, list, get, update, delete) with `remote-mcp:read` and
`remote-mcp:write` RBAC scopes. Headers are stored as separate rows with
per-value encryption for secrets and redaction in API responses. The update
endpoint uses desired-state semantics for headers — clients send the full set
and the server computes upserts/removals.
@bflad bflad force-pushed the bflad/age-1718-remote-mcp-initial-api-endpoints branch from 6529be7 to bf1795c Compare April 20, 2026 17:32
Copy link
Copy Markdown
Contributor

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

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

Devin Review found 0 new potential issues.

View 11 additional findings in Devin Review.

Open in Devin Review

Copy link
Copy Markdown
Contributor

@devin-ai-integration devin-ai-integration Bot left a comment

Choose a reason for hiding this comment

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

Devin Review found 0 new potential issues.

View 11 additional findings in Devin Review.

Open in Devin Review

@bflad bflad merged commit 78e3323 into main Apr 20, 2026
27 checks passed
@bflad bflad deleted the bflad/age-1718-remote-mcp-initial-api-endpoints branch April 20, 2026 18:11
@github-actions github-actions Bot locked and limited conversation to collaborators Apr 20, 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