@softtechai/quickmcp 1.0.14 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/auth/auth-utils.d.ts +130 -0
- package/dist/auth/auth-utils.d.ts.map +1 -0
- package/dist/auth/auth-utils.js +600 -0
- package/dist/auth/auth-utils.js.map +1 -0
- package/dist/auth/jwks-provider.d.ts +9 -0
- package/dist/auth/jwks-provider.d.ts.map +1 -0
- package/dist/auth/jwks-provider.js +56 -0
- package/dist/auth/jwks-provider.js.map +1 -0
- package/dist/auth/token-utils.d.ts +40 -0
- package/dist/auth/token-utils.d.ts.map +1 -0
- package/dist/auth/token-utils.js +162 -0
- package/dist/auth/token-utils.js.map +1 -0
- package/dist/client/MCPClient.js +5 -4
- package/dist/client/MCPClient.js.map +1 -1
- package/dist/config/auth-config.d.ts +16 -0
- package/dist/config/auth-config.d.ts.map +1 -0
- package/dist/config/auth-config.js +107 -0
- package/dist/config/auth-config.js.map +1 -0
- package/dist/constant/constant.d.ts +20 -0
- package/dist/constant/constant.d.ts.map +1 -0
- package/dist/constant/constant.js +24 -0
- package/dist/constant/constant.js.map +1 -0
- package/dist/database/async-datastore.d.ts +6 -0
- package/dist/database/async-datastore.d.ts.map +1 -0
- package/dist/database/async-datastore.js +15 -0
- package/dist/database/async-datastore.js.map +1 -0
- package/dist/database/database-utils.d.ts +6 -0
- package/dist/database/database-utils.d.ts.map +1 -0
- package/dist/database/database-utils.js +29 -0
- package/dist/database/database-utils.js.map +1 -0
- package/dist/database/datastore.d.ts +164 -0
- package/dist/database/datastore.d.ts.map +1 -0
- package/dist/{parsers/types/index.js → database/datastore.js} +1 -0
- package/dist/database/datastore.js.map +1 -0
- package/dist/database/factory.d.ts +4 -0
- package/dist/database/factory.d.ts.map +1 -0
- package/dist/database/factory.js +32 -0
- package/dist/database/factory.js.map +1 -0
- package/dist/database/jdbc-manager.d.ts +49 -0
- package/dist/database/jdbc-manager.d.ts.map +1 -0
- package/dist/database/jdbc-manager.js +50 -0
- package/dist/database/jdbc-manager.js.map +1 -0
- package/dist/database/sqlite-manager.d.ts +46 -44
- package/dist/database/sqlite-manager.d.ts.map +1 -1
- package/dist/database/sqlite-manager.js +492 -42
- package/dist/database/sqlite-manager.js.map +1 -1
- package/dist/database/supabase-manager.d.ts +58 -0
- package/dist/database/supabase-manager.d.ts.map +1 -0
- package/dist/database/supabase-manager.js +432 -0
- package/dist/database/supabase-manager.js.map +1 -0
- package/dist/generators/MCPServerGenerator.d.ts +103 -20
- package/dist/generators/MCPServerGenerator.d.ts.map +1 -1
- package/dist/generators/MCPServerGenerator.js +6930 -128
- package/dist/generators/MCPServerGenerator.js.map +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -1
- package/dist/index.js.map +1 -1
- package/dist/integrated-mcp-server-new.d.ts +14 -2
- package/dist/integrated-mcp-server-new.d.ts.map +1 -1
- package/dist/integrated-mcp-server-new.js +270 -180
- package/dist/integrated-mcp-server-new.js.map +1 -1
- package/dist/mcp-core/McpCoreService.d.ts +63 -0
- package/dist/mcp-core/McpCoreService.d.ts.map +1 -0
- package/dist/mcp-core/McpCoreService.js +492 -0
- package/dist/mcp-core/McpCoreService.js.map +1 -0
- package/dist/parsers/CsvParser.d.ts +1 -1
- package/dist/parsers/CsvParser.d.ts.map +1 -1
- package/dist/parsers/CsvParser.js +3 -2
- package/dist/parsers/CsvParser.js.map +1 -1
- package/dist/parsers/DatabaseParser.d.ts.map +1 -1
- package/dist/parsers/DatabaseParser.js +9 -8
- package/dist/parsers/DatabaseParser.js.map +1 -1
- package/dist/parsers/ExcelParser.d.ts +15 -0
- package/dist/parsers/ExcelParser.d.ts.map +1 -1
- package/dist/parsers/ExcelParser.js +287 -21
- package/dist/parsers/ExcelParser.js.map +1 -1
- package/dist/parsers/WebPageParser.d.ts +5 -0
- package/dist/parsers/WebPageParser.d.ts.map +1 -0
- package/dist/parsers/WebPageParser.js +35 -0
- package/dist/parsers/WebPageParser.js.map +1 -0
- package/dist/parsers/index.d.ts +3 -2
- package/dist/parsers/index.d.ts.map +1 -1
- package/dist/parsers/index.js +19 -16
- package/dist/parsers/index.js.map +1 -1
- package/dist/server/api/askApi.d.ts +41 -0
- package/dist/server/api/askApi.d.ts.map +1 -0
- package/dist/server/api/askApi.js +479 -0
- package/dist/server/api/askApi.js.map +1 -0
- package/dist/server/api/authApi.d.ts +101 -0
- package/dist/server/api/authApi.d.ts.map +1 -0
- package/dist/server/api/authApi.js +1472 -0
- package/dist/server/api/authApi.js.map +1 -0
- package/dist/server/api/authProperty.d.ts +18 -0
- package/dist/server/api/authProperty.d.ts.map +1 -0
- package/dist/server/api/authProperty.js +41 -0
- package/dist/server/api/authProperty.js.map +1 -0
- package/dist/server/api/configApi.d.ts +15 -0
- package/dist/server/api/configApi.d.ts.map +1 -0
- package/dist/server/api/configApi.js +42 -0
- package/dist/server/api/configApi.js.map +1 -0
- package/dist/server/api/databaseApi.d.ts +14 -0
- package/dist/server/api/databaseApi.d.ts.map +1 -0
- package/dist/server/api/databaseApi.js +111 -0
- package/dist/server/api/databaseApi.js.map +1 -0
- package/dist/server/api/directoryApi.d.ts +9 -0
- package/dist/server/api/directoryApi.d.ts.map +1 -0
- package/dist/server/api/directoryApi.js +103 -0
- package/dist/server/api/directoryApi.js.map +1 -0
- package/dist/server/api/generateApi.d.ts +24 -0
- package/dist/server/api/generateApi.d.ts.map +1 -0
- package/dist/server/api/generateApi.js +457 -0
- package/dist/server/api/generateApi.js.map +1 -0
- package/dist/server/api/healthApi.d.ts +9 -0
- package/dist/server/api/healthApi.d.ts.map +1 -0
- package/dist/server/api/healthApi.js +15 -0
- package/dist/server/api/healthApi.js.map +1 -0
- package/dist/server/api/indexApi.d.ts +21 -0
- package/dist/server/api/indexApi.d.ts.map +1 -0
- package/dist/server/api/indexApi.js +61 -0
- package/dist/server/api/indexApi.js.map +1 -0
- package/dist/server/api/logsApi.d.ts +12 -0
- package/dist/server/api/logsApi.d.ts.map +1 -0
- package/dist/server/api/logsApi.js +37 -0
- package/dist/server/api/logsApi.js.map +1 -0
- package/dist/server/api/mcpApi.d.ts +20 -0
- package/dist/server/api/mcpApi.d.ts.map +1 -0
- package/dist/server/api/mcpApi.js +120 -0
- package/dist/server/api/mcpApi.js.map +1 -0
- package/dist/server/api/nameApi.d.ts +21 -0
- package/dist/server/api/nameApi.d.ts.map +1 -0
- package/dist/server/api/nameApi.js +42 -0
- package/dist/server/api/nameApi.js.map +1 -0
- package/dist/server/api/parseApi.d.ts +9 -0
- package/dist/server/api/parseApi.d.ts.map +1 -0
- package/dist/server/api/parseApi.js +3245 -0
- package/dist/server/api/parseApi.js.map +1 -0
- package/dist/server/api/serverApi.d.ts +44 -0
- package/dist/server/api/serverApi.d.ts.map +1 -0
- package/dist/server/api/serverApi.js +417 -0
- package/dist/server/api/serverApi.js.map +1 -0
- package/dist/{dynamic-mcp-executor.d.ts → server/dynamic-mcp-executor.d.ts} +4 -5
- package/dist/server/dynamic-mcp-executor.d.ts.map +1 -0
- package/dist/server/dynamic-mcp-executor.js +62 -0
- package/dist/server/dynamic-mcp-executor.js.map +1 -0
- package/dist/server/port-utils.d.ts +14 -0
- package/dist/server/port-utils.d.ts.map +1 -0
- package/dist/server/port-utils.js +31 -0
- package/dist/server/port-utils.js.map +1 -0
- package/dist/server/server-utils.d.ts +13 -0
- package/dist/server/server-utils.d.ts.map +1 -0
- package/dist/server/server-utils.js +72 -0
- package/dist/server/server-utils.js.map +1 -0
- package/dist/{web → server}/server.d.ts +1 -0
- package/dist/server/server.d.ts.map +1 -0
- package/dist/server/server.js +535 -0
- package/dist/server/server.js.map +1 -0
- package/dist/server/tool-executer.d.ts +101 -0
- package/dist/server/tool-executer.d.ts.map +1 -0
- package/dist/server/tool-executer.js +6198 -0
- package/dist/server/tool-executer.js.map +1 -0
- package/dist/types/index.d.ts +1197 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1028 -0
- package/dist/types/index.js.map +1 -1
- package/dist/upload/upload-utils.d.ts +4 -0
- package/dist/upload/upload-utils.d.ts.map +1 -0
- package/dist/upload/upload-utils.js +29 -0
- package/dist/upload/upload-utils.js.map +1 -0
- package/dist/utils/deployment-util.d.ts +14 -0
- package/dist/utils/deployment-util.d.ts.map +1 -0
- package/dist/utils/deployment-util.js +46 -0
- package/dist/utils/deployment-util.js.map +1 -0
- package/dist/utils/logger.d.ts +15 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +56 -0
- package/dist/utils/logger.js.map +1 -0
- package/package.json +18 -6
- package/quickmcp-direct-stdio.js +245 -163
- package/src/web/public/app.js +15370 -1471
- package/src/web/public/authorization.html +868 -0
- package/src/web/public/database-tables.html +283 -547
- package/src/web/public/how-to-use.html +446 -462
- package/src/web/public/how-to-use.js +4 -4
- package/src/web/public/images/app/activepieces.png +0 -0
- package/src/web/public/images/app/airtable.png +0 -0
- package/src/web/public/images/app/androidstudio.png +0 -0
- package/src/web/public/images/app/antigravity.png +0 -0
- package/src/web/public/images/app/applenotes.png +0 -0
- package/src/web/public/images/app/applereminders.png +0 -0
- package/src/web/public/images/app/asana.png +0 -0
- package/src/web/public/images/app/azureai.png +0 -0
- package/src/web/public/images/app/bash.png +0 -0
- package/src/web/public/images/app/bearnotes.png +0 -0
- package/src/web/public/images/app/bitbucket.png +0 -0
- package/src/web/public/images/app/claude.png +0 -0
- package/src/web/public/images/app/cli.png +0 -0
- package/src/web/public/images/app/clickup.png +0 -0
- package/src/web/public/images/app/cohere.png +0 -0
- package/src/web/public/images/app/confluence.png +0 -0
- package/src/web/public/images/app/confluence2.png +0 -0
- package/src/web/public/images/app/curl.png +0 -0
- package/src/web/public/images/app/curl_mini.png +0 -0
- package/src/web/public/images/app/cursor.png +0 -0
- package/src/web/public/images/app/db2.png +0 -0
- package/src/web/public/images/app/deepseek.png +0 -0
- package/src/web/public/images/app/discord.png +0 -0
- package/src/web/public/images/app/docker.png +0 -0
- package/src/web/public/images/app/dockerhub.png +0 -0
- package/src/web/public/images/app/dropbox.png +0 -0
- package/src/web/public/images/app/elasticsearch.png +0 -0
- package/src/web/public/images/app/facebook.png +0 -0
- package/src/web/public/images/app/falai.png +0 -0
- package/src/web/public/images/app/fireworks.png +0 -0
- package/src/web/public/images/app/gdrive.png +0 -0
- package/src/web/public/images/app/gemini.png +0 -0
- package/src/web/public/images/app/github.png +0 -0
- package/src/web/public/images/app/githubcopilot.png +0 -0
- package/src/web/public/images/app/gitlab.png +0 -0
- package/src/web/public/images/app/gmail.png +0 -0
- package/src/web/public/images/app/googlecalender.png +0 -0
- package/src/web/public/images/app/googledocs.png +0 -0
- package/src/web/public/images/app/googlesheets.png +0 -0
- package/src/web/public/images/app/gradle.png +0 -0
- package/src/web/public/images/app/grafana.png +0 -0
- package/src/web/public/images/app/graphql.png +0 -0
- package/src/web/public/images/app/grok.png +0 -0
- package/src/web/public/images/app/groq.png +0 -0
- package/src/web/public/images/app/hazelcast.png +0 -0
- package/src/web/public/images/app/huggingface.png +0 -0
- package/src/web/public/images/app/imessage.png +0 -0
- package/src/web/public/images/app/instagram.png +0 -0
- package/src/web/public/images/app/intellij.png +0 -0
- package/src/web/public/images/app/jenkins.png +0 -0
- package/src/web/public/images/app/jira.png +0 -0
- package/src/web/public/images/app/kafka.png +0 -0
- package/src/web/public/images/app/kubernetes.png +0 -0
- package/src/web/public/images/app/linear.png +0 -0
- package/src/web/public/images/app/linkedin.png +0 -0
- package/src/web/public/images/app/llama.png +0 -0
- package/src/web/public/images/app/make.png +0 -0
- package/src/web/public/images/app/maven.png +0 -0
- package/src/web/public/images/app/mcp.png +0 -0
- package/src/web/public/images/app/microsoftteams.png +0 -0
- package/src/web/public/images/app/mistral.png +0 -0
- package/src/web/public/images/app/monday.png +0 -0
- package/src/web/public/images/app/mongodb.png +0 -0
- package/src/web/public/images/app/mssql.png +0 -0
- package/src/web/public/images/app/mysql.png +0 -0
- package/src/web/public/images/app/n8n.png +0 -0
- package/src/web/public/images/app/notion.png +0 -0
- package/src/web/public/images/app/npm.png +0 -0
- package/src/web/public/images/app/nuget.png +0 -0
- package/src/web/public/images/app/obsidian.png +0 -0
- package/src/web/public/images/app/openai.png +0 -0
- package/src/web/public/images/app/openrouter.png +0 -0
- package/src/web/public/images/app/opensearch.png +0 -0
- package/src/web/public/images/app/openshift.png +0 -0
- package/src/web/public/images/app/oracle.png +0 -0
- package/src/web/public/images/app/perplexity.png +0 -0
- package/src/web/public/images/app/pipedream.png +0 -0
- package/src/web/public/images/app/postgresql.png +0 -0
- package/src/web/public/images/app/powershell.png +0 -0
- package/src/web/public/images/app/prometheus.png +0 -0
- package/src/web/public/images/app/reddit.png +0 -0
- package/src/web/public/images/app/redis.png +0 -0
- package/src/web/public/images/app/rss.png +0 -0
- package/src/web/public/images/app/signal.png +0 -0
- package/src/web/public/images/app/slack.png +0 -0
- package/src/web/public/images/app/soap.png +0 -0
- package/src/web/public/images/app/sqlite.png +0 -0
- package/src/web/public/images/app/supabase.png +0 -0
- package/src/web/public/images/app/telegram.png +0 -0
- package/src/web/public/images/app/things3.png +0 -0
- package/src/web/public/images/app/threads.png +0 -0
- package/src/web/public/images/app/tiktok.png +0 -0
- package/src/web/public/images/app/together.png +0 -0
- package/src/web/public/images/app/trello.png +0 -0
- package/src/web/public/images/app/vscode.png +0 -0
- package/src/web/public/images/app/webhook.png +0 -0
- package/src/web/public/images/app/webpage.png +0 -0
- package/src/web/public/images/app/whatsappbusiness.png +0 -0
- package/src/web/public/images/app/windsorf.png +0 -0
- package/src/web/public/images/app/x.png +0 -0
- package/src/web/public/images/app/youtube.png +0 -0
- package/src/web/public/images/app/zapier.png +0 -0
- package/src/web/public/images/app/zededitor.png +0 -0
- package/src/web/public/images/app/zoom.png +0 -0
- package/src/web/public/images/avatar-anon.svg +4 -0
- package/src/web/public/images/favicon.png +0 -0
- package/src/web/public/images/install/chatgpt-web/step0.png +0 -0
- package/src/web/public/images/install/chatgpt-web/step1.png +0 -0
- package/src/web/public/images/install/chatgpt-web/step2.png +0 -0
- package/src/web/public/images/install/chatgpt-web/step3.png +0 -0
- package/src/web/public/images/install/chatgpt-web/step4.png +0 -0
- package/src/web/public/images/install/chatgpt-web/step5.png +0 -0
- package/src/web/public/images/readme/1-generate-servers.png +0 -0
- package/src/web/public/images/readme/2-database-connection.png +0 -0
- package/src/web/public/images/readme/2-file-upload.png +0 -0
- package/src/web/public/images/readme/3-data-preview.png +0 -0
- package/src/web/public/images/readme/4-data-preview2.png +0 -0
- package/src/web/public/images/readme/5-server-configuration.png +0 -0
- package/src/web/public/images/readme/6-server-generated-modal.png +0 -0
- package/src/web/public/images/readme/7-generated-servers.png +0 -0
- package/src/web/public/images/readme/8-generated-servers-view-details.png +0 -0
- package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.23.51.png +0 -0
- package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.24.59.png +0 -0
- package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.05.png +0 -0
- package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.14.png +0 -0
- package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.21.png +0 -0
- package/src/web/public/images/readme/Screenshot 2025-10-09 at 20.25.36.png +0 -0
- package/src/web/public/index.html +4685 -488
- package/src/web/public/landing.html +1638 -0
- package/src/web/public/logger.js +31 -0
- package/src/web/public/login.html +372 -0
- package/src/web/public/manage-servers.html +121 -188
- package/src/web/public/pricing.html +537 -0
- package/src/web/public/quick-ask.html +133 -0
- package/src/web/public/quickmcp-styles.css +708 -0
- package/src/web/public/roles.html +177 -0
- package/src/web/public/shared.js +736 -3
- package/src/web/public/sidebar.js +414 -0
- package/src/web/public/test-servers.html +605 -221
- package/src/web/public/users.html +191 -0
- package/dist/client/MCPClientUnified.d.ts +0 -31
- package/dist/client/MCPClientUnified.d.ts.map +0 -1
- package/dist/client/MCPClientUnified.js +0 -275
- package/dist/client/MCPClientUnified.js.map +0 -1
- package/dist/client/MCPTestRunnerUnified.d.ts +0 -48
- package/dist/client/MCPTestRunnerUnified.d.ts.map +0 -1
- package/dist/client/MCPTestRunnerUnified.js +0 -183
- package/dist/client/MCPTestRunnerUnified.js.map +0 -1
- package/dist/database/json-manager.d.ts +0 -55
- package/dist/database/json-manager.d.ts.map +0 -1
- package/dist/database/json-manager.js +0 -128
- package/dist/database/json-manager.js.map +0 -1
- package/dist/dynamic-mcp-executor.d.ts.map +0 -1
- package/dist/dynamic-mcp-executor.js +0 -274
- package/dist/dynamic-mcp-executor.js.map +0 -1
- package/dist/generators/MCPServerGenerator-new.d.ts +0 -37
- package/dist/generators/MCPServerGenerator-new.d.ts.map +0 -1
- package/dist/generators/MCPServerGenerator-new.js +0 -287
- package/dist/generators/MCPServerGenerator-new.js.map +0 -1
- package/dist/generators/database/sqlite-manager.d.ts +0 -52
- package/dist/generators/database/sqlite-manager.js +0 -143
- package/dist/generators/generators/MCPServerGenerator.d.ts +0 -37
- package/dist/generators/generators/MCPServerGenerator.js +0 -396
- package/dist/integrated-mcp-server.d.ts +0 -25
- package/dist/integrated-mcp-server.d.ts.map +0 -1
- package/dist/integrated-mcp-server.js +0 -541
- package/dist/integrated-mcp-server.js.map +0 -1
- package/dist/mcp-inspector-server.d.ts +0 -3
- package/dist/mcp-inspector-server.d.ts.map +0 -1
- package/dist/mcp-inspector-server.js +0 -119
- package/dist/mcp-inspector-server.js.map +0 -1
- package/dist/mcp-sdk-server.d.ts +0 -3
- package/dist/mcp-sdk-server.d.ts.map +0 -1
- package/dist/mcp-sdk-server.js +0 -90
- package/dist/mcp-sdk-server.js.map +0 -1
- package/dist/mcp-server.d.ts +0 -3
- package/dist/mcp-server.d.ts.map +0 -1
- package/dist/mcp-server.js +0 -300
- package/dist/mcp-server.js.map +0 -1
- package/dist/parsers/parsers/ExcelParser.js +0 -118
- package/dist/quickmcp-unified-bridge.d.ts +0 -13
- package/dist/quickmcp-unified-bridge.d.ts.map +0 -1
- package/dist/quickmcp-unified-bridge.js +0 -176
- package/dist/quickmcp-unified-bridge.js.map +0 -1
- package/dist/sqlite-manager.js +0 -145
- package/dist/test-app.d.ts +0 -2
- package/dist/test-app.d.ts.map +0 -1
- package/dist/test-app.js +0 -119
- package/dist/test-app.js.map +0 -1
- package/dist/transport/base-transport.d.ts +0 -21
- package/dist/transport/base-transport.d.ts.map +0 -1
- package/dist/transport/base-transport.js +0 -16
- package/dist/transport/base-transport.js.map +0 -1
- package/dist/transport/index.d.ts +0 -10
- package/dist/transport/index.d.ts.map +0 -1
- package/dist/transport/index.js +0 -12
- package/dist/transport/index.js.map +0 -1
- package/dist/transport/sse-transport.d.ts +0 -13
- package/dist/transport/sse-transport.d.ts.map +0 -1
- package/dist/transport/sse-transport.js +0 -106
- package/dist/transport/sse-transport.js.map +0 -1
- package/dist/transport/stdio-transport.d.ts +0 -8
- package/dist/transport/stdio-transport.d.ts.map +0 -1
- package/dist/transport/stdio-transport.js +0 -53
- package/dist/transport/stdio-transport.js.map +0 -1
- package/dist/transport/streamable-http-transport.d.ts +0 -15
- package/dist/transport/streamable-http-transport.d.ts.map +0 -1
- package/dist/transport/streamable-http-transport.js +0 -151
- package/dist/transport/streamable-http-transport.js.map +0 -1
- package/dist/web/client/MCPClient.js +0 -348
- package/dist/web/client/MCPTestRunner.js +0 -317
- package/dist/web/database/json-manager.js +0 -124
- package/dist/web/database/sqlite-manager.js +0 -146
- package/dist/web/dynamic-mcp-executor.js +0 -443
- package/dist/web/generators/MCPServerGenerator-new.js +0 -284
- package/dist/web/generators/MCPServerGenerator.js +0 -566
- package/dist/web/integrated-mcp-server-new.js +0 -394
- package/dist/web/parsers/CsvParser.js +0 -144
- package/dist/web/parsers/DatabaseParser.js +0 -637
- package/dist/web/parsers/ExcelParser.js +0 -180
- package/dist/web/parsers/index.js +0 -152
- package/dist/web/server.d.ts.map +0 -1
- package/dist/web/server.js +0 -790
- package/dist/web/server.js.map +0 -1
- package/dist/web/types/index.js +0 -2
- package/dist/web/web/server.js +0 -860
- package/src/web/public/modern-styles.css +0 -946
- package/src/web/public/shared-styles.css +0 -2091
- /package/src/web/public/images/{1-claude-quickmcp-stdio.png → readme/1-claude-quickmcp-stdio.png} +0 -0
- /package/src/web/public/images/{2-claude-tools.png → readme/2-claude-tools.png} +0 -0
- /package/src/web/public/images/{3-claude-developer-settings.png → readme/3-claude-developer-settings.png} +0 -0
- /package/src/web/public/images/{4-claude-config.png → readme/4-claude-config.png} +0 -0
- /package/src/web/public/images/{5-claude-config-edit.png → readme/5-claude-config-edit.png} +0 -0
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
// Browser logger - writes to /api/logs (fire-and-forget) and also console.error
|
|
2
|
+
const logger = (() => {
|
|
3
|
+
function _log(severity, message, additionalInfo) {
|
|
4
|
+
const msg = (message instanceof Error) ? message.message : String(message);
|
|
5
|
+
const extra = additionalInfo !== undefined
|
|
6
|
+
? (typeof additionalInfo === 'string' ? additionalInfo : JSON.stringify(additionalInfo))
|
|
7
|
+
: ((message instanceof Error && message.stack) ? message.stack : null);
|
|
8
|
+
if (extra !== null) {
|
|
9
|
+
console.error(msg, extra);
|
|
10
|
+
} else {
|
|
11
|
+
console.error(msg);
|
|
12
|
+
}
|
|
13
|
+
fetch('/api/logs', {
|
|
14
|
+
method: 'POST',
|
|
15
|
+
headers: { 'Content-Type': 'application/json' },
|
|
16
|
+
body: JSON.stringify({
|
|
17
|
+
username: typeof currentUserName !== 'undefined' ? currentUserName : '',
|
|
18
|
+
severity,
|
|
19
|
+
message: msg,
|
|
20
|
+
additionalInfo: extra
|
|
21
|
+
})
|
|
22
|
+
}).catch(() => { /* ignore network errors */ });
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
trace: (msg, info) => _log('trace', msg, info),
|
|
26
|
+
debug: (msg, info) => _log('debug', msg, info),
|
|
27
|
+
info: (msg, info) => _log('info', msg, info),
|
|
28
|
+
warn: (msg, info) => _log('warn', msg, info),
|
|
29
|
+
error: (msg, info) => _log('error', msg, info)
|
|
30
|
+
};
|
|
31
|
+
})();
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en" class="h-full">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>QuickMCP Login</title>
|
|
7
|
+
|
|
8
|
+
<link rel="icon" type="image/png" href="/images/favicon.png">
|
|
9
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
10
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
11
|
+
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&family=Newsreader:ital,wght@0,400;1,400&display=swap" rel="stylesheet">
|
|
12
|
+
<script src="https://cdn.tailwindcss.com"></script>
|
|
13
|
+
<link rel="stylesheet" href="quickmcp-styles.css">
|
|
14
|
+
<style>
|
|
15
|
+
:root {
|
|
16
|
+
--bg: #f4f7ff;
|
|
17
|
+
--ink: #0f172a;
|
|
18
|
+
--muted: #4b5563;
|
|
19
|
+
--line: #dbe3f3;
|
|
20
|
+
--brand: #2f6df6;
|
|
21
|
+
--brand-strong: #1d4ed8;
|
|
22
|
+
--panel: #ffffff;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
body {
|
|
26
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;
|
|
27
|
+
color: var(--ink);
|
|
28
|
+
background:
|
|
29
|
+
radial-gradient(circle at 14% 18%, rgba(47, 109, 246, 0.22), transparent 36%),
|
|
30
|
+
radial-gradient(circle at 86% 90%, rgba(45, 212, 191, 0.16), transparent 42%),
|
|
31
|
+
var(--bg);
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.login-wrap {
|
|
35
|
+
width: min(980px, 94vw);
|
|
36
|
+
min-height: 620px;
|
|
37
|
+
border: 1px solid var(--line);
|
|
38
|
+
border-radius: 24px;
|
|
39
|
+
overflow: hidden;
|
|
40
|
+
background: rgba(255, 255, 255, 0.82);
|
|
41
|
+
backdrop-filter: blur(8px);
|
|
42
|
+
box-shadow: 0 18px 60px rgba(15, 23, 42, 0.12);
|
|
43
|
+
display: grid;
|
|
44
|
+
grid-template-columns: 1.05fr 1fr;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.login-brand {
|
|
48
|
+
background:
|
|
49
|
+
linear-gradient(160deg, #0f172a 0%, #1e3a8a 58%, #2563eb 100%);
|
|
50
|
+
color: #fff;
|
|
51
|
+
padding: 44px 40px;
|
|
52
|
+
display: flex;
|
|
53
|
+
flex-direction: column;
|
|
54
|
+
justify-content: space-between;
|
|
55
|
+
gap: 32px;
|
|
56
|
+
position: relative;
|
|
57
|
+
isolation: isolate;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.login-brand::before {
|
|
61
|
+
content: '';
|
|
62
|
+
position: absolute;
|
|
63
|
+
inset: auto -40px -80px auto;
|
|
64
|
+
width: 320px;
|
|
65
|
+
height: 320px;
|
|
66
|
+
border-radius: 50%;
|
|
67
|
+
background: rgba(255, 255, 255, 0.14);
|
|
68
|
+
filter: blur(10px);
|
|
69
|
+
z-index: -1;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
.login-badge {
|
|
73
|
+
width: fit-content;
|
|
74
|
+
border: 1px solid rgba(255, 255, 255, 0.32);
|
|
75
|
+
border-radius: 999px;
|
|
76
|
+
padding: 8px 14px;
|
|
77
|
+
font-size: 12px;
|
|
78
|
+
letter-spacing: 0.06em;
|
|
79
|
+
text-transform: uppercase;
|
|
80
|
+
font-weight: 600;
|
|
81
|
+
margin-bottom: 18px;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.login-brand h1 {
|
|
85
|
+
font-family: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;
|
|
86
|
+
font-size: clamp(30px, 5vw, 44px);
|
|
87
|
+
line-height: 1.12;
|
|
88
|
+
letter-spacing: -0.02em;
|
|
89
|
+
font-weight: 800;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.login-brand p {
|
|
93
|
+
color: rgba(255, 255, 255, 0.82);
|
|
94
|
+
max-width: 34ch;
|
|
95
|
+
font-size: 15px;
|
|
96
|
+
line-height: 1.55;
|
|
97
|
+
margin-top: 14px;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
.login-points {
|
|
101
|
+
display: grid;
|
|
102
|
+
gap: 12px;
|
|
103
|
+
margin-top: 6px;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
.login-point {
|
|
107
|
+
border: 1px solid rgba(255, 255, 255, 0.2);
|
|
108
|
+
background: rgba(255, 255, 255, 0.08);
|
|
109
|
+
border-radius: 12px;
|
|
110
|
+
padding: 10px 12px;
|
|
111
|
+
font-size: 13px;
|
|
112
|
+
color: rgba(255, 255, 255, 0.9);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.login-panel {
|
|
116
|
+
background: var(--panel);
|
|
117
|
+
padding: 44px 38px;
|
|
118
|
+
display: flex;
|
|
119
|
+
flex-direction: column;
|
|
120
|
+
justify-content: center;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
.login-title {
|
|
124
|
+
font-size: 29px;
|
|
125
|
+
font-weight: 700;
|
|
126
|
+
letter-spacing: -0.02em;
|
|
127
|
+
margin-bottom: 6px;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.login-subtitle {
|
|
131
|
+
color: var(--muted);
|
|
132
|
+
font-size: 14px;
|
|
133
|
+
margin-bottom: 24px;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
.login-label {
|
|
137
|
+
display: block;
|
|
138
|
+
margin-bottom: 8px;
|
|
139
|
+
font-size: 13px;
|
|
140
|
+
color: #334155;
|
|
141
|
+
font-weight: 600;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
.login-input {
|
|
145
|
+
width: 100%;
|
|
146
|
+
border: 1px solid var(--line);
|
|
147
|
+
border-radius: 12px;
|
|
148
|
+
padding: 12px 14px;
|
|
149
|
+
font-size: 14px;
|
|
150
|
+
outline: none;
|
|
151
|
+
transition: border-color .2s, box-shadow .2s;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
.login-input:focus {
|
|
155
|
+
border-color: var(--brand);
|
|
156
|
+
box-shadow: 0 0 0 3px rgba(47, 109, 246, 0.14);
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
.login-btn {
|
|
160
|
+
width: 100%;
|
|
161
|
+
border: 0;
|
|
162
|
+
border-radius: 12px;
|
|
163
|
+
background: linear-gradient(100deg, var(--brand), var(--brand-strong));
|
|
164
|
+
color: #fff;
|
|
165
|
+
font-weight: 600;
|
|
166
|
+
padding: 12px 14px;
|
|
167
|
+
cursor: pointer;
|
|
168
|
+
transition: transform .15s ease, filter .2s ease;
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
.login-btn:hover {
|
|
172
|
+
filter: brightness(1.05);
|
|
173
|
+
transform: translateY(-1px);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
.oauth-btn {
|
|
177
|
+
width: 100%;
|
|
178
|
+
border: 1px solid var(--line);
|
|
179
|
+
background: #fff;
|
|
180
|
+
border-radius: 12px;
|
|
181
|
+
padding: 11px 14px;
|
|
182
|
+
display: inline-flex;
|
|
183
|
+
align-items: center;
|
|
184
|
+
justify-content: center;
|
|
185
|
+
gap: 10px;
|
|
186
|
+
font-weight: 500;
|
|
187
|
+
color: #0f172a;
|
|
188
|
+
transition: border-color .2s, background .2s;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
.oauth-btn:hover {
|
|
192
|
+
border-color: #bfcbec;
|
|
193
|
+
background: #f8fbff;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
.error-text {
|
|
197
|
+
color: #dc2626;
|
|
198
|
+
font-size: 13px;
|
|
199
|
+
margin-bottom: 12px;
|
|
200
|
+
min-height: 20px;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
@media (max-width: 920px) {
|
|
204
|
+
.login-wrap {
|
|
205
|
+
grid-template-columns: 1fr;
|
|
206
|
+
min-height: auto;
|
|
207
|
+
}
|
|
208
|
+
.login-brand {
|
|
209
|
+
padding: 28px 26px;
|
|
210
|
+
}
|
|
211
|
+
.login-panel {
|
|
212
|
+
padding: 28px 22px;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
</style>
|
|
216
|
+
</head>
|
|
217
|
+
<body class="h-screen flex items-center justify-center p-4">
|
|
218
|
+
<main class="login-wrap">
|
|
219
|
+
<section class="login-brand">
|
|
220
|
+
<div>
|
|
221
|
+
<div class="login-badge">QuickMCP Workspace Access</div>
|
|
222
|
+
<h1>Connect data and tools, then let AI execute safely.</h1>
|
|
223
|
+
<p>Secure sign-in for your MCP workspace. Use your account to manage databases, brokers, APIs, and production-ready integrations.</p>
|
|
224
|
+
</div>
|
|
225
|
+
<div class="login-points">
|
|
226
|
+
<div class="login-point">Structured MCP actions for real workflows</div>
|
|
227
|
+
<div class="login-point">Role-based access and token policies</div>
|
|
228
|
+
<div class="login-point">Works across app and database connectors</div>
|
|
229
|
+
</div>
|
|
230
|
+
</section>
|
|
231
|
+
|
|
232
|
+
<section class="login-panel">
|
|
233
|
+
<h2 class="login-title">Sign in</h2>
|
|
234
|
+
<p id="loginModeText" class="login-subtitle">Sign in to continue.</p>
|
|
235
|
+
<p id="errorText" class="error-text hidden"></p>
|
|
236
|
+
|
|
237
|
+
<form id="loginForm" class="space-y-4 hidden" autocomplete="off">
|
|
238
|
+
<div>
|
|
239
|
+
<label for="username" class="login-label">Username</label>
|
|
240
|
+
<input id="username" type="text" required class="login-input" autocomplete="off" autocapitalize="none" autocorrect="off" spellcheck="false">
|
|
241
|
+
</div>
|
|
242
|
+
<div>
|
|
243
|
+
<label for="password" class="login-label">Password</label>
|
|
244
|
+
<input id="password" type="password" required class="login-input" autocomplete="new-password">
|
|
245
|
+
</div>
|
|
246
|
+
<button type="submit" class="login-btn">Login</button>
|
|
247
|
+
</form>
|
|
248
|
+
|
|
249
|
+
<div id="supabaseLogin" class="hidden space-y-3">
|
|
250
|
+
<button id="googleLoginBtn" type="button" class="oauth-btn">
|
|
251
|
+
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 48 48" class="w-4 h-4" aria-hidden="true">
|
|
252
|
+
<path fill="#FFC107" d="M43.6 20.5H42V20H24v8h11.3C33.7 32.7 29.3 36 24 36c-6.6 0-12-5.4-12-12S17.4 12 24 12c3 0 5.7 1.1 7.8 3l5.7-5.7C34.1 6.1 29.3 4 24 4 12.9 4 4 12.9 4 24s8.9 20 20 20 20-8.9 20-20c0-1.3-.1-2.4-.4-3.5z"/>
|
|
253
|
+
<path fill="#FF3D00" d="M6.3 14.7l6.6 4.8C14.7 16 19 12 24 12c3 0 5.7 1.1 7.8 3l5.7-5.7C34.1 6.1 29.3 4 24 4c-7.7 0-14.3 4.3-17.7 10.7z"/>
|
|
254
|
+
<path fill="#4CAF50" d="M24 44c5.2 0 10-2 13.5-5.3l-6.2-5.2c-2.1 1.6-4.7 2.5-7.3 2.5-5.3 0-9.7-3.3-11.3-8l-6.6 5.1C9.7 39.6 16.3 44 24 44z"/>
|
|
255
|
+
<path fill="#1976D2" d="M43.6 20.5H42V20H24v8h11.3c-.8 2.3-2.3 4.3-4.2 5.5l6.2 5.2C36.9 38.9 44 34 44 24c0-1.3-.1-2.4-.4-3.5z"/>
|
|
256
|
+
</svg>
|
|
257
|
+
<span>Continue with Google</span>
|
|
258
|
+
</button>
|
|
259
|
+
<p class="text-xs text-slate-500">Google sign-in is handled by Supabase.</p>
|
|
260
|
+
</div>
|
|
261
|
+
</section>
|
|
262
|
+
</main>
|
|
263
|
+
|
|
264
|
+
<script>
|
|
265
|
+
const form = document.getElementById('loginForm');
|
|
266
|
+
const errorText = document.getElementById('errorText');
|
|
267
|
+
const loginModeText = document.getElementById('loginModeText');
|
|
268
|
+
const supabaseLogin = document.getElementById('supabaseLogin');
|
|
269
|
+
const googleLoginBtn = document.getElementById('googleLoginBtn');
|
|
270
|
+
const usernameInput = document.getElementById('username');
|
|
271
|
+
const passwordInput = document.getElementById('password');
|
|
272
|
+
|
|
273
|
+
function showError(message) {
|
|
274
|
+
errorText.textContent = message || 'Login failed';
|
|
275
|
+
errorText.classList.remove('hidden');
|
|
276
|
+
}
|
|
277
|
+
|
|
278
|
+
function hideError() {
|
|
279
|
+
errorText.classList.add('hidden');
|
|
280
|
+
errorText.textContent = '';
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
async function completeSupabaseLoginFromHash() {
|
|
284
|
+
const params = new URLSearchParams(window.location.hash.replace(/^#/, ''));
|
|
285
|
+
const accessToken = params.get('access_token');
|
|
286
|
+
if (!accessToken) return false;
|
|
287
|
+
|
|
288
|
+
const response = await fetch('/api/auth/oauth/session', {
|
|
289
|
+
method: 'POST',
|
|
290
|
+
headers: { 'Content-Type': 'application/json' },
|
|
291
|
+
body: JSON.stringify({ accessToken })
|
|
292
|
+
});
|
|
293
|
+
if (!response.ok) {
|
|
294
|
+
const body = await response.json().catch(() => ({ error: 'Supabase login failed' }));
|
|
295
|
+
throw new Error(body.error || 'Supabase login failed');
|
|
296
|
+
}
|
|
297
|
+
const body = await response.json().catch(() => ({}));
|
|
298
|
+
|
|
299
|
+
const queryNext = new URLSearchParams(window.location.search).get('next');
|
|
300
|
+
const apiNext = typeof body?.data?.next === 'string' ? body.data.next : '';
|
|
301
|
+
const next = queryNext && queryNext.startsWith('/')
|
|
302
|
+
? queryNext
|
|
303
|
+
: (apiNext.startsWith('/') ? apiNext : '/');
|
|
304
|
+
window.location.replace(next);
|
|
305
|
+
return true;
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
async function initLoginMode() {
|
|
309
|
+
const configRes = await fetch('/api/auth/config');
|
|
310
|
+
const config = await configRes.json().catch(() => ({}));
|
|
311
|
+
const authMode = config?.data?.authMode || 'LITE';
|
|
312
|
+
|
|
313
|
+
if (authMode === 'SUPABASE_GOOGLE') {
|
|
314
|
+
loginModeText.textContent = 'SUPABASE_GOOGLE mode is enabled. Sign in with Google to continue.';
|
|
315
|
+
supabaseLogin.classList.remove('hidden');
|
|
316
|
+
form.classList.add('hidden');
|
|
317
|
+
|
|
318
|
+
try {
|
|
319
|
+
const handled = await completeSupabaseLoginFromHash();
|
|
320
|
+
if (handled) return;
|
|
321
|
+
} catch (error) {
|
|
322
|
+
showError(error.message || 'Supabase login failed');
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
googleLoginBtn.addEventListener('click', () => {
|
|
326
|
+
const queryNext = new URLSearchParams(window.location.search).get('next');
|
|
327
|
+
const nextTarget = queryNext && queryNext.startsWith('/') ? queryNext : '/';
|
|
328
|
+
window.location.href = `/api/auth/oauth/start?next=${encodeURIComponent(nextTarget)}`;
|
|
329
|
+
});
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
|
|
333
|
+
loginModeText.textContent = 'LITE auth mode is enabled. Sign in to continue.';
|
|
334
|
+
form.classList.remove('hidden');
|
|
335
|
+
supabaseLogin.classList.add('hidden');
|
|
336
|
+
}
|
|
337
|
+
|
|
338
|
+
form.addEventListener('submit', async (event) => {
|
|
339
|
+
event.preventDefault();
|
|
340
|
+
hideError();
|
|
341
|
+
|
|
342
|
+
const username = document.getElementById('username').value.trim();
|
|
343
|
+
const password = document.getElementById('password').value;
|
|
344
|
+
|
|
345
|
+
try {
|
|
346
|
+
const response = await fetch('/api/auth/login', {
|
|
347
|
+
method: 'POST',
|
|
348
|
+
headers: { 'Content-Type': 'application/json' },
|
|
349
|
+
body: JSON.stringify({ username, password })
|
|
350
|
+
});
|
|
351
|
+
|
|
352
|
+
if (!response.ok) {
|
|
353
|
+
const body = await response.json().catch(() => ({ error: 'Login failed' }));
|
|
354
|
+
throw new Error(body.error || 'Login failed');
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
const next = new URLSearchParams(window.location.search).get('next');
|
|
358
|
+
window.location.href = next && next.startsWith('/') ? next : '/';
|
|
359
|
+
} catch (error) {
|
|
360
|
+
showError(error.message || 'Login failed');
|
|
361
|
+
}
|
|
362
|
+
});
|
|
363
|
+
|
|
364
|
+
initLoginMode().catch((error) => showError(error.message || 'Failed to initialize login'));
|
|
365
|
+
|
|
366
|
+
window.addEventListener('pageshow', () => {
|
|
367
|
+
if (usernameInput) usernameInput.value = '';
|
|
368
|
+
if (passwordInput) passwordInput.value = '';
|
|
369
|
+
});
|
|
370
|
+
</script>
|
|
371
|
+
</body>
|
|
372
|
+
</html>
|