Skip to main content
Glama

generate_database_token

Create a new token with specified permissions for a Turso database using the MCP server, enabling secure access and management of database operations.

Instructions

Generate a new token for a specific database

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
databaseYesName of the database to generate a token for
permissionNoPermission level for the token

Implementation Reference

  • MCP tool registration for 'generate_database_token', including inline handler that delegates to organization_client and formats the response
    server.tool(
    	{
    		name: 'generate_database_token',
    		description: 'Generate a new token for a specific database',
    		schema: GenerateDatabaseTokenSchema,
    	},
    	async ({ database, permission = 'full-access' }) => {
    		try {
    			const jwt = await organization_client.generate_database_token(
    				database,
    				permission,
    			);
    			return create_tool_response({
    				success: true,
    				database,
    				token: { jwt, permission, database },
    				message: `Token generated successfully for database '${database}' with '${permission}' permissions`,
    			});
    		} catch (error) {
    			return create_tool_error_response(error);
    		}
    	},
    );
  • Zod schema for validating inputs to the generate_database_token tool: requires database name, optional permission ('full-access' or 'read-only')
    const GenerateDatabaseTokenSchema = z.object({
    	database: z.string().describe('Name of the database to generate a token for'),
    	permission: z.enum(['full-access', 'read-only']).optional().describe('Permission level for the token'),
    });
  • Wrapper in organization client that dynamically imports token-manager's generate_database_token to avoid circular dependencies
    export async function generate_database_token(
    	database_name: string,
    	permission: 'full-access' | 'read-only' = 'full-access',
    ): Promise<string> {
    	// Import here to avoid circular dependencies
    	const { generate_database_token: generate_token } = await import(
    		'./token-manager.js'
    	);
    	return generate_token(database_name, permission);
    }
  • Core implementation of generate_database_token: makes authenticated POST request to Turso API to create a JWT token for the specified database with given permissions
    export async function generate_database_token(
    	database_name: string,
    	permission: 'full-access' | 'read-only' = 'full-access',
    ): Promise<string> {
    	const config = get_config();
    	const url = `https://api.turso.tech/v1/organizations/${config.TURSO_ORGANIZATION}/databases/${database_name}/auth/tokens`;
    
    	try {
    		const response = await fetch(url, {
    			method: 'POST',
    			headers: {
    				Authorization: `Bearer ${config.TURSO_API_TOKEN}`,
    				'Content-Type': 'application/json',
    			},
    			body: JSON.stringify({
    				expiration: config.TOKEN_EXPIRATION,
    				permission,
    			}),
    		});
    
    		if (!response.ok) {
    			const errorData = await response.json().catch(() => ({}));
    			const errorMessage = errorData.error || response.statusText;
    			throw new TursoApiError(
    				`Failed to generate token for database ${database_name}: ${errorMessage}`,
    				response.status,
    			);
    		}
    
    		const data = await response.json();
    		return data.jwt;
    	} catch (error) {
    		if (error instanceof TursoApiError) {
    			throw error;
    		}
    		throw new TursoApiError(
    			`Failed to generate token for database ${database_name}: ${
    				(error as Error).message
    			}`,
    			500,
    		);
    	}
    }
Install Server

Other Tools

Related Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/spences10/mcp-turso-cloud'

If you have feedback or need assistance with the MCP directory API, please join our Discord server