Skip to main content
Glama
kesslerio

YOURLS-MCP

by kesslerio

delete_url

Remove a short URL or keyword from your YOURLS URL shortener to clean up unused or outdated links, ensuring your short URL directory remains organized and relevant.

Instructions

Delete a short URL

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
shorturlYesThe short URL or keyword to delete

Implementation Reference

  • The createDeleteUrlTool factory function that returns the MCP tool object for 'delete_url', including the execute handler that performs the deletion using yourlsClient.deleteUrl with fallback handling and response formatting.
    export default function createDeleteUrlTool(yourlsClient) {
      return {
        name: 'delete_url',
        description: 'Delete a short URL',
        inputSchema: {
          type: 'object',
          properties: {
            shorturl: {
              type: 'string',
              description: 'The short URL or keyword to delete'
            }
          },
          required: ['shorturl']
        },
        execute: async ({ shorturl }) => {
          try {
            // Use the deleteUrl method with fallback enabled
            const result = await yourlsClient.deleteUrl(shorturl, true);
            
            if (result.status === 'success' || result.message === 'success: deleted') {
              const responseData = {
                shorturl: shorturl,
                message: result.message || result.simple || 'Short URL deleted successfully'
              };
              
              // Add fallback information if applicable
              if (result.fallback_used) {
                responseData.fallback_used = true;
                if (result.fallback_limited) {
                  responseData.fallback_limited = true;
                  
                  // Special handling for the limited delete fallback
                  if (result.status === 'info') {
                    return {
                      content: [
                        {
                          type: 'text',
                          text: JSON.stringify({
                            status: 'info',
                            shorturl: shorturl,
                            message: result.message,
                            code: result.code || 'not_supported',
                            fallback_used: true,
                            fallback_limited: true
                          })
                        }
                      ]
                    };
                  }
                }
              }
              
              return createMcpResponse(true, responseData);
            } else if (result.status === 'info') {
              // Special handling for the info status (fallback limitation)
              return {
                content: [
                  {
                    type: 'text',
                    text: JSON.stringify({
                      status: 'info',
                      shorturl: shorturl,
                      message: result.message,
                      fallback_used: result.fallback_used,
                      fallback_limited: result.fallback_limited
                    })
                  }
                ]
              };
            } else {
              throw new Error(result.message || 'Unknown error');
            }
          } catch (error) {
            return createMcpResponse(false, {
              message: error.message,
              shorturl: shorturl
            });
          }
        }
      };
    }
  • src/index.js:220-227 (registration)
    Registration of the delete_url tool on the MCP server using server.tool(), providing name, description, input schema (zod), and execute function reference.
    server.tool(
      deleteUrlTool.name,
      deleteUrlTool.description,
      {
        shorturl: z.string().describe('The short URL or keyword to delete')
      },
      deleteUrlTool.execute
    );
  • JSON schema definition for the delete_url tool input parameters within the tool factory.
    inputSchema: {
      type: 'object',
      properties: {
        shorturl: {
          type: 'string',
          description: 'The short URL or keyword to delete'
        }
      },
      required: ['shorturl']
    },
  • The YourlsClient.deleteUrl method, called by the tool handler, which checks for the API Delete plugin availability and provides fallback response explaining limitations.
    async deleteUrl(shorturl, useNativeFallback = true) {
      try {
        // First check if the plugin is available
        const isAvailable = await isPluginAvailable(this, 'delete', 'delete', { shorturl: 'test' });
        
        if (isAvailable) {
          return this.request('delete', { shorturl });
        } else if (useNativeFallback) {
          // Use our fallback implementation with admin interface emulation
          return this._deleteUrlFallback(shorturl);
        } else {
          throw new Error('The delete action is not available. Please install the API Delete plugin.');
        }
      } catch (error) {
        // If the error is not about a missing plugin, re-throw it
        if (!isPluginMissingError(error)) {
          throw error;
        }
        
        // If we're here, the plugin is missing and we need to use the fallback
        if (useNativeFallback) {
          return this._deleteUrlFallback(shorturl);
        } else {
          throw new Error('The delete action is not available. Please install the API Delete plugin.');
        }
      }
    }
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/kesslerio/yourls-mcp'

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