smithery docs are useless

This commit is contained in:
Taylor Wilsdon
2025-08-13 16:57:08 -04:00
parent 1b06bef0a7
commit 5d9860533c

View File

@@ -1,11 +1,6 @@
version: 1 startCommand:
type: stdio
start: configSchema:
command: ["uv", "run", "main.py", "--transport", "streamable-http"]
port: 8000
# Configuration schema for deployment environments
configSchema:
type: object type: object
required: required:
- googleOauthClientId - googleOauthClientId
@@ -13,53 +8,101 @@ configSchema:
properties: properties:
googleOauthClientId: googleOauthClientId:
type: string type: string
description: "(required) - Your Google OAuth 2.0 Client ID from Google Cloud Console" description: "Your Google OAuth 2.0 Client ID from Google Cloud Console"
googleOauthClientSecret: googleOauthClientSecret:
type: string type: string
description: "(required) - Your Google OAuth 2.0 Client Secret from Google Cloud Console" description: "Your Google OAuth 2.0 Client Secret from Google Cloud Console"
userGoogleEmail: userGoogleEmail:
type: string type: string
description: "(optional) - Default email for single-user auth - avoids needing to specify email in system prompts" default: ""
description: "Default email for single-user auth - avoids needing to specify email in system prompts"
googleOauthRedirectUri: googleOauthRedirectUri:
type: string type: string
description: "(optional) - OAuth redirect URI - Default: http://localhost:8000/oauth2callback" default: ""
description: "OAuth redirect URI - uses default http://localhost:8000/oauth2callback if not set"
googleClientSecretPath: googleClientSecretPath:
type: string type: string
description: "(optional) - Path to client_secret.json file (alternative to environment variables)" default: ""
description: "Path to client_secret.json file (alternative to environment variables)"
workspaceMcpBaseUri: workspaceMcpBaseUri:
type: string type: string
description: "(optional) - Base URI for the server - Default: http://localhost (do not include port)" default: "http://localhost"
port: description: "Base URI for the server (do not include port)"
type: string workspaceMcpPort:
description: "(optional) - Port the server listens on - Default: 8000 (used by both PORT and WORKSPACE_MCP_PORT)" type: number
default: 8000
description: "Port the server listens on"
mcpSingleUserMode: mcpSingleUserMode:
type: string type: boolean
description: "(optional) - Set to '1' to enable single-user mode - Default: false" default: false
description: "Enable single-user mode - bypasses session mapping"
mcpEnableOauth21: mcpEnableOauth21:
type: string type: boolean
description: "(optional) - Set to 'true' to enable OAuth 2.1 multi-user support - Default: false" default: false
description: "Enable OAuth 2.1 multi-user support (requires streamable-http)"
oauthlibInsecureTransport: oauthlibInsecureTransport:
type: string type: boolean
description: "(optional) - Set to '1' for development environments - Default: none" default: false
description: "Enable insecure transport for development environments"
googlePseApiKey: googlePseApiKey:
type: string type: string
description: "(optional) - API key for Google Custom Search - required for search tools" default: ""
description: "API key for Google Custom Search - required for search tools"
googlePseEngineId: googlePseEngineId:
type: string type: string
description: "(optional) - Programmable Search Engine ID for Custom Search - required for search tools" default: ""
description: "Programmable Search Engine ID for Custom Search - required for search tools"
tools:
type: string
default: ""
description: "Comma-separated list of tools to enable (gmail,drive,calendar,docs,sheets,chat,forms,slides,tasks,search). Leave empty for all tools."
commandFunction:
|-
(config) => {
const args = ['run', 'main.py'];
# Environment variable mapping for runtime // Add single-user flag if enabled
envMapping: if (config.mcpSingleUserMode) {
GOOGLE_OAUTH_CLIENT_ID: googleOauthClientId args.push('--single-user');
GOOGLE_OAUTH_CLIENT_SECRET: googleOauthClientSecret }
USER_GOOGLE_EMAIL: userGoogleEmail
GOOGLE_OAUTH_REDIRECT_URI: googleOauthRedirectUri // Add tools selection if specified
GOOGLE_CLIENT_SECRET_PATH: googleClientSecretPath if (config.tools && config.tools.trim() !== '') {
WORKSPACE_MCP_BASE_URI: workspaceMcpBaseUri args.push('--tools');
PORT: port args.push(...config.tools.split(',').map(t => t.trim()).filter(t => t));
WORKSPACE_MCP_PORT: port }
MCP_SINGLE_USER_MODE: mcpSingleUserMode
MCP_ENABLE_OAUTH21: mcpEnableOauth21 return {
OAUTHLIB_INSECURE_TRANSPORT: oauthlibInsecureTransport command: 'uv',
GOOGLE_PSE_API_KEY: googlePseApiKey args: args,
GOOGLE_PSE_ENGINE_ID: googlePseEngineId env: {
GOOGLE_OAUTH_CLIENT_ID: config.googleOauthClientId,
GOOGLE_OAUTH_CLIENT_SECRET: config.googleOauthClientSecret,
...(config.userGoogleEmail && { USER_GOOGLE_EMAIL: config.userGoogleEmail }),
...(config.googleOauthRedirectUri && { GOOGLE_OAUTH_REDIRECT_URI: config.googleOauthRedirectUri }),
...(config.googleClientSecretPath && { GOOGLE_CLIENT_SECRET_PATH: config.googleClientSecretPath }),
WORKSPACE_MCP_BASE_URI: config.workspaceMcpBaseUri,
WORKSPACE_MCP_PORT: String(config.workspaceMcpPort),
PORT: String(config.workspaceMcpPort),
...(config.mcpSingleUserMode && { MCP_SINGLE_USER_MODE: '1' }),
...(config.mcpEnableOauth21 && { MCP_ENABLE_OAUTH21: 'true' }),
...(config.oauthlibInsecureTransport && { OAUTHLIB_INSECURE_TRANSPORT: '1' }),
...(config.googlePseApiKey && { GOOGLE_PSE_API_KEY: config.googlePseApiKey }),
...(config.googlePseEngineId && { GOOGLE_PSE_ENGINE_ID: config.googlePseEngineId })
}
};
}
exampleConfig:
googleOauthClientId: "your-client-id.apps.googleusercontent.com"
googleOauthClientSecret: "your-client-secret"
userGoogleEmail: ""
googleOauthRedirectUri: ""
googleClientSecretPath: ""
workspaceMcpBaseUri: "http://localhost"
workspaceMcpPort: 8000
mcpSingleUserMode: false
mcpEnableOauth21: false
oauthlibInsecureTransport: false
googlePseApiKey: ""
googlePseEngineId: ""
tools: ""