feat: initial commit from workspace-mcp
Some checks failed
Check Maintainer Edits Enabled / check-maintainer-edits (pull_request) Has been cancelled
Check Maintainer Edits Enabled / check-maintainer-edits-internal (pull_request) Has been cancelled
Docker Build and Push to GHCR / build-and-push (pull_request) Has been cancelled
Ruff / ruff (pull_request) Has been cancelled
Some checks failed
Check Maintainer Edits Enabled / check-maintainer-edits (pull_request) Has been cancelled
Check Maintainer Edits Enabled / check-maintainer-edits-internal (pull_request) Has been cancelled
Docker Build and Push to GHCR / build-and-push (pull_request) Has been cancelled
Ruff / ruff (pull_request) Has been cancelled
This commit is contained in:
101
smithery.yaml
Normal file
101
smithery.yaml
Normal file
@@ -0,0 +1,101 @@
|
||||
runtime: "container"
|
||||
startCommand:
|
||||
type: "http"
|
||||
configSchema:
|
||||
type: object
|
||||
required:
|
||||
- googleOauthClientId
|
||||
- googleOauthClientSecret
|
||||
properties:
|
||||
googleOauthClientId:
|
||||
type: string
|
||||
description: "Your Google OAuth 2.0 Client ID from Google Cloud Console"
|
||||
googleOauthClientSecret:
|
||||
type: string
|
||||
description: "Your Google OAuth 2.0 Client Secret from Google Cloud Console"
|
||||
userGoogleEmail:
|
||||
type: string
|
||||
default: ""
|
||||
description: "Default email for single-user auth - avoids needing to specify email in system prompts"
|
||||
googleOauthRedirectUri:
|
||||
type: string
|
||||
default: ""
|
||||
description: "OAuth redirect URI - uses default http://localhost:8000/oauth2callback if not set"
|
||||
googleClientSecretPath:
|
||||
type: string
|
||||
default: ""
|
||||
description: "Path to client_secret.json file (alternative to environment variables)"
|
||||
workspaceMcpBaseUri:
|
||||
type: string
|
||||
default: "http://localhost"
|
||||
description: "Base URI for the server (do not include port)"
|
||||
workspaceMcpPort:
|
||||
type: number
|
||||
default: 8000
|
||||
description: "Port the server listens on"
|
||||
mcpSingleUserMode:
|
||||
type: boolean
|
||||
default: false
|
||||
description: "Enable single-user mode - bypasses session mapping"
|
||||
mcpEnableOauth21:
|
||||
type: boolean
|
||||
default: true
|
||||
description: "Enable OAuth 2.1 multi-user support (requires streamable-http)"
|
||||
oauthlibInsecureTransport:
|
||||
type: boolean
|
||||
default: false
|
||||
description: "Enable insecure transport for development environments"
|
||||
googlePseApiKey:
|
||||
type: string
|
||||
default: ""
|
||||
description: "API key for Google Custom Search - required for search tools"
|
||||
googlePseEngineId:
|
||||
type: string
|
||||
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."
|
||||
workspaceMcpStatelessMode:
|
||||
type: boolean
|
||||
default: true
|
||||
description: "Enable stateless mode - no session persistence"
|
||||
commandFunction:
|
||||
|-
|
||||
(config) => {
|
||||
const args = ['run', 'main.py', '--transport', 'streamable-http'];
|
||||
|
||||
// Add single-user flag if enabled
|
||||
if (config.mcpSingleUserMode) {
|
||||
args.push('--single-user');
|
||||
}
|
||||
|
||||
// Add tools selection if specified
|
||||
if (config.tools && config.tools.trim() !== '') {
|
||||
args.push('--tools');
|
||||
args.push(...config.tools.split(',').map(t => t.trim()).filter(t => t));
|
||||
}
|
||||
|
||||
return {
|
||||
command: 'uv',
|
||||
args: ['run', 'python', 'main.py'],
|
||||
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.workspaceExternalUrl && { WORKSPACE_EXTERNAL_URL: config.workspaceExternalUrl }),
|
||||
...(config.mcpSingleUserMode && { MCP_SINGLE_USER_MODE: '1' }),
|
||||
...(config.mcpEnableOauth21 && { MCP_ENABLE_OAUTH21: 'true' }),
|
||||
...(config.workspaceMcpStatelessMode && { WORKSPACE_MCP_STATELESS_MODE: 'true' }),
|
||||
...(config.oauthlibInsecureTransport && { OAUTHLIB_INSECURE_TRANSPORT: '1' }),
|
||||
...(config.googlePseApiKey && { GOOGLE_PSE_API_KEY: config.googlePseApiKey }),
|
||||
...(config.googlePseEngineId && { GOOGLE_PSE_ENGINE_ID: config.googlePseEngineId })
|
||||
}
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user