This guide covers all configuration options available in guMCP, including environment variables, server settings, and authentication configuration.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/dvlpjrs/guMCP/llms.txt
Use this file to discover all available pages before exploring further.
Environment Variables
guMCP uses environment variables for configuration. These are stored in a.env file in the project root.
Creating Your Configuration File
If you haven’t already, create your.env file from the template:
Core Configuration
Sets the runtime environment. Affects logging, error handling, and authentication behavior.
local- Development environment with verbose loggingproduction- Production environment with optimized settings
The host address the SSE server binds to.
0.0.0.0- Listen on all network interfaces (accessible remotely)127.0.0.1- Listen on localhost only (local access only)
The port number the SSE server listens on.
API Keys
Your Anthropic API key for Claude. Required for running test clients.Get your API key from console.anthropic.com
Server-Specific Configuration
Each MCP server may require additional configuration. Authentication credentials are typically stored separately from the.env file.
API Key-Based Servers
These servers use simple API key authentication:Perplexity
Perplexity
The Perplexity server requires an API key from perplexity.ai.Setup:You’ll be prompted to enter your API key, which will be stored in:Features:
- Web search with recency filters
- Multiple model support (sonar, sonar-pro, sonar-deep-research)
- Code assistance
- Related questions retrieval
OAuth 2.0 Servers
These servers require OAuth 2.0 authentication setup:Google Services (Sheets, Gmail, Docs, Drive, Calendar)
Google Services (Sheets, Gmail, Docs, Drive, Calendar)
Google services require a Google Cloud Platform (GCP) project with OAuth 2.0 credentials.Prerequisites:With the following structure:Supported Services:
- Create a project in Google Cloud Console
- Enable the required APIs (Sheets API, Gmail API, etc.)
- Create OAuth 2.0 credentials
- Download the credentials JSON
The default redirect URI
http://localhost:8080 is recommended as it matches the OAuth utility in src/utils/oauth/util.py.- Google Sheets (
gsheets) - Read and write spreadsheet data - Gmail (
gmail) - Send and read emails - Google Docs (
gdocs) - Create and edit documents - Google Drive (
gdrive) - Manage files and folders - Google Calendar (
gcalendar) - Manage events and calendars
Slack
Slack
Slack uses OAuth 2.0 without refresh tokens.Prerequisites:Reference Implementation: See
- Create a Slack app at api.slack.com/apps
- Configure OAuth & Permissions
- Add required scopes
- Install the app to your workspace
src/utils/slack/util.pyOutlook
Outlook
Outlook requires Azure app registration.Prerequisites:
- Register an app in Azure Portal
- Configure Microsoft Graph API permissions
- Add redirect URI
- Generate client secret
Airtable
Airtable
Airtable uses OAuth 2.0 with refresh tokens and PKCE (Proof Key for Code Exchange).Prerequisites:Reference Implementation: See
- Create an Airtable OAuth integration at airtable.com/create/oauth
- Configure redirect URI
- Note your client ID and client secret
src/utils/airtable/util.py for PKCE flow exampleLinear
Linear
Linear uses OAuth 2.0 for project management integration.Prerequisites:
- Create an OAuth application in Linear settings
- Configure redirect URI
- Note your client ID and client secret
Attio
Attio
Attio CRM uses OAuth 2.0 with refresh tokens and additional token response parameters.Prerequisites:Reference Implementation: See
- Create an Attio OAuth application
- Configure redirect URI
- Note your client ID and client secret
src/utils/attio/util.py for handling additional token parametersFile Structure
understanding where configuration and credentials are stored:Server Startup Configuration
Thestart_sse_dev_server.sh script handles server startup with the following behavior:
Manual Server Startup
You can also start the server manually with custom arguments:Server host address
Server port number
Production Configuration
For production deployments, consider these additional configurations:Environment Settings
.env
Reverse Proxy
When running behind nginx or another reverse proxy:nginx.conf
Process Management
Use a process manager to keep guMCP running:Security Best Practices
- Never commit credentials - Add
local_auth/and.envto.gitignore - Use environment-specific keys - Separate keys for development and production
- Restrict access - Use
GUMCP_HOST=127.0.0.1when behind a reverse proxy - Enable HTTPS - Always use HTTPS in production with valid SSL certificates
- Rotate keys regularly - Update API keys and OAuth secrets periodically
- Monitor access - Log and monitor API usage for unusual activity
- Limit OAuth scopes - Only request necessary permissions for OAuth apps
Gumloop is SOC 2 Type II, GDPR, and HIPAA compliant. For production deployments requiring compliance, consider using Gumloop’s hosted MCP servers.
Authentication Reference
For developers implementing new servers or custom authentication:OAuth 2.0 Implementation
Reference implementations for different OAuth patterns:- Simple OAuth (no refresh):
src/utils/slack/util.py - OAuth with refresh tokens:
src/utils/attio/util.py - OAuth with PKCE:
src/utils/airtable/util.py
API Key Implementation
Reference implementation:src/servers/perplexity/main.py
Custom Auth Client
If implementing a customAuthClient for remote hosting:
- Extend
BaseAuthClientfromsrc/auth/clients/BaseAuthClient.py - Implement
get_user_credentials()to return refreshed credentials - Handle token refresh internally within your client
Troubleshooting
Environment variables not loading
Environment variables not loading
Ensure:
.envfile exists in project root- File is properly formatted (no spaces around
=) - No quotes needed around values
- File is not named
.env.txtor.env.example
OAuth authentication failing
OAuth authentication failing
Common issues:
- Redirect URI mismatch - Must match exactly in OAuth config and provider settings
- Missing scopes - Ensure all required scopes are configured
- Expired credentials - Delete old credentials and re-authenticate
- Localhost vs 127.0.0.1 - Some providers are strict about localhost vs IP
- HTTPS required - Production OAuth may require HTTPS redirect URIs
Port already in use
Port already in use
The startup script automatically kills processes on the configured port. If issues persist:
Credentials not persisting
Credentials not persisting
Check:
local_auth/directory exists and is writable- Server-specific subdirectories exist (e.g.,
local_auth/credentials/perplexity/) - No file permission issues
- Authentication command completed successfully
Next Steps
Server Documentation
Explore individual server documentation and capabilities
Contributing
Learn how to implement new servers and auth methods