Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
184 commits
Select commit Hold shift + click to select a range
8859108
Update user story issue templates
baxkspace Oct 8, 2025
55fbe6c
Update issue templates
baxkspace Oct 12, 2025
9db975d
feat #88: add HybridApp setting files
baxkspace Oct 12, 2025
66d769c
feat #104: Code structuring
baxkspace Nov 1, 2025
774842c
feat #112: OAuth 인증 리디렉션 구현
baxkspace Nov 1, 2025
ae36870
fix #125: 백그라운드 실행 가능하도록 리팩토링
baxkspace Nov 3, 2025
2658c0c
feat #127: 파일 다운로드 성공 케이스 구현
baxkspace Nov 3, 2025
e8e4676
feat #130: local 실행 json 파일 구성
baxkspace Nov 3, 2025
b6e5e33
feat #132: 공개 공유 링크 다운 tool 구현
baxkspace Nov 4, 2025
2109b1a
feat #140: Azure 실행 환경 구성 파일 추가
baxkspace Nov 4, 2025
9702baf
fix #140: 애저 실행 환경 설정
baxkspace Nov 12, 2025
9b6cc4a
feat #111: OAuth 인증 및 로그인 기능 구현
baxkspace Nov 12, 2025
3421dd2
fix: APIM API 경로 설정 수정 - /mcp → / (API path), / → /mcp (operation url…
baxkspace Nov 17, 2025
803c9b1
fix: Azure 함수 앱 MCP 엔드포인트 404 오류 해결
baxkspace Nov 17, 2025
621b087
fix: host.json에 customHandler 설정 추가
baxkspace Nov 17, 2025
c894f14
fix: Azure Functions Custom Handler 설정 추가
baxkspace Nov 17, 2025
36ae5b2
fix: siteConfig에 Custom Handler 실행을 위한 설정 추가
baxkspace Nov 17, 2025
faf5ed6
fix: Flex Consumption 호환성을 위해 linuxFxVersion 제거
baxkspace Nov 17, 2025
f79ce1f
fix: VSCode MCP 로컬 설정 포트 수정 (5285 -> 5260)
baxkspace Nov 17, 2025
0879de2
fix: Azure Functions Custom Handler 올바르게 구성
baxkspace Nov 17, 2025
c13263d
fix: Azure Functions 대신 순수 Web App으로 배포
baxkspace Nov 17, 2025
603be36
fix: linuxFxVersion 형식 수정 (DOTNETCORE -> DOTNET)
baxkspace Nov 17, 2025
7dd47a8
fix: Flex Consumption 호환성을 위해 alwaysOn: false로 설정
baxkspace Nov 17, 2025
bb299ce
fix: Web App 모드에서는 customHandler 제거
baxkspace Nov 17, 2025
f706f6c
fix: Azure Functions Custom Handler 설정 복원
baxkspace Nov 17, 2025
afe3989
feat: Azure Functions function.json 추가
baxkspace Nov 17, 2025
576620a
fix: function.json authLevel을 anonymous로 변경
baxkspace Nov 17, 2025
d2ae225
fix: OneDrive 파일 읽기 권한 추가
baxkspace Nov 17, 2025
93c0165
fix: Microsoft Graph 권한을 동적으로 조회
baxkspace Nov 17, 2025
d288a46
fix: Bicep 컴파일 에러 해결 및 권한 할당 재구조화
baxkspace Nov 17, 2025
595ad63
fix: 권한 할당 로직을 entra-app 모듈로 통합
baxkspace Nov 17, 2025
bbe25e7
fix #111: GraphServiceClient 설정 로딩 문제 해결 및 Azure Functions HTTPS 리다이렉…
baxkspace Nov 17, 2025
4d828fb
feat: OAuth 2.0 사용자 위임 기반 OneDrive 파일 다운로드 구현
baxkspace Nov 18, 2025
ef2b19e
refactor: Graph API를 통한 사용자 위임 기반 OneDrive 파일 다운로드로 개선
baxkspace Nov 18, 2025
c3e4a1c
refactor: azd auth login의 자동 토큰을 사용하는 사용자 위임 방식으로 변경
baxkspace Nov 18, 2025
6178717
feat: MCP 클라이언트 설정에 azd auth 토큰 자동 포함
baxkspace Nov 18, 2025
b028258
feat: Azure DefaultCredential을 사용한 자동 토큰 획득
baxkspace Nov 18, 2025
0d437b2
fix: 1drv.ms 단축 URL 지원 추가
baxkspace Nov 18, 2025
f80577a
feat: File Share Storage에 함수 앱 접근 권한 추가
baxkspace Nov 18, 2025
f019515
fix: File Share 업로드 개선 및 실패 처리
baxkspace Nov 18, 2025
2dcd53b
fix: File Share 자동 생성 로직 개선 및 에러 로깅 추가
baxkspace Nov 18, 2025
c986108
fix: Bicep 리소스 순서 수정 - FileShareConnectionString 설정 문제 해결
baxkspace Nov 18, 2025
02f0372
fix: Azure File Share 업로드 - 지원하지 않는 overwrite 파라미터 제거
baxkspace Nov 18, 2025
87fb115
fix: Azure File Share 업로드 전에 파일 크기 사전 설정
baxkspace Nov 18, 2025
571100f
fix: Azure File Share 업로드 - CreateAsync 후 UploadAsync 순서로 수정
baxkspace Nov 18, 2025
250f74a
fix: Azure File Share 업로드 - UploadRangeAsync 사용으로 변경
baxkspace Nov 18, 2025
bc762f5
fix: Azure File Share 업로드 로직 단순화 및 개선
baxkspace Nov 18, 2025
52e64b9
fix: Azure File Share 업로드 로직 수정 및 파일명 추출 개선
baxkspace Nov 19, 2025
0ce5947
fix: File Share 업로드 실패 문제 해결 및 파일명 처리 개선
baxkspace Nov 19, 2025
bcc8585
fix: ShareClient 생성 방식 개선 및 디버깅 로깅 추가
baxkspace Nov 19, 2025
9ea8f81
fix: ShareClient를 Connection String으로 직접 생성
baxkspace Nov 19, 2025
9ce3412
fix: ShareClient 생성 및 Share 접근 에러 로깅 강화
baxkspace Nov 19, 2025
31bbe1d
fix: ShareClient 생성자 오류 수정 - Connection String 파싱 개선
baxkspace Nov 19, 2025
39392b6
fix: File Share 업로드 - CreateAsync 호출 추가
baxkspace Nov 19, 2025
b12e5cb
feat: File Share SAS 토큰을 포함한 접근 가능한 URL 생성
baxkspace Nov 19, 2025
1979f8d
fix: 파일 업로드 손상 문제 해결 - 바이트 배열 사용
baxkspace Nov 19, 2025
954063f
fix: CreateAsync 복구 - 3단계 파일 업로드 프로세스
baxkspace Nov 19, 2025
ea7dbac
fix: OneDrive 파일 다운로드 - HTML 리다이렉트 문제 해결
baxkspace Nov 19, 2025
214465c
fix: OneDrive 파일 다운로드 - 파라미터 중복 버그 수정
baxkspace Nov 19, 2025
91f0ceb
feat: 다운로드 파일에 확장자 포함시키기
baxkspace Nov 19, 2025
d2df219
fix: itemId 기본값 파일명에도 확장자 포함
baxkspace Nov 19, 2025
73f892e
fix: 1drv.ms URL 다운로드 - Authorization 헤더 제거
baxkspace Nov 19, 2025
e99c5ce
fix: 1drv.ms URL을 다운로드 링크로 변환
baxkspace Nov 19, 2025
73979bf
fix: 1drv.ms 공유 링크에서 itemId 추출하여 Graph API 사용
baxkspace Nov 19, 2025
918a080
refactor: Implement Azure CLI-based tenant discovery for Personal 365…
baxkspace Nov 20, 2025
c88331e
fix: Replace Azure CLI with JWT token parsing for tenant discovery
baxkspace Nov 20, 2025
4477a0e
chore: Remove debug test files
baxkspace Nov 20, 2025
42ce5b9
feat: Add detailed step-by-step logging to token acquisition flow
baxkspace Nov 20, 2025
6607083
feat: Personal 365 리프레시 토큰 프로비저닝 구현
baxkspace Nov 20, 2025
ef3a430
feat: Personal 365 Refresh Token 동적 포트 프로비저닝 구현 완료
baxkspace Nov 20, 2025
b9469c5
feat: 환경 변수를 통해 Refresh Token을 Azure에 전달
baxkspace Nov 20, 2025
a6b59af
fix: azure.yaml 훅 경로 수정 (pwsh → powershell)
baxkspace Nov 20, 2025
fc1e04b
fix: 설정 시스템에서 PERSONAL_365_REFRESH_TOKEN 환경변수를 읽도록 수정
baxkspace Nov 20, 2025
d542033
feat: azure.yaml에 postdeploy 훅 추가로 Personal 365 토큰을 Azure 함수에 설정
baxkspace Nov 20, 2025
f8f06b7
fix: Bicep 매개변수 누락 수정
baxkspace Nov 20, 2025
61b702c
fix: postdeploy 훅에서 .env 파일에서 직접 토큰을 읽도록 수정
baxkspace Nov 20, 2025
e73907f
fix: Azure 환경변수 OnedriveDownload__EntraId__Personal365RefreshToken을 c…
baxkspace Nov 20, 2025
433e91d
debug: 환경변수 로드 상황 디버깅 로그 추가
baxkspace Nov 20, 2025
26107c9
fix: Bicep에 PERSONAL_365_REFRESH_TOKEN 환경변수 추가 및 디버그 로그 제거
baxkspace Nov 20, 2025
1ab6d0d
fix: postdeploy 훅의 app setting 이름을 올바른 PERSONAL_365_REFRESH_TOKEN으로 수정
baxkspace Nov 20, 2025
7e50208
fix: OneDrive 공유 URL 인코딩 및 디버그 로깅 추가
baxkspace Nov 20, 2025
d0d5db6
fix: OAuth token 인증 흐름 버그 수정 (2가지)
baxkspace Nov 21, 2025
1c45c25
fix: EntraIdSettings에 Personal365RefreshToken 속성 추가
baxkspace Nov 21, 2025
51780da
fix: ProvisionRefreshToken에서 ClientId 하드코딩 제거
baxkspace Nov 21, 2025
d549524
fix: ExchangeCodeForToken에 clientId 파라미터 추가
baxkspace Nov 21, 2025
75c08f1
fix: appsettings.json 구조 단순화 및 outlook-email 패턴 적용
baxkspace Nov 21, 2025
f58fa2f
fix: appsettings.json에 ClientId 직접 입력
baxkspace Nov 21, 2025
1b2bf4a
fix: OneDriveTool 네임스페이스 수정
baxkspace Nov 21, 2025
e103f8d
feat: OneDriveTool에 SAS 토큰 생성 추가
baxkspace Nov 21, 2025
c9274ad
feat: OneDriveTool에 Azure File Share 볼륨 마운트 기능 추가
baxkspace Nov 22, 2025
b51b31c
feat: azd postprovision 훅으로 자동 드라이브 마운트 구현
baxkspace Nov 22, 2025
c21612d
refactor: OneDriveTool에서 서버 측 드라이브 마운트 로직 제거
baxkspace Nov 22, 2025
49ab2c4
fix: mount.ps1 스크립트 개선 - 더 견고한 에러 처리 및 상세한 로깅
baxkspace Nov 22, 2025
2f701e9
refactor: mount.ps1에서 azd env get-values 대신 .env 파일 직접 읽기로 변경
baxkspace Nov 22, 2025
9aa9f3d
refactor: mount.ps1 간소화 - 더 실용적이고 견고한 구현
baxkspace Nov 22, 2025
99194e4
refactor: mount.ps1 엄격한 에러 처리로 재작성
baxkspace Nov 22, 2025
799beab
fix: OneDriveTool ShareFileSasPermissions 네임스페이스 및 mount.ps1 에러 처리 개선
baxkspace Nov 22, 2025
006607c
fix: mount.ps1 PowerShell 5.1 호환성 - backtick 라인 연속 제거
baxkspace Nov 22, 2025
5cfa4bc
feat: AZURE_STORAGE_CONNECTION_STRING 출력 추가 - azd up 실행 시 .env에 자동 저장됨
baxkspace Nov 22, 2025
af72f1c
feat: Azure File Share 자동 동기화 (HTTPS 기반)
baxkspace Nov 23, 2025
7663dea
fix: azure.yaml postprovision hook 제거
baxkspace Nov 23, 2025
8112979
feat: 파일 다운로드 위치를 프로젝트 루트의 generated 폴더로 변경
baxkspace Nov 23, 2025
d19a86b
feat: 파일 다운로드 후 자동 로컬 동기화
baxkspace Nov 23, 2025
106fc7e
refactor: OneDriveTool - destinationPath 선택적 인자 추가 및 직접 저장
baxkspace Nov 23, 2025
4ed6383
refactor: OneDriveTool - System.IO 명시 및 Azure 다운로드 방식으로 변경
baxkspace Nov 23, 2025
a3f3347
refactor: OneDriveTool 간결화 - Response<T> 처리 및 불필요 코드 제거
baxkspace Nov 23, 2025
a42aad9
refactor: 파일 마운트 기반 아키텍처로 완전 변경
baxkspace Nov 23, 2025
a6975e5
fix: OneDriveTool.cs - System.IO 명시적 네임스페이스 사용
baxkspace Nov 23, 2025
da7627e
feat: Azure File Share 마운트를 통한 다운로드 경로 설정
baxkspace Nov 23, 2025
98fe89c
fix: FUNCTIONS_WORKER_RUNTIME 환경 변수 제거 및 Bicep 버전 업그레이드
baxkspace Nov 23, 2025
9a1496d
refactor: Azure File Share 마운트 경로 및 다운로드 로직 개선
baxkspace Nov 23, 2025
d7b817f
feat: Azure File Storage와 SAS URL을 사용한 OneDrive 파일 다운로드 기능 구현
baxkspace Nov 24, 2025
321be57
fix: 상세한 토큰 획득 에러 메시지와 튜플 반환 타입 개선
baxkspace Nov 24, 2025
4a1ee55
feat: Automate refresh token copying from provision to azure env
baxkspace Nov 24, 2025
6a66be6
refactor: Improve token automation in provision script
baxkspace Nov 24, 2025
2f84bf5
fix: Resolve nullable warning in AzureFileShareSyncService
baxkspace Nov 24, 2025
cf089ac
fix: Remove duplicate envName variable definition
baxkspace Nov 24, 2025
af37699
fix: Remove incorrect .azure folder copy and add debug logging
baxkspace Nov 24, 2025
1788f96
fix: Unify Client ID to Microsoft public client for both provision an…
baxkspace Nov 24, 2025
fe37e85
fix: Client ID 통일 및 postdeploy 훅 개선
baxkspace Nov 24, 2025
9784bac
fix: SAS URL 생성 시 한글 파일명 문제 해결
baxkspace Nov 24, 2025
19aaf29
chore: 불필요한 설정 파일 제거
baxkspace Nov 24, 2025
4625f3b
chore: 불필요한 .azurefunctions 디렉토리 제거
baxkspace Nov 24, 2025
6bf449d
fix: App Service Plan API 버전 업데이트 및 runtime version 수정
baxkspace Nov 25, 2025
67b26e3
fix: Flex Consumption에 맞게 host를 appservice로 변경
baxkspace Nov 25, 2025
633796b
fix: Flex Consumption 필수 환경 변수 추가
baxkspace Nov 25, 2025
4f5e578
fix: FUNCTIONS_WORKER_RUNTIME 제거 (Flex Consumption에서 불필요)
baxkspace Nov 25, 2025
2976de6
feat: azure.yaml에 dist 경로 추가
baxkspace Nov 25, 2025
9677d68
feat: .azurefunctions 디렉토리 추가 및 publish에 포함
baxkspace Nov 25, 2025
c5b76f9
fix: SAS URL 생성 시 한글 파일명 URL 인코딩 처리
baxkspace Nov 25, 2025
c35c4c8
fix: SAS URL 생성 로직 수정 - FilePath는 원본, URL에서만 인코딩
baxkspace Nov 25, 2025
0ff5c55
fix: OnedriveDownload__EntraId__ClientId를 Microsoft 퍼블릭 클라이언트 ID로 고정
baxkspace Nov 25, 2025
861aaa2
fix: Share 레벨 SAS 생성으로 한글 파일명 인증 오류 최종 해결
baxkspace Nov 25, 2025
59de141
fix: AzureFileShareSyncService의 null 경고 제거
baxkspace Nov 25, 2025
62651d4
fix: 한글 파일명 SAS URL 생성 방식 변경
baxkspace Nov 25, 2025
a7e62d5
chore: .claude 디렉토리를 .gitignore에 추가
baxkspace Nov 25, 2025
647f2c1
feat: HttpListener를 Kestrel로 변경하여 macOS/Linux 호환성 추가
baxkspace Nov 25, 2025
580a36f
feat: 서버 시작 시점에 로그인 화면 표시
baxkspace Nov 25, 2025
720b388
refactor: 불필요한 MCP 컨트롤러 및 중복 코드 제거
baxkspace Nov 25, 2025
6b73a5c
refactor: postprovision/postdeploy hook 제거 및 코드로 통합
baxkspace Nov 25, 2025
3593063
feat: Azure 환경에서 로그인 페이지 자동 리디렉션
baxkspace Nov 25, 2025
ecc1b4c
feat: Add OAuth authentication status endpoint to main application
baxkspace Nov 26, 2025
6d53f5c
feat: Implement OAuth2 Authorization Code Flow with automatic App Reg…
baxkspace Nov 27, 2025
8964a82
refactor: Switch to InteractiveBrowserCredential authentication
baxkspace Nov 27, 2025
5ee6106
refactor: Use InteractiveBrowserCredential for 365 token authentication
baxkspace Nov 27, 2025
6cf0921
fix: Read EntraId settings from environment variables directly instea…
baxkspace Nov 27, 2025
5919c54
fix: Force token acquisition at startup to trigger VSCode authenticat…
baxkspace Nov 28, 2025
a6b1011
fix: Change GraphServiceClient from Singleton to Scoped for VSCode au…
baxkspace Nov 28, 2025
3a470f9
feat: Implement Token Passthrough authentication
baxkspace Nov 28, 2025
e44af07
feat: Add Built-in Authentication to trigger VSCode popup
baxkspace Nov 28, 2025
ef56a19
fix: Update authSettingsV2 configuration with complete Azure AD setup
baxkspace Nov 28, 2025
48eac83
fix: Remove api:// prefix from allowedAudiences for v2.0 endpoint
baxkspace Nov 28, 2025
2f74735
fix: Remove clientSecretSettingName to prevent dynamic client registr…
baxkspace Nov 28, 2025
3e7cfec
fix: Use entraApp.outputs.appId for automatic clientId linking
baxkspace Nov 28, 2025
f54dbe3
docs: Update mcp.json templates with proper scope configuration
baxkspace Nov 28, 2025
cfc5d23
fix: Use entraApp.outputs.mcpAppId instead of appId
baxkspace Nov 28, 2025
d8d343e
fix: Move authSettingsV2 after entraApp to fix dependency order
baxkspace Nov 28, 2025
4002c9a
refactor: mcp.json 단순화 - auth 블록 제거
baxkspace Nov 28, 2025
dd60580
fix: authSettingsV2 openIdIssuer를 v2.0 엔드포인트로 변경
baxkspace Nov 28, 2025
1b84124
fix: Entra 앱에 VSCode 리다이렉트 URI 추가
baxkspace Nov 28, 2025
7567c08
feat: Entra 앱을 다중 테넌트 + 개인 Microsoft 계정 지원으로 변경
baxkspace Nov 28, 2025
b171ad5
feat: Entra 앱에 publicClient 지원 추가
baxkspace Nov 28, 2025
03cfca7
feat: postprovision hook for automatic Client ID injection
baxkspace Nov 30, 2025
5b8d369
fix: azure.yaml hook format correction
baxkspace Nov 30, 2025
704888a
fix: azure.yaml hook requires 'run' field
baxkspace Nov 30, 2025
20b366b
fix: use powershell instead of pwsh for compatibility
baxkspace Nov 30, 2025
c3db64d
refactor: 인증 흐름 단순화 - Easy Auth AllowAnonymous로 변경
baxkspace Nov 30, 2025
62cf031
fix: Program.cs에서 토큰 누락 시 명시적으로 401 응답 설정
baxkspace Nov 30, 2025
8309edb
fix: 미들웨어 레벨에서 토큰 검증하여 401 응답 처리
baxkspace Nov 30, 2025
59cfd48
fix: Entra 앱 리다이렉트 URI에서 고정 포트 제거
baxkspace Nov 30, 2025
c17019a
feat: /authorize 엔드포인트 추가 - Microsoft 로그인 리다이렉트
baxkspace Nov 30, 2025
7df2044
feat: OAuth2 콜백 엔드포인트 추가 (GET /)
baxkspace Nov 30, 2025
bf101bc
refactor: Cleanup and security improvements for onedrive-download
baxkspace Nov 30, 2025
e183403
fix: Remove Authentication namespace import from Program.cs
baxkspace Nov 30, 2025
40bb4d2
chore: Recreate .azurefunctions directory
baxkspace Nov 30, 2025
f07c504
feat: Simplify authentication with token passthrough and update Entra…
baxkspace Dec 1, 2025
26110ec
refactor: Remove BearerTokenCredential class and test script
baxkspace Dec 1, 2025
78646dd
refactor: Remove unused Bicep modules
baxkspace Dec 1, 2025
4562ca1
feat: Add APIM proxy for download URLs with SAS tokens
baxkspace Dec 1, 2025
7bb21a2
fix: Use correct environment variable name for storage connection string
baxkspace Dec 1, 2025
2abff72
docs: Add Azure deployment guide for onedrive-download MCP server
baxkspace Dec 1, 2025
212ffc7
feat: Implement RFC 9728 OAuth Protected Resource Metadata endpoint
baxkspace Dec 1, 2025
d16a9fd
refactor: Move PRM OAuth configuration from Program.cs to APIM policy
baxkspace Dec 2, 2025
e95cc92
refactor: Simplify PRM policy using liquid template with set-variable
baxkspace Dec 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .claude/settings.local.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"permissions": {
"allow": [
"Bash(az webapp log tail:*)",
"Bash(az functionapp config appsettings list:*)",
"Bash(dotnet build:*)"
],
"deny": [],
"ask": []
}
}
1 change: 1 addition & 0 deletions .github/ISSUE_TEMPLATE/GENERAL.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ labels: ''
assignees: ''

---

<!--
IF SUFFICIENT INFORMATION IS NOT PROVIDED VIA THE FOLLOWING TEMPLATE THE ISSUE MIGHT BE CLOSED WITHOUT FURTHER CONSIDERATION OR INVESTIGATION
-->
Expand Down
10 changes: 10 additions & 0 deletions .github/ISSUE_TEMPLATE/custom.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
name: Custom issue template
about: Describe this issue template's purpose here.
title: ''
labels: ''
assignees: ''

---


14 changes: 14 additions & 0 deletions .github/ISSUE_TEMPLATE/task-template.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
name: Task template
about: task 작성
title: 'Onedrive-download/Task/#34-1: Entra ID 등록'
labels: ''
assignees: ''

---

### #feat-num User Story 1.1 Task
---
main 설명

_부연 설명_
16 changes: 16 additions & 0 deletions .github/ISSUE_TEMPLATE/user-story---tasks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
---
name: user story & tasks
about: user story 및 하위 태스크 작성
title: 'Onedrive-download/User Story 1.2:'
labels: ''
assignees: ''

---

### 📬 User Story 2 (main title of user story)
#### 개발자로서, ~~
_부연 설명 및 참고 사항_

---
* **Tasks**
- [ ] task 내용
38 changes: 11 additions & 27 deletions .vscode/mcp.json
Original file line number Diff line number Diff line change
@@ -1,32 +1,16 @@
{
"inputs": [
{
"type": "promptString",
"id": "apim-fqdn",
"description": "Azure API Management FQDN"
}
],
"servers": {
"awesome-copilot": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/microsoft/mcp-dotnet-samples/awesome-copilot:latest"
]
},
"microsoft.docs.mcp": {
"type": "http",
"url": "https://learn.microsoft.com/api/mcp"
},
"github": {
"onedrive-download": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/"
},
"sequential-thinking": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"mcp/sequentialthinking"
]
"url": "https://${input:apim-fqdn}/mcp"
}
}
}
}

27 changes: 27 additions & 0 deletions Dockerfile.onedrive-download
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# syntax=docker/dockerfile:1

FROM --platform=$BUILDPLATFORM mcr.microsoft.com/dotnet/sdk:9.0-alpine AS build

COPY ./shared/McpSamples.Shared /source/shared/McpSamples.Shared
COPY ./onedrive-download/src/McpSamples.OnedriveDownload.HybridApp /source/onedrive-download/src/McpSamples.OnedriveDownload.HybridApp

WORKDIR /source/onedrive-download/src/McpSamples.OnedriveDownload.HybridApp

ARG TARGETARCH
RUN case "$TARGETARCH" in \
"amd64") RID="linux-musl-x64" ;; \
"arm64") RID="linux-musl-arm64" ;; \
*) RID="linux-musl-x64" ;; \
esac && \
dotnet publish -c Release -o /app -r $RID --self-contained false

FROM mcr.microsoft.com/dotnet/aspnet:9.0-alpine AS final

WORKDIR /app

COPY --from=build /app .

USER $APP_UID

ENTRYPOINT ["dotnet", "McpSamples.OnedriveDownload.HybridApp.dll"]

32 changes: 32 additions & 0 deletions onedrive-download/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# Include any files or directories that you don't want to be copied to your
# container here (e.g., local build artifacts, temporary files, etc.).
#
# For more help, visit the .dockerignore file reference guide at
# https://docs.docker.com/go/build-context-dockerignore/

**/.DS_Store
**/.classpath
**/.dockerignore
**/.env
**/.git
**/.gitignore
**/.project
**/.settings
**/.toolstarget
**/.vs
**/.vscode
**/*.*proj.user
**/*.dbmdl
**/*.jfm
**/bin
**/charts
**/docker-compose*
**/compose.y*ml
**/Dockerfile*
**/node_modules
**/npm-debug.log
**/obj
**/secrets.dev.yaml
**/values.dev.yaml
LICENSE
README.md
28 changes: 28 additions & 0 deletions onedrive-download/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# User-specific files
*.user
*.userosscache
*.sln.docstates

# Build results
[Bb]in/
[Oo]bj/

# Visual Studio
.vs/

# From md_file/.gitignore
feature.md
feature2.md

# Environment files with sensitive data
.env.local
.env*.local
.azure/
.claude/

# Development settings with sensitive data (use .example template instead)
appsettings.Development.json
appsettings.*.json

# Generated files from Azure File Share sync
generated/
25 changes: 25 additions & 0 deletions onedrive-download/.vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"version": "0.2.0",
"configurations": [
{
"name": ".NET Core Launch (web)",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "${workspaceFolder}/src/McpSamples.OnedriveDownload.HybridApp/bin/Debug/net9.0/McpSamples.OnedriveDownload.HybridApp.dll",
"args": [],
"cwd": "${workspaceFolder}/src/McpSamples.OnedriveDownload.HybridApp",
"stopAtEntry": false,
"serverReadyAction": {
"action": "openExternally",
"pattern": "\\bNow listening on:\\s+(https?:\\/\\/\\S+)"
},
"env": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"sourceFileMap": {
"/Views": "${workspaceFolder}/Views"
}
}
]
}
16 changes: 16 additions & 0 deletions onedrive-download/.vscode/mcp.http.remote-apim.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"inputs": [
{
"type": "promptString",
"id": "apim-fqdn",
"description": "Azure API Management FQDN"
}
],
"servers": {
"onedrive-download": {
"type": "http",
"url": "https://${input:apim-fqdn}/mcp"
}
}
}

16 changes: 16 additions & 0 deletions onedrive-download/.vscode/mcp.http.remote-func.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
{
"inputs": [
{
"type": "promptString",
"id": "functionAppFqdn",
"description": "Azure Function App FQDN"
}
],
"servers": {
"onedrive-download": {
"type": "http",
"url": "https://${input:functionAppFqdn}/mcp"
}
}
}

30 changes: 30 additions & 0 deletions onedrive-download/.vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"command": "dotnet",
"type": "process",
"args": [
"build",
"${workspaceFolder}/src/McpSamples.OnedriveDownload.HybridApp/McpSamples.OnedriveDownload.HybridApp.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
"problemMatcher": "$msCompile"
},
{
"label": "Set Function App FQDN",
"type": "shell",
"command": "powershell",
"args": [
"-Command",
"& { $fqdn = Read-Host 'Enter Function App FQDN (e.g., func-app-name.azurewebsites.net)'; $appsettingsPath = '${workspaceFolder}/src/McpSamples.OnedriveDownload.HybridApp/appsettings.json'; $content = Get-Content $appsettingsPath | ConvertFrom-Json; $content | Add-Member -NotePropertyName 'FunctionAppFqdn' -NotePropertyValue $fqdn -Force; $content | ConvertTo-Json | Set-Content $appsettingsPath; Write-Host \"FQDN updated: $fqdn\" }"
],
"presentation": {
"reveal": "always",
"panel": "new"
}
}
]
}
39 changes: 39 additions & 0 deletions onedrive-download/McpOnedriveDownload.sln
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@

Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.0.31903.59
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "src", "src", "{827E0CD3-B72D-47B6-A68D-7590B98EB39B}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "McpSamples.OnedriveDownload.HybridApp", "src\McpSamples.OnedriveDownload.HybridApp\McpSamples.OnedriveDownload.HybridApp.csproj", "{71D5E732-06DF-430C-80AF-F0996DCE338B}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug|x64 = Debug|x64
Debug|x86 = Debug|x86
Release|Any CPU = Release|Any CPU
Release|x64 = Release|x64
Release|x86 = Release|x86
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{71D5E732-06DF-430C-80AF-F0996DCE338B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{71D5E732-06DF-430C-80AF-F0996DCE338B}.Debug|Any CPU.Build.0 = Debug|Any CPU
{71D5E732-06DF-430C-80AF-F0996DCE338B}.Debug|x64.ActiveCfg = Debug|Any CPU
{71D5E732-06DF-430C-80AF-F0996DCE338B}.Debug|x64.Build.0 = Debug|Any CPU
{71D5E732-06DF-430C-80AF-F0996DCE338B}.Debug|x86.ActiveCfg = Debug|Any CPU
{71D5E732-06DF-430C-80AF-F0996DCE338B}.Debug|x86.Build.0 = Debug|Any CPU
{71D5E732-06DF-430C-80AF-F0996DCE338B}.Release|Any CPU.ActiveCfg = Release|Any CPU
{71D5E732-06DF-430C-80AF-F0996DCE338B}.Release|Any CPU.Build.0 = Release|Any CPU
{71D5E732-06DF-430C-80AF-F0996DCE338B}.Release|x64.ActiveCfg = Release|Any CPU
{71D5E732-06DF-430C-80AF-F0996DCE338B}.Release|x64.Build.0 = Release|Any CPU
{71D5E732-06DF-430C-80AF-F0996DCE338B}.Release|x86.ActiveCfg = Release|Any CPU
{71D5E732-06DF-430C-80AF-F0996DCE338B}.Release|x86.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
GlobalSection(NestedProjects) = preSolution
{71D5E732-06DF-430C-80AF-F0996DCE338B} = {827E0CD3-B72D-47B6-A68D-7590B98EB39B}
EndGlobalSection
EndGlobal
Loading