This repository was archived by the owner on Jul 8, 2026. It is now read-only.
HTTP MCP Server OAuth authentication (Visual Studio Code MCP Support) - #146
Closed
mdthorpe-sc wants to merge 9 commits into
Closed
mdthorpe-sc wants to merge 9 commits into
mdthorpe-sc wants to merge 9 commits into
Conversation
| const fullMockDoc = { ...mockDoc, content_markdown: "This is test content" } as Doc; | ||
| const mockClient = { | ||
| getDoc: mock(async () => ({ data: fullMockDoc })), | ||
| getDoc: mock(async () => ({ data: mockDoc })), |
Member
There was a problem hiding this comment.
Is this change intended or a bad merge? This doesn't match what is currently in main.
| return doc; | ||
| } | ||
|
|
||
| async updateDoc(docPublicId: string, params: UpdateDoc): Promise<Doc> { |
Member
There was a problem hiding this comment.
Is this removed on purpose?
| } | ||
|
|
||
| async getDocById(docId: string): Promise<Doc | null> { | ||
| async getDocById(docId: string): Promise<DocSlim | null> { |
|
|
||
| const additionalFields: Partial<SimplifiedTeam> = {}; | ||
|
|
||
| if (kind === "simple") { |
Member
There was a problem hiding this comment.
Is this intentional or a bad merge?
| }> { | ||
| if (!entity) return { users: {}, workflows: {} }; | ||
|
|
||
| const { member_ids, workflow_ids, default_workflow_id } = entity; |
Member
There was a problem hiding this comment.
Intentional or a bad merge?
| entity: Iteration | null | undefined, | ||
| kind: SimplifiedKind, | ||
| ): Promise<{ | ||
| private async getRelatedEntitiesForIteration(entity: Iteration | null | undefined): Promise<{ |
Member
There was a problem hiding this comment.
Same question here.. this seems like a bad merge since it reverts recent changes to the code.
| expect(mockWriteTool).toHaveBeenCalledTimes(2); | ||
| expect(mockWriteTool).toHaveBeenCalledTimes(1); | ||
| expect(mockWriteTool.mock.calls?.[0]?.[0]).toBe("documents-create"); | ||
| expect(mockWriteTool.mock.calls?.[1]?.[0]).toBe("documents-update"); |
| server.addToolWithWriteAccess( | ||
| "documents-create", | ||
| "Create a new document in Shortcut with a title and content. Returns the document's id, title, and app_url. Note: Use Markdown format for the content.", | ||
| "Create a new document in Shortcut with a title and content. Returns the document's id, title, and app_url. Note: Use HTML markup for the content (e.g., <p>, <h1>, <ul>, <strong>) rather than Markdown.", |
| })); | ||
| await mockTool.mock.calls?.[1]?.[3]({ includeArchived: true }); | ||
| expect(tools.getTeams).toHaveBeenCalledWith(true); | ||
| await mockTool.mock.calls?.[1]?.[2](); |
| }, | ||
| async ({ includeArchived }: { includeArchived: boolean }) => | ||
| await tools.getTeams(includeArchived), | ||
| "List all Shortcut teams", |
| import { UserTools } from "./tools/user"; | ||
| import { WorkflowTools } from "./tools/workflows"; | ||
|
|
||
| let apiToken = process.env.SHORTCUT_API_TKN || process.env.SHORTCUT_API_TOKEN; |
| "dependencies": { | ||
| "@modelcontextprotocol/sdk": "^1.25.1", | ||
| "@shortcut/client": "^3.2.0", | ||
| "@shortcut/client": "^3.1.0", |
| ### Stories | ||
|
|
||
| - **stories-get-by-id** - Get a single Shortcut story by ID | ||
| - **stories-get-history** - Get the change history for a story |
Member
There was a problem hiding this comment.
This chagne removes newly added tools
| - **epics-get-by-id** - Get a Shortcut epic by ID | ||
| - **epics-search** - Find Shortcut epics with filtering and search options | ||
| - **epics-create** - Create a new Shortcut epic | ||
| - **epics-update** - Update an existing Shortcut epic |
| - **iterations-get-by-id** - Get a Shortcut iteration by ID | ||
| - **iterations-search** - Find Shortcut iterations with filtering and search options | ||
| - **iterations-create** - Create a new Shortcut iteration with start/end dates | ||
| - **iterations-update** - Update an existing Shortcut iteration |
| ### Documents | ||
|
|
||
| - **documents-create** - Create a new document in Shortcut with Markdown content | ||
| - **documents-update** - Update content of an existing document by its ID |
| | `teams-get-by-id` | Get a Shortcut team by ID | | ||
| | `teams-list` | List all Shortcut teams | | ||
|
|
||
| ### Projects |
|
|
||
| ### Custom Fields | ||
|
|
||
| - **custom-fields-list** - List all custom fields in the workspace with their possible values |
|
|
||
| ## Issues and Troubleshooting | ||
|
|
||
| > [!IMPORTANT] |
Member
There was a problem hiding this comment.
DId we remove the "important" callout on purpose?
|
|
||
| ### Common Issues and Solutions | ||
|
|
||
| #### MCP fails on startup in Gemini CLI |
Member
There was a problem hiding this comment.
I didn't see these added to the new doc.
mdthorpe-sc
force-pushed
the
mdthorpe/sc-305049/token-refresh-debug
branch
from
February 18, 2026 21:02
aee1721 to
ef61043
Compare
mdthorpe-sc
force-pushed
the
mdthorpe/sc-305049/token-refresh-debug
branch
from
February 18, 2026 22:25
ef61043 to
64e07df
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
OAuth proxy foundation (HTTP server)
src/auth/provider.ts.src/server-http.ts./oauth/callback) and upstream token exchange/refresh handling.Security hardening
src/server-http.ts(including helper methods and enforcement on session reuse paths).Auth testing coverage
src/auth/oauth.test.ts.src/auth/oauth-integration.test.ts.Operational config behavior
OAUTH_ALLOWED_REDIRECT_URIS(comma-delimited env var) in provider startup path.MCP_SERVER_URLis used to derive OAuth issuer/base/resource metadata identity (important for env isolation and VS Code cache behavior).CI/CD and deploy pipeline changes
.github/workflows/pipeline.ymlto split/build dependencies (build-docker+build-scripts) and update deploy job wiring.build_ecr_image.yml) and CodeDeploy startup behavior (including env file mount in start script).Supporting app/library updates
src/client/shortcut.tsupdates (token/client handling support for refreshed sessions).README.mdanddocs/oauth-proxy-implementation.mdupdates.package.json/package-lock.jsonchurn from dependency/script updates.