Skip to main content
Glama
sdelements

SD Elements MCP Server

Official
by sdelements

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
SDE_HOSTYesYour SD Elements instance URL (e.g., https://your-sdelements-instance.com)
SDE_API_KEYYesYour SD Elements API key

Capabilities

Server capabilities have not been inspected yet.

Tools

Functions exposed to the LLM to take actions

NameDescription
list_projectsB

List all projects in SD Elements

get_projectA

Get details of a specific project. Use list_countermeasures to see countermeasures for a project, not this tool.

list_profilesB

List all available profiles in SD Elements

list_risk_policiesC

List all available risk policies in SD Elements

get_risk_policyC

Get details of a specific risk policy

create_projectA

Create a new project in SD Elements. If name is not specified, prompts user to provide it. If profile is not specified, attempts to detect it from project name/description (e.g., 'mobile project' → Mobile profile). If detection fails, prompts user to select from available profiles.

update_projectA

Update an existing project (name, description, status, or risk_policy). Use when user says 'update', 'change', 'modify', or 'rename'. Do NOT use for 'archive', 'delete', or 'remove' - use delete_project instead.

IMPORTANT: risk_policy must be the numeric ID of the risk policy (e.g., 1, 2, 3), not the name. Use list_risk_policies to find the correct ID.

delete_projectA

Delete a project. Use when user says 'delete', 'remove', 'archive', or wants to permanently remove a project. Do NOT use update_project for archiving.

create_project_from_codeA

Create application and project in SD Elements. Returns the project survey structure with all available questions and answers.

IMPORTANT: Before determining survey answers, the AI client MUST search the workspace codebase for evidence of survey answers and security requirements.

list_applicationsB

List all applications

get_applicationC

Get details of a specific application

create_applicationC

Create a new application

update_applicationC

Update an existing application

list_business_unitsC

List all business units

get_business_unitC

Get details of a specific business unit

list_countermeasuresB

List all countermeasures for a project. Use this to see countermeasures associated with a project, not get_project which returns project details.

get_countermeasureA

Get details of a SPECIFIC countermeasure by its ID. Use this when the user asks about a particular countermeasure (e.g., "countermeasure 123", "T21", "countermeasure 456"). Accepts countermeasure ID as integer (e.g., 21) or string (e.g., "T21" or "31244-T21"). Filter by risk relevance - if true, only return risk-relevant countermeasures. Defaults to true. Do NOT use this tool when the user asks about available status choices or what statuses are valid - use get_task_status_choices instead.

update_countermeasureA

Update a countermeasure (status or notes). Use when user says 'update status', 'mark as complete', or 'change status'. Do NOT use for 'add note', 'document', or 'note' - use add_countermeasure_note instead. Accepts countermeasure ID as integer (e.g., 21) or string (e.g., "T21" or "31244-T21").

Status can be provided as name (e.g., 'Complete', 'Not Applicable'), slug (e.g., 'DONE', 'NA'), or ID (e.g., 'TS1'). The tool will automatically resolve names/slugs to the correct status ID required by the API.

IMPORTANT: The 'notes' parameter sets a status_note, which is only saved when the status actually changes. If the countermeasure already has the target status, use add_countermeasure_note instead to add a note, or change the status to a different value first, then back to the target status to trigger saving the status_note.

add_countermeasure_noteA

Add a note to a countermeasure. Use when user says 'add note', 'document', 'note that', 'record that', or wants to add documentation. Use update_countermeasure if user wants to change status. Accepts countermeasure ID as integer (e.g., 21) or string (e.g., "T21" or "31244-T21").

IMPORTANT: Use this tool when adding notes to countermeasures that already have the target status. The update_countermeasure tool's 'notes' parameter only saves status_note when the status actually changes. For countermeasures that already have the desired status, always use add_countermeasure_note to ensure the note is saved.

get_task_status_choicesA

Get the complete list of ALL available task status choices. Returns all valid status values that can be used when updating countermeasures (e.g., 'Complete', 'Not Applicable', 'In Progress', 'DONE', 'NA'). Use this tool when the user asks: "What task statuses are available?", "What statuses can I use?", "Show me valid status values", "What status values are valid for countermeasures?", or any question about available/valid status options. Task statuses are standardized across all projects. This tool returns the list of possible statuses, NOT the status of a specific countermeasure. For a specific countermeasure's status, use get_countermeasure instead.

get_project_surveyA

Get the complete survey structure for a project (all available questions and ALL possible answers). Use this to see what survey questions exist and what answers are available. Use get_survey_answers_for_project to see only the answers that are currently selected for a project.

update_project_surveyC

Update project survey with answer IDs. Selects answers in 'answers' list and optionally deselects answers in 'answers_to_deselect' list.

find_survey_answersC

Find survey answers by text

set_project_survey_by_textA

Set/REPLACE all project survey answers by text. This REPLACES all existing answers with the new ones. Use ONLY when user wants to completely replace all answers. Use add_survey_answers_by_text if user says 'add' or wants to keep existing answers.

If replace_all is True (default), deselects all current answers not in the new list. If False, only selects the new answers without deselecting existing ones.

remove_survey_answers_by_textC

Remove survey answers by text. This explicitly deselects the specified answers while keeping all other answers unchanged.

add_survey_answers_by_textA

ADD survey answers by text to existing answers. Use when user says 'add', 'include', or wants to add to existing answers. This ADDS new answers while preserving all existing ones. Use set_project_survey_by_text ONLY if user explicitly wants to REPLACE all answers.

get_survey_answers_for_projectA

Get the survey answers FOR A PROJECT that are currently selected/assigned. Use when user asks 'show me the survey answers for project X', 'what answers are set for project', 'survey answers for project', or 'current answers for project'. Returns only the answers that are currently selected for the project, not all available answers. Use get_project_survey to see the full survey structure with all available questions and answers.

commit_survey_draftC

Commit the survey draft to publish the survey and generate countermeasures

add_survey_question_commentA

Add a comment to a survey question. Use this to explain why specific answers were selected for a question, providing context and justification for survey answer choices.

This is especially useful when setting project survey answers to document the reasoning behind answer selections.

Example: Add a comment to question Q1 in project 123 explaining that Python was selected because the project uses Django.

list_usersC

List all users

get_userC

Get details of a specific user

get_current_userB

Get current authenticated user

list_scan_connectionsB

List repository scan connections

scan_repositoryC

Scan a repository

get_scan_statusC

Get status of a repository scan

list_scansC

List repository scans

list_project_diagramsB

List diagrams for a project

get_diagramC

Get details of a specific diagram

create_diagramC

Create a new diagram

update_diagramC

Update a diagram

delete_diagramC

Delete a diagram

list_advanced_reportsB

List all advanced reports

get_advanced_reportC

Get details of a specific advanced report

update_advanced_reportC

Update an existing advanced report. Provide only the fields you want to update. The query and chart_meta parameters can be JSON strings or objects.

run_advanced_reportD

Run an advanced report

create_advanced_reportC

Create a new advanced report. The query parameter can be a JSON string or object with schema, dimensions, measures, filters, order, and limit. The chart_meta parameter can be a JSON string or object if provided.

Example query: {"schema": "application", "dimensions": ["Project.name"], "measures": ["Task.count"]} Example chart_meta: {"columnOrder": ["Project.name", "Task.count"]}

execute_cube_queryA

Execute a Cube API query for advanced analytics. The query parameter can be a JSON string or object.

Query structure (see https://docs.sdelements.com/master/cubeapi/):

  • schema: Required. One of: activity, application, countermeasure, integration, library, project_survey_answers, training, trend_application, trend_projects, trend_tasks, user

  • dimensions: Required. Array like ["Application.name", "Project.id"]

  • measures: Required. Array like ["Project.count", "Task.completeCount"]

  • filters: Optional. Array of objects with member, operator (equals/contains/gt/etc), values

  • order: Optional. 2D array like [["Application.name", "asc"], ["Project.count", "desc"]]

  • limit: Optional. Number to limit results

  • time_dimensions: Optional. For Trend Reports only (trend_application, trend_projects, trend_tasks)

Example: {"schema": "application", "dimensions": ["Application.name"], "measures": ["Project.count"], "limit": 10}

api_requestA

Make a generic API request to a custom endpoint. Use when user says 'make a GET/POST/PUT/DELETE request', 'call API endpoint', or 'custom API call'. Do NOT use for specific operations - use dedicated tools like get_project instead.

test_connectionA

Test the connection to SD Elements API. Use this to verify API connectivity and credentials, not for making API calls.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/sdelements/sde-mcp'

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