Sas MCP Server
UnclaimedA self-hosted Model Context Protocol (MCP) server that connects to your SAS Viya environment and provides tools across the analytics lifecycle.
Install
docker run -e VIYA_ENDPOINT=https://your-viya-server.com -p 8134:8134 ghcr.io/sassoftware/sas-mcp-server:latestUnclaimed listing
Is this your MCP server?
This listing was auto-indexed from the public record. Claim it to edit the page, set compatibility and unlock growth tools. Takes under two minutes.
Claim this serverTools (40)
apply_report_operations
The authoring workhorse — apply an ordered batch of native VA operations (addData, addPage, addObject, updateObject, setParameterValue, updateData, changeData, applyDataView) to a report. Give a page a title with addPage's title field (a text band at the top of the page body — VA headers are control
catalog_download_table_profile
Download a table's data dictionary and column profile as CSV, identified by either instanceid or resourceuri.
catalog_find_instance
Resolve the catalog instance for a source-asset resourceuri, bridging a search hit to the profiling and download tools without handling an instance id by hand.
catalog_get_adhoc_analysis
Poll a profiling job and cross-check the target instance, reporting profileready once results have landed on the asset — so a download isn't fired too early.
catalog_get_agent_history
Inspect an agent's run history — status and how much metadata each run enumerated/added/updated/removed.
catalog_list_agents
List the catalog's discovery agents (the crawlers that populate metadata).
catalog_run_adhoc_analysis
Submit an ad-hoc profiling job for a table. NLP enrichment (language, sentiment, semantic IDs) is on by default, populating informationPrivacy, nlpTerms, nlpTags, and mostImportantFields.
catalog_run_agent
Start a discovery agent run (asynchronous) to crawl its data source and refresh catalog metadata.
catalog_search
Search the catalog for assets (tables, columns, reports, …) using the SAS catalog search grammar (free text, facets like AssetType:Report, ranges). Each hit carries a resourceuri you can hand to the matching tool (e.g. getreport, getcastabledata).
catalog_search_helper
Discover how to query the catalog — list the available facets, or the valid values for one facet — so you can build precise catalogsearch queries.
copy_report
Copy a report to a new one (optionally renaming/refoldering). Pairs with a changeData operation for the copy-and-replace pattern.
create_report
Create a Visual Analytics report and return its id. Optionally pass an operations array to build the whole report in one atomic call; the result carries the created page/object names+labels and a verify hint.
delete_report
Delete a report and its content.
describe_report_objects
Discover what a report can contain — the eight report operations and every addable object (bar chart, list table, geo map, key value, …) with a one-line purpose, its data roles, common options, and an example payload. Call with no arguments for the catalog (including an intent→object map, placement
download_file
Download file content
execute_sas_code
Execute SAS code snippets and retrieve execution results (log and listing output). Runs in a reusable, per-user compute session that is kept warm across calls, so SAS state (WORK tables, macro variables, assigned librefs) persists between successive calls — use resetcomputesession to start fresh.
export_report
export a report (or specific report objects) in any format the VA service supports — package (zip), pdf, png, svg, csv, tsv, xlsx, or summary. Text formats come back inline, png as image content, and binary formats (package/pdf/xlsx) as an embedded file with the right MIME type.
get_castable_columns
Get column names, types, labels, formats
get_castable_data
Fetch sample rows from a CAS table
get_castable_info
Get table metadata (row count, columns, size)
get_job_status
Check job state
get_report
Get report metadata and definition
get_report_outline
Read a report's structure back — pages → objects with the handles the other tools need (object name for placement/updateObject targets, label for exportreport, page label for page placement).
list_cas_servers
List available CAS servers
list_caslibs
List CAS libraries on a server
list_castables
List tables in a CAS library
list_compute_columns
List the columns of a table in a SAS library
list_compute_contexts
List available compute contexts
list_compute_libraries
List the SAS libraries (librefs) assigned in a compute context
list_compute_tables
List the tables in a SAS library within a compute context
list_files
List files in the Viya Files Service
list_reports
List Visual Analytics reports
list_source_tables
List source tables not yet loaded into memory (candidates for promotion)
promote_table_to_memory
Load a source table into memory at global scope (idempotent)
query_data
Run a FedSQL SELECT against CAS or compute data and get the rows back — one SQL surface over both storage tiers. Pick the tier with target (cas for caslib.table, compute for libref.table); joins, subqueries, aggregation, and UNION all work, and the row cap is applied server-side by the tool (a LIMIT
reset_compute_session
Delete the cached compute session for a context, discarding its SAS state and forcing a fresh session on the next call
submit_batch_job
Submit a SAS job for async execution
upload_data
Upload a data file into a CAS table — read server-side so the data never passes through the model's context — from filepath (the server reads it off disk) or url (the server fetches it and converts it to the multipart upload the endpoint requires). Ingests the formats the casManagement uploadTable A
upload_file
Upload a file to the Viya Files Service, optionally into a Content folder (parentfolderuri). Content comes from exactly one of content (inline text), filepath (read server-side, binary-safe — xlsx, zip, images — gated by ALLOWLOCALFILEUPLOAD), or url (server-side fetch)
upload_inline_data
Create a small CAS table from inline csv/tsv text passed as a string (a lookup/mapping table the model builds on the fly, or a quick test table). The payload travels through the model's context, so it's for tiny tables only — use uploaddata for files or anything larger.