SAS MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_API_KEY | No | Optional API key to require from MCP clients (sent as X-API-Key or Authorization: Bearer) | |
| MCP_TRANSPORT | No | MCP transport to use: set to 'sse' to serve SSE instead of the default Streamable HTTP (http) | |
| SCOPE_ENFORCE | No | Whether to enforce the scope: 'true' (default) blocks out-of-scope access, 'false' only hides from listings | |
| USE_CASE_NAME | No | Name of the use case for scoping the assistant (returned by get_use_case) | |
| VIYA_ENDPOINT | No | The base URL of your SAS Viya environment (e.g. https://your-viya-server.com) | |
| VIYA_PASSWORD | No | Your SAS Viya password for server-side authentication (stdin/direct HTTP modes) | |
| VIYA_USERNAME | No | Your SAS Viya username for server-side authentication (stdin/direct HTTP modes) | |
| ALLOWED_MODELS | No | Comma- or newline-separated list of allowed model IDs or names | |
| ALLOWED_TABLES | No | Comma- or newline-separated list of allowed CAS tables (table, caslib.table, or server.caslib.table) | |
| ALLOWED_DECISIONS | No | Comma- or newline-separated list of allowed decision / MAS-module IDs or names | |
| VIYA_REFRESH_TOKEN | No | A refresh token for headless authentication to SSO/federated environments (e.g. Okta) when password grant is not available | |
| USE_CASE_DESCRIPTION | No | Description of the use case for scoping the assistant |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_use_caseA | Return this assistant's use-case scope: the datasets, models, and decisions it is limited to. Call this first to learn which resources you may work with. If the
assistant is not scoped to a use case, |
| execute_sas_codeA | Executes the provided SAS code in the Viya environment and returns information about the completed Job. This will create a job definition for the SAS code, execute it, and then retrieve the results. |
| render_chartA | Render an interactive chart in the chat UI. Use whenever the user asks to show / plot / visualize / graph / compare
data, or when a chart makes the answer clearer than text. Call this AFTER
fetching the rows with the data tools (e.g. get_castable_data) or computing
them with execute_sas_code, then pass the rows in as The chart is drawn by the user interface from this call; the tool itself does no plotting and returns the normalized chart spec. |
| list_cas_serversA | List available CAS servers on the Viya environment. |
| list_caslibsA | List CAS libraries (caslibs) available on a CAS server. |
| list_castablesB | List tables in a CAS library. |
| get_castable_infoA | Get metadata for a CAS table (row count, column count, size, etc.). |
| get_castable_columnsA | Get column metadata for a CAS table (names, types, labels, formats). |
| get_castable_dataB | Fetch rows from a CAS table with column names. |
| upload_dataC | Upload CSV data into a CAS table. |
| promote_table_to_memoryA | Promote a CAS table to global scope (makes it visible to all sessions). |
| list_filesB | List files in the Viya Files Service. |
| upload_fileB | Upload a file to the Viya Files Service. |
| download_fileB | Download file content from the Viya Files Service. |
| generate_synthetic_dataA | Generate a synthetic CAS table from a column specification. Use this to create realistic mock data on request (e.g. a driver-risk dataset for a demo). Recommended flow: first PROPOSE the column schema to the user in chat and get their agreement, THEN call this tool. The rows are generated in SAS and saved to CAS as a promoted (global) table, immediately usable by the data, charting, AutoML, and scoring tools. If a table with the requested name already exists, a numbered variant is created automatically (no error). Very large requests are capped to a safe maximum rather than failing. |
| submit_batch_jobA | Submit a SAS job for asynchronous execution via the Job Execution service. |
| get_job_statusB | Check the status of a submitted job. |
| list_jobsB | List recent jobs from the Job Execution service. |
| cancel_jobC | Cancel a running job. |
| get_job_logA | Retrieve the log of a completed job. |
| list_ml_projectsB | List AutoML pipeline automation projects. |
| create_ml_projectA | Create a new AutoML pipeline automation project. SAS auto-detects the target's measurement level from the data; for
classification targets, |
| run_ml_projectC | Run an AutoML pipeline automation project. |
| delete_ml_projectA | Delete an AutoML pipeline automation project. Use this to remove a project (for example, to start over with a different configuration) instead of calling the REST API from SAS code. |
| list_registered_modelsA | List models in the Model Repository. |
| list_models_and_decisionsB | List published scoring models and decisions (MAS modules). |
| score_dataB | Score data against a published model or decision (MAS module). |
| explain_dataA | Explain a column of a CAS table in relation to the other columns (SAS Insights). Returns natural-language descriptions of the variable, its outliers, and variable-screening results — useful for understanding which variables drive a target before exploring or modelling the data. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| debug_sas_log | Analyze a SAS log for errors, warnings, and notes with root-cause explanations and suggested fixes. |
| explore_dataset | Generate comprehensive SAS data-profiling code (CONTENTS, MEANS, FREQ, UNIVARIATE). |
| data_quality_check | Generate SAS code for a data quality assessment (completeness, uniqueness, validity). |
| statistical_analysis | Set up a complete SAS statistical analysis workflow with diagnostics. |
| optimize_sas_code | Review and optimize SAS code for performance, readability, or both. |
| explain_sas_code | Provide a block-by-block explanation of SAS code, tailored to skill level. |
| sas_macro_builder | Build a production-quality reusable SAS macro. |
| generate_report | Generate SAS ODS/PROC REPORT code for formatted output. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/raedaldweik/SAS_MCP_Server_personal'
If you have feedback or need assistance with the MCP directory API, please join our Discord server