Skip to main content
Glama
DollhouseMCP

DollhouseMCP

Official

configure_oauth

Set up or verify GitHub OAuth authentication for AI persona management in DollhouseMCP, enabling secure access to persona marketplace features.

Instructions

Configure GitHub OAuth client ID for authentication. If no client_id provided, shows current configuration status. If client_id provided, validates format and saves it to config. Use when users need to set up OAuth or check their configuration.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
client_idNoGitHub OAuth client ID (starts with 'Ov23li' followed by at least 14 alphanumeric characters)

Implementation Reference

  • Tool registration with name, description, input schema, and handler that delegates to server.configureOAuth
    {
      tool: {
        name: "configure_oauth",
        description: "Configure GitHub OAuth client ID for authentication. If no client_id provided, shows current configuration status. If client_id provided, validates format and saves it to config. Use when users need to set up OAuth or check their configuration.",
        inputSchema: {
          type: "object",
          properties: {
            client_id: {
              type: "string",
              description: "GitHub OAuth client ID (starts with 'Ov23li' followed by at least 14 alphanumeric characters)"
            }
          }
        }
      },
      handler: (args: { client_id?: string }) => server.configureOAuth(args.client_id)
    },
  • Core logic for configuring (setting) the OAuth client ID, including validation and saving to config file
    public async setGitHubClientId(clientId: string): Promise<void> {
      if (!ConfigManager.validateClientId(clientId)) {
        throw new Error(
          `Invalid GitHub client ID format. Expected format: Ov23li followed by at least 14 alphanumeric characters (e.g., Ov23liABCDEFGHIJKLMN)`
        );
      }
    
      if (!this.config) {
        this.config = this.getDefaultConfig();
      }
    
      // Ensure github.auth object exists
      if (!this.config.github) {
        this.config.github = this.getDefaultConfig().github;
      }
      if (!this.config.github.auth) {
        this.config.github.auth = this.getDefaultConfig().github.auth;
      }
    
      this.config.github.auth.client_id = clientId;
      await this.saveConfig();
    }
  • Helper to retrieve current OAuth client ID (used when no client_id provided)
    public getGitHubClientId(): string | null {
      // Check environment variable first
      const envClientId = process.env.DOLLHOUSE_GITHUB_CLIENT_ID;
      if (envClientId) {
        return envClientId;
      }
    
      // Fall back to config file
      return this.config?.github?.auth?.client_id || null;
    }
  • Validation helper for client ID format
    public static validateClientId(clientId: any): boolean {
      if (typeof clientId !== 'string' || !clientId) {
        return false;
      }
    
      // GitHub OAuth client IDs follow the pattern: Ov23li[A-Za-z0-9]{14,}
      const clientIdPattern = /^Ov23li[A-Za-z0-9]{14,}$/;
      return clientIdPattern.test(clientId);
    }
  • Type definition for the delegated server.configureOAuth method
    configureOAuth(client_id?: string): Promise<any>;
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the conditional behavior (if client_id provided vs. not provided) and the validation/saving actions, which is helpful. However, it doesn't mention important behavioral aspects like whether this requires admin permissions, whether changes are persistent, error handling, or what 'shows current configuration status' actually returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately concise with three sentences that each serve a purpose: stating the core functionality, describing conditional behavior, and providing usage guidance. It's front-loaded with the main purpose. There's minimal waste, though the third sentence could be slightly more polished.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a configuration tool with no annotations and no output schema, the description provides adequate but incomplete context. It covers the basic functionality and usage but lacks details about authentication requirements, persistence of changes, error conditions, and what exactly gets returned when showing current configuration status. Given the complexity of OAuth configuration, more completeness would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents the single parameter. The description mentions the parameter's role (validates format and saves it) but doesn't add meaningful semantic context beyond what's in the schema. The baseline of 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: configuring GitHub OAuth client ID for authentication, with conditional behavior based on whether client_id is provided. It specifies the exact resource (GitHub OAuth client ID) and verb (configure/validate/save). However, it doesn't explicitly differentiate from sibling tools like 'setup_github_auth' or 'check_github_auth', which appear related.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: 'Use when users need to set up OAuth or check their configuration.' This gives practical guidance on when to invoke the tool. However, it doesn't explicitly state when NOT to use it or mention alternatives among the sibling tools, particularly 'setup_github_auth' and 'check_github_auth' which seem related.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other 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/DollhouseMCP/mcp-server'

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