Overview
Tiro MCP Server uses OAuth 2.0 with JWT tokens (HS256 algorithm) to provide secure, scoped access to your meeting notes. Authentication is handled through Google OAuth login.Authentication MethodCurrently, Tiro supports Google OAuth login only. Support for email/password login and Microsoft OAuth is planned for future releases.
How Authentication Works
1
Configure Your Client
Add Tiro MCP Server configuration to your client (Claude Code or Claude Desktop)No need to visit Tiro’s website first - the client handles everything.
2
Browser Opens Automatically
When your client first connects to Tiro MCP Server:
- A browser window opens automatically
- You’re redirected to Tiro’s OAuth login page
3
Sign in with Google
In the browser:
- Sign in with your Google account
- If you don’t have a Tiro account, one will be created automatically
- Complete the OAuth consent flow
4
Return to Client
After successful authentication:
- The browser redirects back to your client
- Tiro generates an OAuth 2.0 JWT token with
mcp:notes:readscope - Your client is now connected and ready to use
No Manual Token ManagementYou don’t need to manually copy/paste tokens. The OAuth flow handles everything automatically through your browser.
OAuth 2.0 Specification
Tiro MCP Server implements standard OAuth 2.0 with the following specifications:Discovery Endpoint
JWT Token Structure
Tiro uses HS256 (HMAC with SHA-256) for JWT signing. Header:| Claim | Description |
|---|---|
iss | Token issuer (Tiro OAuth server) |
sub | User identifier |
aud | Intended audience (MCP server) |
exp | Expiration timestamp (Unix seconds) |
iat | Issued at timestamp |
scope | Granted permissions |
client_id | OAuth client identifier |
Supported Scopes
| Scope | Permissions | Required For |
|---|---|---|
mcp:notes:read | Read meeting notes | All MCP tools |
Future Scopes: Additional scopes like
mcp:notes:write and mcp:notes:delete are planned for Q2 2025.Claude Code Setup
Claude Code is Anthropic’s official CLI tool that supports MCP servers with OAuth authentication.Configuration File Location
Create or edit the MCP configuration file:Configuration Format
Add Tiro MCP Server to your configuration:mcp_servers.json
OAuth Handles AuthenticationNo need to add
Authorization headers or tokens manually. Claude Code will automatically initiate the OAuth flow when it first connects to Tiro.First Connection
When you first use Tiro MCP Server with Claude Code:- Run any command that uses the MCP server
- Claude Code will automatically open your browser
- Sign in with your Google account in the browser
- Return to Claude Code - authentication is complete!
Test Connection
Claude Desktop Setup
Claude Desktop supports MCP servers with automatic OAuth authentication.Configuration File Location
Configuration Format
1
Edit Configuration File
Open the configuration file in your text editor:
2
Add Tiro MCP Server
Add the following configuration:If you already have other MCP servers configured, add the
claude_desktop_config.json
tiro entry inside the existing mcpServers object.3
Restart Claude Desktop
- Quit Claude Desktop completely (Menu → Quit)
- Relaunch Claude Desktop
4
First Connection - OAuth Flow
When Claude Desktop first connects to Tiro:
- Your browser will open automatically
- Sign in with your Google account
- If you don’t have a Tiro account, it will be created automatically
- Complete the OAuth consent
- Return to Claude Desktop - you’re connected!
5
Verify Connection
Ask Claude:Claude should confirm the connection and show available Tiro tools.
OAuth Browser FlowThe browser opens automatically when authentication is needed. You don’t need to manually manage tokens or credentials.
Token Management
Token Expiration
Tokens expire based on your OAuth settings (typically 30 days for dashboard-generated tokens). Check Token Expiration:exp field (Unix timestamp in seconds).
Renew Expired Token
When your token expires, your MCP client will automatically trigger the OAuth flow again:- Your browser will open automatically
- Sign in with your Google account
- A new token is generated automatically
- Return to your client - reconnected!
Security Best Practices
OAuth Handles Security Automatically
OAuth Handles Security Automatically
With OAuth authentication:
- Tokens are managed automatically by your client
- No manual token storage or rotation needed
- Tokens expire automatically and refresh via OAuth
- Your Google credentials are never shared with the client
Use HTTPS Only
Use HTTPS Only
- All communication with Tiro MCP Server uses HTTPS
- OAuth redirects use secure HTTPS endpoints
- TLS 1.2 or higher is required
Principle of Least Privilege
Principle of Least Privilege
- Tiro automatically grants only
mcp:notes:readscope - Additional scopes will be added in future releases
- Review OAuth consent screen carefully before approving
Protect Your Google Account
Protect Your Google Account
Since authentication uses Google OAuth:
- Enable 2-factor authentication on your Google account
- Use a strong, unique password
- Monitor your Google account security settings
- Sign out of Tiro if you suspect unauthorized access
Troubleshooting
401 Unauthorized Error
Symptoms:- “Authentication required” message
- “Invalid or expired token” error
- Connection fails with authentication error
1
Re-authenticate via Browser
- Close and restart your MCP client
- The OAuth flow will trigger automatically
- Sign in with your Google account in the browser
- Return to your client
2
Clear Browser Cookies
If re-authentication fails:
- Clear cookies for
tiro.oooin your browser - Try the OAuth flow again
3
Verify Google Account
Ensure you’re signing in with the correct Google account that has access to Tiro meeting notes.
4
Check Network Connection
- Ensure your internet connection is stable
- Verify you can access
https://mcp.tiro.oooin your browser - Check if any firewall or proxy is blocking OAuth redirects
403 Forbidden Error
Symptoms:- “Insufficient scope” message
- Access denied to specific tools
mcp:notes:read scope. Generate a new token with the correct scope selected.
Configuration Not Loading
Symptoms:- Tiro MCP server not appearing in client
- Connection fails silently
- Validate JSON syntax using JSONLint
- Check file location - ensure config file is in the correct directory
- Restart client completely - not just refresh, but full quit and relaunch
- Check file permissions - ensure the config file is readable

