lucianocrossaniell/Custom-MCP-Server
If you are the rightful owner of Custom-MCP-Server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
The MCP Filesystem Assistant with Web UI is a local AI assistant designed to interact with files in a workspace using a modern web interface and GPT-4o for file analysis and queries.
filesystem
MCP-compatible Filesystem Server
MCP Filesystem Assistant ā Azure Functions Backend
This project is an AI-powered file assistant with an Azure serverless backend.
It supports secure per-user storage and retrieval of files, ready for integration with a React frontend.
Features
ā
Upload files to Azure Blob Storage
ā
List files stored for each user
ā
Download files via secure SAS URLs
ā
Delete files and metadata
ā
Per-user data isolation (userId
folders and PartitionKeys)
ā
Fallback testuser
mode for local/Postman testing
ā
Ready for React frontend with MSAL authentication
Project Structure
backend/
āāā Upload/
ā āāā index.js # Upload file endpoint
āāā Download/
ā āāā index.js # Generate SAS URL
āāā Delete/
ā āāā index.js # Delete file and metadata
āāā List/
ā āāā index.js # List metadata
āāā shared/
ā āāā auth.js # Parses user claims (oid/sub)
ā āāā storage.js # Table Storage helpers
Prerequisites
- Node.js v18+
- Azure Subscription
- Azure Function App deployed with:
- Blob Storage container (
userfiles
) - Table Storage table (
FileMetadata
)
- Blob Storage container (
- App Registration in Azure AD (for authentication)
Installation & Deployment
-
Clone this repo.
-
Install dependencies:
npm install
-
Create the following Application Settings in Azure:
AzureWebJobsStorage
AZURE_BLOB_CONTAINER_NAME
AZURE_TABLE_NAME
-
Deploy to Azure Functions (e.g., using VS Code Azure Functions extension).
Testing with Postman
ā
All endpoints can be tested without authentication using fallback testuser
mode:
POST /api/Upload
GET /api/List
GET /api/Download?filename=<name>
GET /api/Delete?filename=<name>
Fallback Logic: If no valid claims are detected:
const userId = "testuser";
This allows you to test without needing tokens.
How It Works
- Files are stored in:
userfiles/<userId>/<filename>
- Metadata stored in Table Storage with:
PartitionKey = <userId> RowKey = <filename>
- When your frontend is ready and you authenticate users via Azure AD:
- The
getUserFromHeaders()
function will parsex-ms-client-principal
. - Files will be isolated per user automatically.
- The
Next Steps
ā Build React frontend (Phase 1.6)
- Add MSAL.js login flow
- Display per-user file lists
- Integrate Upload/Download/Delete UI
ā Re-enable authentication in Azure Portal before production:
- Turn "Require Authentication" back on
- Remove fallback
testuser
logic if desired
ā Add Application Insights for monitoring
License
MIT License