@mcp-z/mcp-sheets 1.0.1 → 1.0.3
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/cjs/setup/config.d.cts +2 -0
- package/dist/cjs/setup/config.d.ts +2 -0
- package/dist/cjs/setup/config.js +11 -3
- package/dist/cjs/setup/config.js.map +1 -1
- package/dist/cjs/setup/index.d.cts +1 -1
- package/dist/cjs/setup/index.d.ts +1 -1
- package/dist/cjs/setup/index.js.map +1 -1
- package/dist/esm/setup/config.d.ts +2 -0
- package/dist/esm/setup/config.js +14 -1
- package/dist/esm/setup/config.js.map +1 -1
- package/dist/esm/setup/index.d.ts +1 -1
- package/dist/esm/setup/index.js.map +1 -1
- package/package.json +17 -17
|
@@ -21,6 +21,7 @@ export declare function handleVersionHelp(args: string[]): {
|
|
|
21
21
|
* - --port=<port> Enable HTTP transport on specified port
|
|
22
22
|
* - --stdio Enable stdio transport (default if no port)
|
|
23
23
|
* - --log-level=<level> Logging level (default: info)
|
|
24
|
+
* - --base-url=<url> Base URL for HTTP file serving (optional)
|
|
24
25
|
*
|
|
25
26
|
* Environment Variables:
|
|
26
27
|
* - GOOGLE_CLIENT_ID OAuth client ID (REQUIRED)
|
|
@@ -32,6 +33,7 @@ export declare function handleVersionHelp(args: string[]): {
|
|
|
32
33
|
* - DCR_STORE_URI DCR storage URI (optional, same as --dcr-store-uri)
|
|
33
34
|
* - PORT Default HTTP port (optional)
|
|
34
35
|
* - LOG_LEVEL Default logging level (optional)
|
|
36
|
+
* - BASE_URL Base URL for HTTP file serving (optional)
|
|
35
37
|
*
|
|
36
38
|
* OAuth Scopes (from constants.ts):
|
|
37
39
|
* openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive
|
|
@@ -21,6 +21,7 @@ export declare function handleVersionHelp(args: string[]): {
|
|
|
21
21
|
* - --port=<port> Enable HTTP transport on specified port
|
|
22
22
|
* - --stdio Enable stdio transport (default if no port)
|
|
23
23
|
* - --log-level=<level> Logging level (default: info)
|
|
24
|
+
* - --base-url=<url> Base URL for HTTP file serving (optional)
|
|
24
25
|
*
|
|
25
26
|
* Environment Variables:
|
|
26
27
|
* - GOOGLE_CLIENT_ID OAuth client ID (REQUIRED)
|
|
@@ -32,6 +33,7 @@ export declare function handleVersionHelp(args: string[]): {
|
|
|
32
33
|
* - DCR_STORE_URI DCR storage URI (optional, same as --dcr-store-uri)
|
|
33
34
|
* - PORT Default HTTP port (optional)
|
|
34
35
|
* - LOG_LEVEL Default logging level (optional)
|
|
36
|
+
* - BASE_URL Base URL for HTTP file serving (optional)
|
|
35
37
|
*
|
|
36
38
|
* OAuth Scopes (from constants.ts):
|
|
37
39
|
* openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive
|
package/dist/cjs/setup/config.js
CHANGED
|
@@ -131,7 +131,7 @@ function _type_of(obj) {
|
|
|
131
131
|
return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj;
|
|
132
132
|
}
|
|
133
133
|
var pkg = JSON.parse(_fs.readFileSync(_path.join((0, _modulerootsync.default)(_url.fileURLToPath(require("url").pathToFileURL(__filename).toString())), 'package.json'), 'utf-8'));
|
|
134
|
-
var HELP_TEXT = "\nUsage: mcp-sheets [options]\n\nMCP server for Google Sheets spreadsheet management with OAuth authentication.\n\nOptions:\n --version Show version number\n --help Show this help message\n --auth=<mode> Authentication mode (default: loopback-oauth)\n Modes: loopback-oauth, service-account, dcr\n --headless Disable browser auto-open, return auth URL instead\n --redirect-uri=<uri> OAuth redirect URI (default: ephemeral loopback)\n --dcr-mode=<mode> DCR mode (self-hosted or external, default: self-hosted)\n --dcr-verify-url=<url> External verification endpoint (required for external mode)\n --dcr-store-uri=<uri> DCR client storage URI (required for self-hosted mode)\n --port=<port> Enable HTTP transport on specified port\n --stdio Enable stdio transport (default if no port)\n --log-level=<level> Logging level (default: info)\n\nEnvironment Variables:\n GOOGLE_CLIENT_ID OAuth client ID (REQUIRED)\n GOOGLE_CLIENT_SECRET OAuth client secret (optional)\n AUTH_MODE Default authentication mode (optional)\n HEADLESS Disable browser auto-open (optional)\n DCR_MODE DCR mode (optional, same format as --dcr-mode)\n DCR_VERIFY_URL External verification URL (optional, same as --dcr-verify-url)\n DCR_STORE_URI DCR storage URI (optional, same as --dcr-store-uri)\n PORT Default HTTP port (optional)\n LOG_LEVEL Default logging level (optional)\n\nOAuth Scopes:\n openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive\n\nExamples:\n mcp-sheets # Use default settings\n mcp-sheets --auth=service-account # Use service account auth\n mcp-sheets --port=3000 # HTTP transport on port 3000\n GOOGLE_CLIENT_ID=xxx mcp-sheets # Set client ID via env var\n".trim();
|
|
134
|
+
var HELP_TEXT = "\nUsage: mcp-sheets [options]\n\nMCP server for Google Sheets spreadsheet management with OAuth authentication.\n\nOptions:\n --version Show version number\n --help Show this help message\n --auth=<mode> Authentication mode (default: loopback-oauth)\n Modes: loopback-oauth, service-account, dcr\n --headless Disable browser auto-open, return auth URL instead\n --redirect-uri=<uri> OAuth redirect URI (default: ephemeral loopback)\n --dcr-mode=<mode> DCR mode (self-hosted or external, default: self-hosted)\n --dcr-verify-url=<url> External verification endpoint (required for external mode)\n --dcr-store-uri=<uri> DCR client storage URI (required for self-hosted mode)\n --port=<port> Enable HTTP transport on specified port\n --stdio Enable stdio transport (default if no port)\n --log-level=<level> Logging level (default: info)\n --base-url=<url> Base URL for HTTP file serving (optional)\n\nEnvironment Variables:\n GOOGLE_CLIENT_ID OAuth client ID (REQUIRED)\n GOOGLE_CLIENT_SECRET OAuth client secret (optional)\n AUTH_MODE Default authentication mode (optional)\n HEADLESS Disable browser auto-open (optional)\n DCR_MODE DCR mode (optional, same format as --dcr-mode)\n DCR_VERIFY_URL External verification URL (optional, same as --dcr-verify-url)\n DCR_STORE_URI DCR storage URI (optional, same as --dcr-store-uri)\n PORT Default HTTP port (optional)\n LOG_LEVEL Default logging level (optional)\n BASE_URL Base URL for HTTP file serving (optional)\n\nOAuth Scopes:\n openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive\n\nExamples:\n mcp-sheets # Use default settings\n mcp-sheets --auth=service-account # Use service account auth\n mcp-sheets --port=3000 # HTTP transport on port 3000\n GOOGLE_CLIENT_ID=xxx mcp-sheets # Set client ID via env var\n".trim();
|
|
135
135
|
function handleVersionHelp(args) {
|
|
136
136
|
var values = (0, _util.parseArgs)({
|
|
137
137
|
args: args,
|
|
@@ -163,12 +163,15 @@ function parseConfig(args, env) {
|
|
|
163
163
|
var oauthConfig = (0, _oauthgoogle.parseConfig)(args, env);
|
|
164
164
|
// Parse DCR configuration if DCR mode is enabled
|
|
165
165
|
var dcrConfig = oauthConfig.auth === 'dcr' ? (0, _oauthgoogle.parseDcrConfig)(args, env, _constantsts.GOOGLE_SCOPE) : undefined;
|
|
166
|
-
// Parse application-level config (LOG_LEVEL)
|
|
166
|
+
// Parse application-level config (LOG_LEVEL, BASE_URL)
|
|
167
167
|
var values = (0, _util.parseArgs)({
|
|
168
168
|
args: args,
|
|
169
169
|
options: {
|
|
170
170
|
'log-level': {
|
|
171
171
|
type: 'string'
|
|
172
|
+
},
|
|
173
|
+
'base-url': {
|
|
174
|
+
type: 'string'
|
|
172
175
|
}
|
|
173
176
|
},
|
|
174
177
|
strict: false,
|
|
@@ -193,6 +196,9 @@ function parseConfig(args, env) {
|
|
|
193
196
|
var cliLogLevel = typeof values['log-level'] === 'string' ? values['log-level'] : undefined;
|
|
194
197
|
var envLogLevel = env.LOG_LEVEL;
|
|
195
198
|
var logLevel = (_ref1 = cliLogLevel !== null && cliLogLevel !== void 0 ? cliLogLevel : envLogLevel) !== null && _ref1 !== void 0 ? _ref1 : 'info';
|
|
199
|
+
var cliBaseUrl = typeof values['base-url'] === 'string' ? values['base-url'] : undefined;
|
|
200
|
+
var envBaseUrl = env.BASE_URL;
|
|
201
|
+
var baseUrl = cliBaseUrl !== null && cliBaseUrl !== void 0 ? cliBaseUrl : envBaseUrl;
|
|
196
202
|
// Combine configs
|
|
197
203
|
return _object_spread(_object_spread_props(_object_spread({}, oauthConfig), {
|
|
198
204
|
transport: transportConfig.transport,
|
|
@@ -201,7 +207,9 @@ function parseConfig(args, env) {
|
|
|
201
207
|
name: name,
|
|
202
208
|
version: pkg.version,
|
|
203
209
|
repositoryUrl: repositoryUrl
|
|
204
|
-
}),
|
|
210
|
+
}), baseUrl && {
|
|
211
|
+
baseUrl: baseUrl
|
|
212
|
+
}, dcrConfig && {
|
|
205
213
|
dcrConfig: dcrConfig
|
|
206
214
|
});
|
|
207
215
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/Projects/mcp-z/mcp-sheets/src/setup/config.ts"],"sourcesContent":["import { parseDcrConfig, parseConfig as parseOAuthConfig } from '@mcp-z/oauth-google';\nimport { findConfigPath, parseConfig as parseTransportConfig } from '@mcp-z/server';\nimport * as fs from 'fs';\nimport moduleRoot from 'module-root-sync';\nimport { homedir } from 'os';\nimport * as path from 'path';\nimport * as url from 'url';\nimport { parseArgs } from 'util';\nimport { GOOGLE_SCOPE } from '../constants.ts';\nimport type { ServerConfig } from '../types.ts';\n\nconst pkg = JSON.parse(fs.readFileSync(path.join(moduleRoot(url.fileURLToPath(import.meta.url)), 'package.json'), 'utf-8'));\n\nconst HELP_TEXT = `\nUsage: mcp-sheets [options]\n\nMCP server for Google Sheets spreadsheet management with OAuth authentication.\n\nOptions:\n --version Show version number\n --help Show this help message\n --auth=<mode> Authentication mode (default: loopback-oauth)\n Modes: loopback-oauth, service-account, dcr\n --headless Disable browser auto-open, return auth URL instead\n --redirect-uri=<uri> OAuth redirect URI (default: ephemeral loopback)\n --dcr-mode=<mode> DCR mode (self-hosted or external, default: self-hosted)\n --dcr-verify-url=<url> External verification endpoint (required for external mode)\n --dcr-store-uri=<uri> DCR client storage URI (required for self-hosted mode)\n --port=<port> Enable HTTP transport on specified port\n --stdio Enable stdio transport (default if no port)\n --log-level=<level> Logging level (default: info)\n\nEnvironment Variables:\n GOOGLE_CLIENT_ID OAuth client ID (REQUIRED)\n GOOGLE_CLIENT_SECRET OAuth client secret (optional)\n AUTH_MODE Default authentication mode (optional)\n HEADLESS Disable browser auto-open (optional)\n DCR_MODE DCR mode (optional, same format as --dcr-mode)\n DCR_VERIFY_URL External verification URL (optional, same as --dcr-verify-url)\n DCR_STORE_URI DCR storage URI (optional, same as --dcr-store-uri)\n PORT Default HTTP port (optional)\n LOG_LEVEL Default logging level (optional)\n\nOAuth Scopes:\n openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive\n\nExamples:\n mcp-sheets # Use default settings\n mcp-sheets --auth=service-account # Use service account auth\n mcp-sheets --port=3000 # HTTP transport on port 3000\n GOOGLE_CLIENT_ID=xxx mcp-sheets # Set client ID via env var\n`.trim();\n\n/**\n * Handle --version and --help flags before config parsing.\n * These should work without requiring any configuration.\n */\nexport function handleVersionHelp(args: string[]): { handled: boolean; output?: string } {\n const { values } = parseArgs({\n args,\n options: {\n version: { type: 'boolean' },\n help: { type: 'boolean' },\n },\n strict: false,\n });\n\n if (values.version) return { handled: true, output: pkg.version };\n if (values.help) return { handled: true, output: HELP_TEXT };\n return { handled: false };\n}\n\n/**\n * Parse Sheets server configuration from CLI arguments and environment.\n *\n * CLI Arguments (all optional):\n * - --auth=<mode> Authentication mode (default: loopback-oauth)\n * Modes: loopback-oauth, service-account, dcr\n * - --headless Disable browser auto-open, return auth URL instead\n * - --redirect-uri=<uri> OAuth redirect URI (default: ephemeral loopback)\n * - --dcr-mode=<mode> DCR mode (self-hosted or external, default: self-hosted)\n * - --dcr-verify-url=<url> External verification endpoint (required for external mode)\n * - --dcr-store-uri=<uri> DCR client storage URI (required for self-hosted mode)\n * - --port=<port> Enable HTTP transport on specified port\n * - --stdio Enable stdio transport (default if no port)\n * - --log-level=<level> Logging level (default: info)\n *\n * Environment Variables:\n * - GOOGLE_CLIENT_ID OAuth client ID (REQUIRED)\n * - GOOGLE_CLIENT_SECRET OAuth client secret (optional)\n * - AUTH_MODE Default authentication mode (optional)\n * - HEADLESS Disable browser auto-open (optional)\n * - DCR_MODE DCR mode (optional, same format as --dcr-mode)\n * - DCR_VERIFY_URL External verification URL (optional, same as --dcr-verify-url)\n * - DCR_STORE_URI DCR storage URI (optional, same as --dcr-store-uri)\n * - PORT Default HTTP port (optional)\n * - LOG_LEVEL Default logging level (optional)\n *\n * OAuth Scopes (from constants.ts):\n * openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive\n */\nexport function parseConfig(args: string[], env: Record<string, string | undefined>): ServerConfig {\n const transportConfig = parseTransportConfig(args, env);\n const oauthConfig = parseOAuthConfig(args, env);\n\n // Parse DCR configuration if DCR mode is enabled\n const dcrConfig = oauthConfig.auth === 'dcr' ? parseDcrConfig(args, env, GOOGLE_SCOPE) : undefined;\n\n // Parse application-level config (LOG_LEVEL)\n const { values } = parseArgs({\n args,\n options: {\n 'log-level': { type: 'string' },\n },\n strict: false, // Allow other arguments\n allowPositionals: true,\n });\n\n const name = pkg.name.replace(/^@[^/]+\\//, '');\n // Parse repository URL from package.json, stripping git+ prefix and .git suffix\n const rawRepoUrl = typeof pkg.repository === 'object' ? pkg.repository.url : pkg.repository;\n const repositoryUrl = rawRepoUrl?.replace(/^git\\+/, '').replace(/\\.git$/, '') ?? `https://github.com/mcp-z/${name}`;\n let rootDir = homedir();\n try {\n const configPath = findConfigPath({ config: '.mcp.json', cwd: process.cwd(), stopDir: homedir() });\n rootDir = path.dirname(configPath);\n } catch {\n rootDir = homedir();\n }\n const baseDir = path.join(rootDir, '.mcp-z');\n const cliLogLevel = typeof values['log-level'] === 'string' ? values['log-level'] : undefined;\n const envLogLevel = env.LOG_LEVEL;\n const logLevel = cliLogLevel ?? envLogLevel ?? 'info';\n\n // Combine configs\n return {\n ...oauthConfig, // Includes clientId, auth, headless, redirectUri\n transport: transportConfig.transport,\n logLevel,\n baseDir,\n name,\n version: pkg.version,\n repositoryUrl,\n ...(dcrConfig && { dcrConfig }),\n };\n}\n\n/**\n * Build production configuration from process globals.\n * Entry point for production server.\n */\nexport function createConfig(): ServerConfig {\n return parseConfig(process.argv, process.env);\n}\n"],"names":["createConfig","handleVersionHelp","parseConfig","pkg","JSON","parse","fs","readFileSync","path","join","moduleRoot","url","fileURLToPath","HELP_TEXT","trim","args","values","parseArgs","options","version","type","help","strict","handled","output","env","cliLogLevel","transportConfig","parseTransportConfig","oauthConfig","parseOAuthConfig","dcrConfig","auth","parseDcrConfig","GOOGLE_SCOPE","undefined","allowPositionals","name","replace","rawRepoUrl","repository","repositoryUrl","rootDir","homedir","configPath","findConfigPath","config","cwd","process","stopDir","dirname","baseDir","envLogLevel","LOG_LEVEL","logLevel","transport","argv"],"mappings":";;;;;;;;;;;QAuJgBA;eAAAA;;QA9FAC;eAAAA;;QA4CAC;eAAAA;;;2BArGgD;sBACI;0DAChD;qEACG;kBACC;4DACF;2DACD;oBACK;2BACG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAG7B,IAAMC,MAAMC,KAAKC,KAAK,CAACC,IAAGC,YAAY,CAACC,MAAKC,IAAI,CAACC,IAAAA,uBAAU,EAACC,KAAIC,aAAa,CAAC,uDAAmB,iBAAiB;AAElH,IAAMC,YAAY,ghEAsChBC,IAAI;AAMC,SAASb,kBAAkBc,IAAc;IAC9C,IAAM,AAAEC,SAAWC,IAAAA,eAAS,EAAC;QAC3BF,MAAAA;QACAG,SAAS;YACPC,SAAS;gBAAEC,MAAM;YAAU;YAC3BC,MAAM;gBAAED,MAAM;YAAU;QAC1B;QACAE,QAAQ;IACV,GAPQN;IASR,IAAIA,OAAOG,OAAO,EAAE,OAAO;QAAEI,SAAS;QAAMC,QAAQrB,IAAIgB,OAAO;IAAC;IAChE,IAAIH,OAAOK,IAAI,EAAE,OAAO;QAAEE,SAAS;QAAMC,QAAQX;IAAU;IAC3D,OAAO;QAAEU,SAAS;IAAM;AAC1B;AA+BO,SAASrB,YAAYa,IAAc,EAAEU,GAAuC;cA+BhEC;IA9BjB,IAAMC,kBAAkBC,IAAAA,mBAAoB,EAACb,MAAMU;IACnD,IAAMI,cAAcC,IAAAA,wBAAgB,EAACf,MAAMU;IAE3C,iDAAiD;IACjD,IAAMM,YAAYF,YAAYG,IAAI,KAAK,QAAQC,IAAAA,2BAAc,EAAClB,MAAMU,KAAKS,yBAAY,IAAIC;IAEzF,6CAA6C;IAC7C,IAAM,AAAEnB,SAAWC,IAAAA,eAAS,EAAC;QAC3BF,MAAAA;QACAG,SAAS;YACP,aAAa;gBAAEE,MAAM;YAAS;QAChC;QACAE,QAAQ;QACRc,kBAAkB;IACpB,GAPQpB;IASR,IAAMqB,OAAOlC,IAAIkC,IAAI,CAACC,OAAO,CAAC,aAAa;IAC3C,gFAAgF;IAChF,IAAMC,aAAa,SAAOpC,IAAIqC,UAAU,MAAK,WAAWrC,IAAIqC,UAAU,CAAC7B,GAAG,GAAGR,IAAIqC,UAAU;IAC3F,IAAMC,wBAAgBF,uBAAAA,iCAAAA,WAAYD,OAAO,CAAC,UAAU,IAAIA,OAAO,CAAC,UAAU,0CAAO,AAAC,4BAAgC,OAALD;IAC7G,IAAIK,UAAUC,IAAAA,WAAO;IACrB,IAAI;QACF,IAAMC,aAAaC,IAAAA,sBAAc,EAAC;YAAEC,QAAQ;YAAaC,KAAKC,QAAQD,GAAG;YAAIE,SAASN,IAAAA,WAAO;QAAG;QAChGD,UAAUlC,MAAK0C,OAAO,CAACN;IACzB,EAAE,eAAM;QACNF,UAAUC,IAAAA,WAAO;IACnB;IACA,IAAMQ,UAAU3C,MAAKC,IAAI,CAACiC,SAAS;IACnC,IAAMhB,cAAc,OAAOV,MAAM,CAAC,YAAY,KAAK,WAAWA,MAAM,CAAC,YAAY,GAAGmB;IACpF,IAAMiB,cAAc3B,IAAI4B,SAAS;IACjC,IAAMC,YAAW5B,QAAAA,wBAAAA,yBAAAA,cAAe0B,yBAAf1B,mBAAAA,QAA8B;IAE/C,kBAAkB;IAClB,OAAO,uDACFG;QACH0B,WAAW5B,gBAAgB4B,SAAS;QACpCD,UAAAA;QACAH,SAAAA;QACAd,MAAAA;QACAlB,SAAShB,IAAIgB,OAAO;QACpBsB,eAAAA;QACIV,aAAa;QAAEA,WAAAA;IAAU;AAEjC;AAMO,SAAS/B;IACd,OAAOE,YAAY8C,QAAQQ,IAAI,EAAER,QAAQvB,GAAG;AAC9C"}
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/Projects/mcp-z/mcp-sheets/src/setup/config.ts"],"sourcesContent":["import { parseDcrConfig, parseConfig as parseOAuthConfig } from '@mcp-z/oauth-google';\nimport { findConfigPath, parseConfig as parseTransportConfig } from '@mcp-z/server';\nimport * as fs from 'fs';\nimport moduleRoot from 'module-root-sync';\nimport { homedir } from 'os';\nimport * as path from 'path';\nimport * as url from 'url';\nimport { parseArgs } from 'util';\nimport { GOOGLE_SCOPE } from '../constants.ts';\nimport type { ServerConfig } from '../types.ts';\n\nconst pkg = JSON.parse(fs.readFileSync(path.join(moduleRoot(url.fileURLToPath(import.meta.url)), 'package.json'), 'utf-8'));\n\nconst HELP_TEXT = `\nUsage: mcp-sheets [options]\n\nMCP server for Google Sheets spreadsheet management with OAuth authentication.\n\nOptions:\n --version Show version number\n --help Show this help message\n --auth=<mode> Authentication mode (default: loopback-oauth)\n Modes: loopback-oauth, service-account, dcr\n --headless Disable browser auto-open, return auth URL instead\n --redirect-uri=<uri> OAuth redirect URI (default: ephemeral loopback)\n --dcr-mode=<mode> DCR mode (self-hosted or external, default: self-hosted)\n --dcr-verify-url=<url> External verification endpoint (required for external mode)\n --dcr-store-uri=<uri> DCR client storage URI (required for self-hosted mode)\n --port=<port> Enable HTTP transport on specified port\n --stdio Enable stdio transport (default if no port)\n --log-level=<level> Logging level (default: info)\n --base-url=<url> Base URL for HTTP file serving (optional)\n\nEnvironment Variables:\n GOOGLE_CLIENT_ID OAuth client ID (REQUIRED)\n GOOGLE_CLIENT_SECRET OAuth client secret (optional)\n AUTH_MODE Default authentication mode (optional)\n HEADLESS Disable browser auto-open (optional)\n DCR_MODE DCR mode (optional, same format as --dcr-mode)\n DCR_VERIFY_URL External verification URL (optional, same as --dcr-verify-url)\n DCR_STORE_URI DCR storage URI (optional, same as --dcr-store-uri)\n PORT Default HTTP port (optional)\n LOG_LEVEL Default logging level (optional)\n BASE_URL Base URL for HTTP file serving (optional)\n\nOAuth Scopes:\n openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive\n\nExamples:\n mcp-sheets # Use default settings\n mcp-sheets --auth=service-account # Use service account auth\n mcp-sheets --port=3000 # HTTP transport on port 3000\n GOOGLE_CLIENT_ID=xxx mcp-sheets # Set client ID via env var\n`.trim();\n\n/**\n * Handle --version and --help flags before config parsing.\n * These should work without requiring any configuration.\n */\nexport function handleVersionHelp(args: string[]): { handled: boolean; output?: string } {\n const { values } = parseArgs({\n args,\n options: {\n version: { type: 'boolean' },\n help: { type: 'boolean' },\n },\n strict: false,\n });\n\n if (values.version) return { handled: true, output: pkg.version };\n if (values.help) return { handled: true, output: HELP_TEXT };\n return { handled: false };\n}\n\n/**\n * Parse Sheets server configuration from CLI arguments and environment.\n *\n * CLI Arguments (all optional):\n * - --auth=<mode> Authentication mode (default: loopback-oauth)\n * Modes: loopback-oauth, service-account, dcr\n * - --headless Disable browser auto-open, return auth URL instead\n * - --redirect-uri=<uri> OAuth redirect URI (default: ephemeral loopback)\n * - --dcr-mode=<mode> DCR mode (self-hosted or external, default: self-hosted)\n * - --dcr-verify-url=<url> External verification endpoint (required for external mode)\n * - --dcr-store-uri=<uri> DCR client storage URI (required for self-hosted mode)\n * - --port=<port> Enable HTTP transport on specified port\n * - --stdio Enable stdio transport (default if no port)\n * - --log-level=<level> Logging level (default: info)\n * - --base-url=<url> Base URL for HTTP file serving (optional)\n *\n * Environment Variables:\n * - GOOGLE_CLIENT_ID OAuth client ID (REQUIRED)\n * - GOOGLE_CLIENT_SECRET OAuth client secret (optional)\n * - AUTH_MODE Default authentication mode (optional)\n * - HEADLESS Disable browser auto-open (optional)\n * - DCR_MODE DCR mode (optional, same format as --dcr-mode)\n * - DCR_VERIFY_URL External verification URL (optional, same as --dcr-verify-url)\n * - DCR_STORE_URI DCR storage URI (optional, same as --dcr-store-uri)\n * - PORT Default HTTP port (optional)\n * - LOG_LEVEL Default logging level (optional)\n * - BASE_URL Base URL for HTTP file serving (optional)\n *\n * OAuth Scopes (from constants.ts):\n * openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive\n */\nexport function parseConfig(args: string[], env: Record<string, string | undefined>): ServerConfig {\n const transportConfig = parseTransportConfig(args, env);\n const oauthConfig = parseOAuthConfig(args, env);\n\n // Parse DCR configuration if DCR mode is enabled\n const dcrConfig = oauthConfig.auth === 'dcr' ? parseDcrConfig(args, env, GOOGLE_SCOPE) : undefined;\n\n // Parse application-level config (LOG_LEVEL, BASE_URL)\n const { values } = parseArgs({\n args,\n options: {\n 'log-level': { type: 'string' },\n 'base-url': { type: 'string' },\n },\n strict: false, // Allow other arguments\n allowPositionals: true,\n });\n\n const name = pkg.name.replace(/^@[^/]+\\//, '');\n // Parse repository URL from package.json, stripping git+ prefix and .git suffix\n const rawRepoUrl = typeof pkg.repository === 'object' ? pkg.repository.url : pkg.repository;\n const repositoryUrl = rawRepoUrl?.replace(/^git\\+/, '').replace(/\\.git$/, '') ?? `https://github.com/mcp-z/${name}`;\n let rootDir = homedir();\n try {\n const configPath = findConfigPath({ config: '.mcp.json', cwd: process.cwd(), stopDir: homedir() });\n rootDir = path.dirname(configPath);\n } catch {\n rootDir = homedir();\n }\n const baseDir = path.join(rootDir, '.mcp-z');\n const cliLogLevel = typeof values['log-level'] === 'string' ? values['log-level'] : undefined;\n const envLogLevel = env.LOG_LEVEL;\n const logLevel = cliLogLevel ?? envLogLevel ?? 'info';\n const cliBaseUrl = typeof values['base-url'] === 'string' ? values['base-url'] : undefined;\n const envBaseUrl = env.BASE_URL;\n const baseUrl = cliBaseUrl ?? envBaseUrl;\n\n // Combine configs\n return {\n ...oauthConfig, // Includes clientId, auth, headless, redirectUri\n transport: transportConfig.transport,\n logLevel,\n baseDir,\n name,\n version: pkg.version,\n repositoryUrl,\n ...(baseUrl && { baseUrl }),\n ...(dcrConfig && { dcrConfig }),\n };\n}\n\n/**\n * Build production configuration from process globals.\n * Entry point for production server.\n */\nexport function createConfig(): ServerConfig {\n return parseConfig(process.argv, process.env);\n}\n"],"names":["createConfig","handleVersionHelp","parseConfig","pkg","JSON","parse","fs","readFileSync","path","join","moduleRoot","url","fileURLToPath","HELP_TEXT","trim","args","values","parseArgs","options","version","type","help","strict","handled","output","env","cliLogLevel","transportConfig","parseTransportConfig","oauthConfig","parseOAuthConfig","dcrConfig","auth","parseDcrConfig","GOOGLE_SCOPE","undefined","allowPositionals","name","replace","rawRepoUrl","repository","repositoryUrl","rootDir","homedir","configPath","findConfigPath","config","cwd","process","stopDir","dirname","baseDir","envLogLevel","LOG_LEVEL","logLevel","cliBaseUrl","envBaseUrl","BASE_URL","baseUrl","transport","argv"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { createConfig, parseConfig } from './config.js';
|
|
2
2
|
export { createHTTPServer } from './http.js';
|
|
3
|
-
export { createOAuthAdapters } from './oauth-google.js';
|
|
3
|
+
export { type AuthMiddleware, createOAuthAdapters, type OAuthAdapters, type OAuthRuntimeDeps } from './oauth-google.js';
|
|
4
4
|
export * from './runtime.js';
|
|
5
5
|
export { createStdioServer } from './stdio.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { createConfig, parseConfig } from './config.js';
|
|
2
2
|
export { createHTTPServer } from './http.js';
|
|
3
|
-
export { createOAuthAdapters } from './oauth-google.js';
|
|
3
|
+
export { type AuthMiddleware, createOAuthAdapters, type OAuthAdapters, type OAuthRuntimeDeps } from './oauth-google.js';
|
|
4
4
|
export * from './runtime.js';
|
|
5
5
|
export { createStdioServer } from './stdio.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/Projects/mcp-z/mcp-sheets/src/setup/index.ts"],"sourcesContent":["export { createConfig, parseConfig } from './config.ts';\nexport { createHTTPServer } from './http.ts';\nexport { createOAuthAdapters } from './oauth-google.ts';\nexport * from './runtime.ts';\nexport { createStdioServer } from './stdio.ts';\n"],"names":["createConfig","createHTTPServer","createOAuthAdapters","createStdioServer","parseConfig"],"mappings":";;;;;;;;;;;QAASA;eAAAA,sBAAY;;QACZC;eAAAA,wBAAgB;;
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/Projects/mcp-z/mcp-sheets/src/setup/index.ts"],"sourcesContent":["export { createConfig, parseConfig } from './config.ts';\nexport { createHTTPServer } from './http.ts';\nexport { type AuthMiddleware, createOAuthAdapters, type OAuthAdapters, type OAuthRuntimeDeps } from './oauth-google.ts';\nexport * from './runtime.ts';\nexport { createStdioServer } from './stdio.ts';\n"],"names":["createConfig","createHTTPServer","createOAuthAdapters","createStdioServer","parseConfig"],"mappings":";;;;;;;;;;;QAASA;eAAAA,sBAAY;;QACZC;eAAAA,wBAAgB;;QACKC;eAAAA,kCAAmB;;QAExCC;eAAAA,0BAAiB;;QAJHC;eAAAA,qBAAW;;;wBAAQ;sBACT;6BACmE;qBACtF;uBACoB"}
|
|
@@ -21,6 +21,7 @@ export declare function handleVersionHelp(args: string[]): {
|
|
|
21
21
|
* - --port=<port> Enable HTTP transport on specified port
|
|
22
22
|
* - --stdio Enable stdio transport (default if no port)
|
|
23
23
|
* - --log-level=<level> Logging level (default: info)
|
|
24
|
+
* - --base-url=<url> Base URL for HTTP file serving (optional)
|
|
24
25
|
*
|
|
25
26
|
* Environment Variables:
|
|
26
27
|
* - GOOGLE_CLIENT_ID OAuth client ID (REQUIRED)
|
|
@@ -32,6 +33,7 @@ export declare function handleVersionHelp(args: string[]): {
|
|
|
32
33
|
* - DCR_STORE_URI DCR storage URI (optional, same as --dcr-store-uri)
|
|
33
34
|
* - PORT Default HTTP port (optional)
|
|
34
35
|
* - LOG_LEVEL Default logging level (optional)
|
|
36
|
+
* - BASE_URL Base URL for HTTP file serving (optional)
|
|
35
37
|
*
|
|
36
38
|
* OAuth Scopes (from constants.ts):
|
|
37
39
|
* openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive
|
package/dist/esm/setup/config.js
CHANGED
|
@@ -26,6 +26,7 @@ Options:
|
|
|
26
26
|
--port=<port> Enable HTTP transport on specified port
|
|
27
27
|
--stdio Enable stdio transport (default if no port)
|
|
28
28
|
--log-level=<level> Logging level (default: info)
|
|
29
|
+
--base-url=<url> Base URL for HTTP file serving (optional)
|
|
29
30
|
|
|
30
31
|
Environment Variables:
|
|
31
32
|
GOOGLE_CLIENT_ID OAuth client ID (REQUIRED)
|
|
@@ -37,6 +38,7 @@ Environment Variables:
|
|
|
37
38
|
DCR_STORE_URI DCR storage URI (optional, same as --dcr-store-uri)
|
|
38
39
|
PORT Default HTTP port (optional)
|
|
39
40
|
LOG_LEVEL Default logging level (optional)
|
|
41
|
+
BASE_URL Base URL for HTTP file serving (optional)
|
|
40
42
|
|
|
41
43
|
OAuth Scopes:
|
|
42
44
|
openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive
|
|
@@ -89,6 +91,7 @@ Examples:
|
|
|
89
91
|
* - --port=<port> Enable HTTP transport on specified port
|
|
90
92
|
* - --stdio Enable stdio transport (default if no port)
|
|
91
93
|
* - --log-level=<level> Logging level (default: info)
|
|
94
|
+
* - --base-url=<url> Base URL for HTTP file serving (optional)
|
|
92
95
|
*
|
|
93
96
|
* Environment Variables:
|
|
94
97
|
* - GOOGLE_CLIENT_ID OAuth client ID (REQUIRED)
|
|
@@ -100,6 +103,7 @@ Examples:
|
|
|
100
103
|
* - DCR_STORE_URI DCR storage URI (optional, same as --dcr-store-uri)
|
|
101
104
|
* - PORT Default HTTP port (optional)
|
|
102
105
|
* - LOG_LEVEL Default logging level (optional)
|
|
106
|
+
* - BASE_URL Base URL for HTTP file serving (optional)
|
|
103
107
|
*
|
|
104
108
|
* OAuth Scopes (from constants.ts):
|
|
105
109
|
* openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive
|
|
@@ -109,12 +113,15 @@ Examples:
|
|
|
109
113
|
const oauthConfig = parseOAuthConfig(args, env);
|
|
110
114
|
// Parse DCR configuration if DCR mode is enabled
|
|
111
115
|
const dcrConfig = oauthConfig.auth === 'dcr' ? parseDcrConfig(args, env, GOOGLE_SCOPE) : undefined;
|
|
112
|
-
// Parse application-level config (LOG_LEVEL)
|
|
116
|
+
// Parse application-level config (LOG_LEVEL, BASE_URL)
|
|
113
117
|
const { values } = parseArgs({
|
|
114
118
|
args,
|
|
115
119
|
options: {
|
|
116
120
|
'log-level': {
|
|
117
121
|
type: 'string'
|
|
122
|
+
},
|
|
123
|
+
'base-url': {
|
|
124
|
+
type: 'string'
|
|
118
125
|
}
|
|
119
126
|
},
|
|
120
127
|
strict: false,
|
|
@@ -139,6 +146,9 @@ Examples:
|
|
|
139
146
|
const cliLogLevel = typeof values['log-level'] === 'string' ? values['log-level'] : undefined;
|
|
140
147
|
const envLogLevel = env.LOG_LEVEL;
|
|
141
148
|
const logLevel = (_ref1 = cliLogLevel !== null && cliLogLevel !== void 0 ? cliLogLevel : envLogLevel) !== null && _ref1 !== void 0 ? _ref1 : 'info';
|
|
149
|
+
const cliBaseUrl = typeof values['base-url'] === 'string' ? values['base-url'] : undefined;
|
|
150
|
+
const envBaseUrl = env.BASE_URL;
|
|
151
|
+
const baseUrl = cliBaseUrl !== null && cliBaseUrl !== void 0 ? cliBaseUrl : envBaseUrl;
|
|
142
152
|
// Combine configs
|
|
143
153
|
return {
|
|
144
154
|
...oauthConfig,
|
|
@@ -148,6 +158,9 @@ Examples:
|
|
|
148
158
|
name,
|
|
149
159
|
version: pkg.version,
|
|
150
160
|
repositoryUrl,
|
|
161
|
+
...baseUrl && {
|
|
162
|
+
baseUrl
|
|
163
|
+
},
|
|
151
164
|
...dcrConfig && {
|
|
152
165
|
dcrConfig
|
|
153
166
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/Projects/mcp-z/mcp-sheets/src/setup/config.ts"],"sourcesContent":["import { parseDcrConfig, parseConfig as parseOAuthConfig } from '@mcp-z/oauth-google';\nimport { findConfigPath, parseConfig as parseTransportConfig } from '@mcp-z/server';\nimport * as fs from 'fs';\nimport moduleRoot from 'module-root-sync';\nimport { homedir } from 'os';\nimport * as path from 'path';\nimport * as url from 'url';\nimport { parseArgs } from 'util';\nimport { GOOGLE_SCOPE } from '../constants.ts';\nimport type { ServerConfig } from '../types.ts';\n\nconst pkg = JSON.parse(fs.readFileSync(path.join(moduleRoot(url.fileURLToPath(import.meta.url)), 'package.json'), 'utf-8'));\n\nconst HELP_TEXT = `\nUsage: mcp-sheets [options]\n\nMCP server for Google Sheets spreadsheet management with OAuth authentication.\n\nOptions:\n --version Show version number\n --help Show this help message\n --auth=<mode> Authentication mode (default: loopback-oauth)\n Modes: loopback-oauth, service-account, dcr\n --headless Disable browser auto-open, return auth URL instead\n --redirect-uri=<uri> OAuth redirect URI (default: ephemeral loopback)\n --dcr-mode=<mode> DCR mode (self-hosted or external, default: self-hosted)\n --dcr-verify-url=<url> External verification endpoint (required for external mode)\n --dcr-store-uri=<uri> DCR client storage URI (required for self-hosted mode)\n --port=<port> Enable HTTP transport on specified port\n --stdio Enable stdio transport (default if no port)\n --log-level=<level> Logging level (default: info)\n\nEnvironment Variables:\n GOOGLE_CLIENT_ID OAuth client ID (REQUIRED)\n GOOGLE_CLIENT_SECRET OAuth client secret (optional)\n AUTH_MODE Default authentication mode (optional)\n HEADLESS Disable browser auto-open (optional)\n DCR_MODE DCR mode (optional, same format as --dcr-mode)\n DCR_VERIFY_URL External verification URL (optional, same as --dcr-verify-url)\n DCR_STORE_URI DCR storage URI (optional, same as --dcr-store-uri)\n PORT Default HTTP port (optional)\n LOG_LEVEL Default logging level (optional)\n\nOAuth Scopes:\n openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive\n\nExamples:\n mcp-sheets # Use default settings\n mcp-sheets --auth=service-account # Use service account auth\n mcp-sheets --port=3000 # HTTP transport on port 3000\n GOOGLE_CLIENT_ID=xxx mcp-sheets # Set client ID via env var\n`.trim();\n\n/**\n * Handle --version and --help flags before config parsing.\n * These should work without requiring any configuration.\n */\nexport function handleVersionHelp(args: string[]): { handled: boolean; output?: string } {\n const { values } = parseArgs({\n args,\n options: {\n version: { type: 'boolean' },\n help: { type: 'boolean' },\n },\n strict: false,\n });\n\n if (values.version) return { handled: true, output: pkg.version };\n if (values.help) return { handled: true, output: HELP_TEXT };\n return { handled: false };\n}\n\n/**\n * Parse Sheets server configuration from CLI arguments and environment.\n *\n * CLI Arguments (all optional):\n * - --auth=<mode> Authentication mode (default: loopback-oauth)\n * Modes: loopback-oauth, service-account, dcr\n * - --headless Disable browser auto-open, return auth URL instead\n * - --redirect-uri=<uri> OAuth redirect URI (default: ephemeral loopback)\n * - --dcr-mode=<mode> DCR mode (self-hosted or external, default: self-hosted)\n * - --dcr-verify-url=<url> External verification endpoint (required for external mode)\n * - --dcr-store-uri=<uri> DCR client storage URI (required for self-hosted mode)\n * - --port=<port> Enable HTTP transport on specified port\n * - --stdio Enable stdio transport (default if no port)\n * - --log-level=<level> Logging level (default: info)\n *\n * Environment Variables:\n * - GOOGLE_CLIENT_ID OAuth client ID (REQUIRED)\n * - GOOGLE_CLIENT_SECRET OAuth client secret (optional)\n * - AUTH_MODE Default authentication mode (optional)\n * - HEADLESS Disable browser auto-open (optional)\n * - DCR_MODE DCR mode (optional, same format as --dcr-mode)\n * - DCR_VERIFY_URL External verification URL (optional, same as --dcr-verify-url)\n * - DCR_STORE_URI DCR storage URI (optional, same as --dcr-store-uri)\n * - PORT Default HTTP port (optional)\n * - LOG_LEVEL Default logging level (optional)\n *\n * OAuth Scopes (from constants.ts):\n * openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive\n */\nexport function parseConfig(args: string[], env: Record<string, string | undefined>): ServerConfig {\n const transportConfig = parseTransportConfig(args, env);\n const oauthConfig = parseOAuthConfig(args, env);\n\n // Parse DCR configuration if DCR mode is enabled\n const dcrConfig = oauthConfig.auth === 'dcr' ? parseDcrConfig(args, env, GOOGLE_SCOPE) : undefined;\n\n // Parse application-level config (LOG_LEVEL)\n const { values } = parseArgs({\n args,\n options: {\n 'log-level': { type: 'string' },\n },\n strict: false, // Allow other arguments\n allowPositionals: true,\n });\n\n const name = pkg.name.replace(/^@[^/]+\\//, '');\n // Parse repository URL from package.json, stripping git+ prefix and .git suffix\n const rawRepoUrl = typeof pkg.repository === 'object' ? pkg.repository.url : pkg.repository;\n const repositoryUrl = rawRepoUrl?.replace(/^git\\+/, '').replace(/\\.git$/, '') ?? `https://github.com/mcp-z/${name}`;\n let rootDir = homedir();\n try {\n const configPath = findConfigPath({ config: '.mcp.json', cwd: process.cwd(), stopDir: homedir() });\n rootDir = path.dirname(configPath);\n } catch {\n rootDir = homedir();\n }\n const baseDir = path.join(rootDir, '.mcp-z');\n const cliLogLevel = typeof values['log-level'] === 'string' ? values['log-level'] : undefined;\n const envLogLevel = env.LOG_LEVEL;\n const logLevel = cliLogLevel ?? envLogLevel ?? 'info';\n\n // Combine configs\n return {\n ...oauthConfig, // Includes clientId, auth, headless, redirectUri\n transport: transportConfig.transport,\n logLevel,\n baseDir,\n name,\n version: pkg.version,\n repositoryUrl,\n ...(dcrConfig && { dcrConfig }),\n };\n}\n\n/**\n * Build production configuration from process globals.\n * Entry point for production server.\n */\nexport function createConfig(): ServerConfig {\n return parseConfig(process.argv, process.env);\n}\n"],"names":["parseDcrConfig","parseConfig","parseOAuthConfig","findConfigPath","parseTransportConfig","fs","moduleRoot","homedir","path","url","parseArgs","GOOGLE_SCOPE","pkg","JSON","parse","readFileSync","join","fileURLToPath","HELP_TEXT","trim","handleVersionHelp","args","values","options","version","type","help","strict","handled","output","env","cliLogLevel","transportConfig","oauthConfig","dcrConfig","auth","undefined","allowPositionals","name","replace","rawRepoUrl","repository","repositoryUrl","rootDir","configPath","config","cwd","process","stopDir","dirname","baseDir","envLogLevel","LOG_LEVEL","logLevel","transport","createConfig","argv"],"mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/Projects/mcp-z/mcp-sheets/src/setup/config.ts"],"sourcesContent":["import { parseDcrConfig, parseConfig as parseOAuthConfig } from '@mcp-z/oauth-google';\nimport { findConfigPath, parseConfig as parseTransportConfig } from '@mcp-z/server';\nimport * as fs from 'fs';\nimport moduleRoot from 'module-root-sync';\nimport { homedir } from 'os';\nimport * as path from 'path';\nimport * as url from 'url';\nimport { parseArgs } from 'util';\nimport { GOOGLE_SCOPE } from '../constants.ts';\nimport type { ServerConfig } from '../types.ts';\n\nconst pkg = JSON.parse(fs.readFileSync(path.join(moduleRoot(url.fileURLToPath(import.meta.url)), 'package.json'), 'utf-8'));\n\nconst HELP_TEXT = `\nUsage: mcp-sheets [options]\n\nMCP server for Google Sheets spreadsheet management with OAuth authentication.\n\nOptions:\n --version Show version number\n --help Show this help message\n --auth=<mode> Authentication mode (default: loopback-oauth)\n Modes: loopback-oauth, service-account, dcr\n --headless Disable browser auto-open, return auth URL instead\n --redirect-uri=<uri> OAuth redirect URI (default: ephemeral loopback)\n --dcr-mode=<mode> DCR mode (self-hosted or external, default: self-hosted)\n --dcr-verify-url=<url> External verification endpoint (required for external mode)\n --dcr-store-uri=<uri> DCR client storage URI (required for self-hosted mode)\n --port=<port> Enable HTTP transport on specified port\n --stdio Enable stdio transport (default if no port)\n --log-level=<level> Logging level (default: info)\n --base-url=<url> Base URL for HTTP file serving (optional)\n\nEnvironment Variables:\n GOOGLE_CLIENT_ID OAuth client ID (REQUIRED)\n GOOGLE_CLIENT_SECRET OAuth client secret (optional)\n AUTH_MODE Default authentication mode (optional)\n HEADLESS Disable browser auto-open (optional)\n DCR_MODE DCR mode (optional, same format as --dcr-mode)\n DCR_VERIFY_URL External verification URL (optional, same as --dcr-verify-url)\n DCR_STORE_URI DCR storage URI (optional, same as --dcr-store-uri)\n PORT Default HTTP port (optional)\n LOG_LEVEL Default logging level (optional)\n BASE_URL Base URL for HTTP file serving (optional)\n\nOAuth Scopes:\n openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive\n\nExamples:\n mcp-sheets # Use default settings\n mcp-sheets --auth=service-account # Use service account auth\n mcp-sheets --port=3000 # HTTP transport on port 3000\n GOOGLE_CLIENT_ID=xxx mcp-sheets # Set client ID via env var\n`.trim();\n\n/**\n * Handle --version and --help flags before config parsing.\n * These should work without requiring any configuration.\n */\nexport function handleVersionHelp(args: string[]): { handled: boolean; output?: string } {\n const { values } = parseArgs({\n args,\n options: {\n version: { type: 'boolean' },\n help: { type: 'boolean' },\n },\n strict: false,\n });\n\n if (values.version) return { handled: true, output: pkg.version };\n if (values.help) return { handled: true, output: HELP_TEXT };\n return { handled: false };\n}\n\n/**\n * Parse Sheets server configuration from CLI arguments and environment.\n *\n * CLI Arguments (all optional):\n * - --auth=<mode> Authentication mode (default: loopback-oauth)\n * Modes: loopback-oauth, service-account, dcr\n * - --headless Disable browser auto-open, return auth URL instead\n * - --redirect-uri=<uri> OAuth redirect URI (default: ephemeral loopback)\n * - --dcr-mode=<mode> DCR mode (self-hosted or external, default: self-hosted)\n * - --dcr-verify-url=<url> External verification endpoint (required for external mode)\n * - --dcr-store-uri=<uri> DCR client storage URI (required for self-hosted mode)\n * - --port=<port> Enable HTTP transport on specified port\n * - --stdio Enable stdio transport (default if no port)\n * - --log-level=<level> Logging level (default: info)\n * - --base-url=<url> Base URL for HTTP file serving (optional)\n *\n * Environment Variables:\n * - GOOGLE_CLIENT_ID OAuth client ID (REQUIRED)\n * - GOOGLE_CLIENT_SECRET OAuth client secret (optional)\n * - AUTH_MODE Default authentication mode (optional)\n * - HEADLESS Disable browser auto-open (optional)\n * - DCR_MODE DCR mode (optional, same format as --dcr-mode)\n * - DCR_VERIFY_URL External verification URL (optional, same as --dcr-verify-url)\n * - DCR_STORE_URI DCR storage URI (optional, same as --dcr-store-uri)\n * - PORT Default HTTP port (optional)\n * - LOG_LEVEL Default logging level (optional)\n * - BASE_URL Base URL for HTTP file serving (optional)\n *\n * OAuth Scopes (from constants.ts):\n * openid https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email https://www.googleapis.com/auth/spreadsheets https://www.googleapis.com/auth/drive\n */\nexport function parseConfig(args: string[], env: Record<string, string | undefined>): ServerConfig {\n const transportConfig = parseTransportConfig(args, env);\n const oauthConfig = parseOAuthConfig(args, env);\n\n // Parse DCR configuration if DCR mode is enabled\n const dcrConfig = oauthConfig.auth === 'dcr' ? parseDcrConfig(args, env, GOOGLE_SCOPE) : undefined;\n\n // Parse application-level config (LOG_LEVEL, BASE_URL)\n const { values } = parseArgs({\n args,\n options: {\n 'log-level': { type: 'string' },\n 'base-url': { type: 'string' },\n },\n strict: false, // Allow other arguments\n allowPositionals: true,\n });\n\n const name = pkg.name.replace(/^@[^/]+\\//, '');\n // Parse repository URL from package.json, stripping git+ prefix and .git suffix\n const rawRepoUrl = typeof pkg.repository === 'object' ? pkg.repository.url : pkg.repository;\n const repositoryUrl = rawRepoUrl?.replace(/^git\\+/, '').replace(/\\.git$/, '') ?? `https://github.com/mcp-z/${name}`;\n let rootDir = homedir();\n try {\n const configPath = findConfigPath({ config: '.mcp.json', cwd: process.cwd(), stopDir: homedir() });\n rootDir = path.dirname(configPath);\n } catch {\n rootDir = homedir();\n }\n const baseDir = path.join(rootDir, '.mcp-z');\n const cliLogLevel = typeof values['log-level'] === 'string' ? values['log-level'] : undefined;\n const envLogLevel = env.LOG_LEVEL;\n const logLevel = cliLogLevel ?? envLogLevel ?? 'info';\n const cliBaseUrl = typeof values['base-url'] === 'string' ? values['base-url'] : undefined;\n const envBaseUrl = env.BASE_URL;\n const baseUrl = cliBaseUrl ?? envBaseUrl;\n\n // Combine configs\n return {\n ...oauthConfig, // Includes clientId, auth, headless, redirectUri\n transport: transportConfig.transport,\n logLevel,\n baseDir,\n name,\n version: pkg.version,\n repositoryUrl,\n ...(baseUrl && { baseUrl }),\n ...(dcrConfig && { dcrConfig }),\n };\n}\n\n/**\n * Build production configuration from process globals.\n * Entry point for production server.\n */\nexport function createConfig(): ServerConfig {\n return parseConfig(process.argv, process.env);\n}\n"],"names":["parseDcrConfig","parseConfig","parseOAuthConfig","findConfigPath","parseTransportConfig","fs","moduleRoot","homedir","path","url","parseArgs","GOOGLE_SCOPE","pkg","JSON","parse","readFileSync","join","fileURLToPath","HELP_TEXT","trim","handleVersionHelp","args","values","options","version","type","help","strict","handled","output","env","cliLogLevel","transportConfig","oauthConfig","dcrConfig","auth","undefined","allowPositionals","name","replace","rawRepoUrl","repository","repositoryUrl","rootDir","configPath","config","cwd","process","stopDir","dirname","baseDir","envLogLevel","LOG_LEVEL","logLevel","cliBaseUrl","envBaseUrl","BASE_URL","baseUrl","transport","createConfig","argv"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export { createConfig, parseConfig } from './config.js';
|
|
2
2
|
export { createHTTPServer } from './http.js';
|
|
3
|
-
export { createOAuthAdapters } from './oauth-google.js';
|
|
3
|
+
export { type AuthMiddleware, createOAuthAdapters, type OAuthAdapters, type OAuthRuntimeDeps } from './oauth-google.js';
|
|
4
4
|
export * from './runtime.js';
|
|
5
5
|
export { createStdioServer } from './stdio.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/kevin/Dev/Projects/mcp-z/mcp-sheets/src/setup/index.ts"],"sourcesContent":["export { createConfig, parseConfig } from './config.ts';\nexport { createHTTPServer } from './http.ts';\nexport { createOAuthAdapters } from './oauth-google.ts';\nexport * from './runtime.ts';\nexport { createStdioServer } from './stdio.ts';\n"],"names":["createConfig","parseConfig","createHTTPServer","createOAuthAdapters","createStdioServer"],"mappings":"AAAA,SAASA,YAAY,EAAEC,WAAW,QAAQ,cAAc;AACxD,SAASC,gBAAgB,QAAQ,YAAY;AAC7C,
|
|
1
|
+
{"version":3,"sources":["/Users/kevin/Dev/Projects/mcp-z/mcp-sheets/src/setup/index.ts"],"sourcesContent":["export { createConfig, parseConfig } from './config.ts';\nexport { createHTTPServer } from './http.ts';\nexport { type AuthMiddleware, createOAuthAdapters, type OAuthAdapters, type OAuthRuntimeDeps } from './oauth-google.ts';\nexport * from './runtime.ts';\nexport { createStdioServer } from './stdio.ts';\n"],"names":["createConfig","parseConfig","createHTTPServer","createOAuthAdapters","createStdioServer"],"mappings":"AAAA,SAASA,YAAY,EAAEC,WAAW,QAAQ,cAAc;AACxD,SAASC,gBAAgB,QAAQ,YAAY;AAC7C,SAA8BC,mBAAmB,QAAmD,oBAAoB;AACxH,cAAc,eAAe;AAC7B,SAASC,iBAAiB,QAAQ,aAAa"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcp-z/mcp-sheets",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "MCP server for Google Sheets integration with OAuth authentication, spreadsheet management, batch operations, and advanced formatting",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"sheets",
|
|
@@ -70,32 +70,32 @@
|
|
|
70
70
|
"version": "tsds version"
|
|
71
71
|
},
|
|
72
72
|
"dependencies": {
|
|
73
|
-
"@mcp-z/oauth": "^1.0.
|
|
74
|
-
"@mcp-z/oauth-google": "^1.0.
|
|
75
|
-
"@mcp-z/server": "^1.0.
|
|
76
|
-
"@modelcontextprotocol/sdk": "^1.
|
|
77
|
-
"cors": "^2.
|
|
73
|
+
"@mcp-z/oauth": "^1.0.1",
|
|
74
|
+
"@mcp-z/oauth-google": "^1.0.3",
|
|
75
|
+
"@mcp-z/server": "^1.0.2",
|
|
76
|
+
"@modelcontextprotocol/sdk": "^1.25.1",
|
|
77
|
+
"cors": "^2.8.5",
|
|
78
78
|
"csv-parse": "^6.1.0",
|
|
79
|
-
"express": "^5.
|
|
80
|
-
"google-auth-library": "^10.
|
|
79
|
+
"express": "^5.2.1",
|
|
80
|
+
"google-auth-library": "^10.5.0",
|
|
81
81
|
"googleapis": "^169.0.0",
|
|
82
|
-
"keyv-registry": "^0.
|
|
83
|
-
"module-root-sync": "^2.0.
|
|
84
|
-
"pino": "^10.
|
|
85
|
-
"zod": "^4.
|
|
82
|
+
"keyv-registry": "^0.4.0",
|
|
83
|
+
"module-root-sync": "^2.0.2",
|
|
84
|
+
"pino": "^10.1.0",
|
|
85
|
+
"zod": "^4.3.4"
|
|
86
86
|
},
|
|
87
87
|
"devDependencies": {
|
|
88
|
-
"@mcp-z/client": "^1.0.
|
|
88
|
+
"@mcp-z/client": "^1.0.3",
|
|
89
89
|
"@types/cors": "^2.8.19",
|
|
90
90
|
"@types/express": "^5.0.6",
|
|
91
91
|
"@types/mocha": "^10.0.10",
|
|
92
|
-
"@types/node": "^25.0.
|
|
92
|
+
"@types/node": "^25.0.3",
|
|
93
93
|
"dotenv": "^17.2.3",
|
|
94
94
|
"get-port": "^7.1.0",
|
|
95
95
|
"keyv": "^5.5.5",
|
|
96
|
-
"node-version-use": "^2.
|
|
97
|
-
"ts-dev-stack": "^1.
|
|
98
|
-
"tsds-config": "^1.0.
|
|
96
|
+
"node-version-use": "^2.4.7",
|
|
97
|
+
"ts-dev-stack": "^1.22.1",
|
|
98
|
+
"tsds-config": "^1.0.4",
|
|
99
99
|
"typescript": "^5.9.3"
|
|
100
100
|
},
|
|
101
101
|
"engines": {
|