Skip to main content
Glama

create_index

Create database indexes on SQL Server tables to improve query performance by organizing data for faster retrieval and enforcing unique constraints when needed.

Instructions

Creates an index on a specified column or columns in an MSSQL Database table

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
columnsYesArray of column names to include in the index
indexNameYesName for the new index
isClusteredNoWhether the index should be clustered (default: false)
isUniqueNoWhether the index should enforce uniqueness (default: false)
schemaNameNoName of the schema containing the table
tableNameYesName of the table to create index on

Implementation Reference

  • The run method implements the core logic for creating an index on an MSSQL table using dynamic SQL query construction.
    async run(params: any) { try { const { schemaName, tableName, indexName, columns, isUnique = false, isClustered = false } = params; let indexType = isClustered ? "CLUSTERED" : "NONCLUSTERED"; if (isUnique) { indexType = `UNIQUE ${indexType}`; } const columnNames = columns.join(", "); const request = new sql.Request(); const query = `CREATE ${indexType} INDEX ${indexName} ON ${schemaName}.${tableName} (${columnNames})`; await request.query(query); return { success: true, message: `Index [${indexName}] created successfully on table [${schemaName}.${tableName}]`, details: { schemaName, tableName, indexName, columnNames, isUnique, isClustered } }; } catch (error) { console.error("Error creating index:", error); return { success: false, message: `Failed to create index: ${error}`, }; } }
  • Defines the input schema for the create_index tool, specifying parameters like schemaName, tableName, indexName, columns, isUnique, and isClustered.
    inputSchema = { type: "object", properties: { schemaName: { type: "string", description: "Name of the schema containing the table" }, tableName: { type: "string", description: "Name of the table to create index on" }, indexName: { type: "string", description: "Name for the new index" }, columns: { type: "array", items: { type: "string" }, description: "Array of column names to include in the index" }, isUnique: { type: "boolean", description: "Whether the index should enforce uniqueness (default: false)", default: false }, isClustered: { type: "boolean", description: "Whether the index should be clustered (default: false)", default: false }, }, required: ["tableName", "indexName", "columns"], } as any;
  • src/index.ts:93-93 (registration)
    Instantiates the CreateIndexTool instance used throughout the server.
    const createIndexTool = new CreateIndexTool();
  • src/index.ts:115-119 (registration)
    Registers the createIndexTool in the list of available tools returned by ListToolsRequestHandler.
    server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: isReadOnly ? [listTableTool, readDataTool, describeTableTool] // todo: add searchDataTool to the list of tools available in readonly mode once implemented : [insertDataTool, readDataTool, describeTableTool, updateDataTool, createTableTool, createIndexTool, dropTableTool, listTableTool], // add all new tools here }));
  • src/index.ts:138-140 (registration)
    Dispatches calls to the create_index tool by invoking its run method in the CallToolRequestHandler switch statement.
    case createIndexTool.name: result = await createIndexTool.run(args); break;

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/Nirmal123K/mssql-mcp'

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