Search / io.github.sassoftware/sas-mcp-server
SAS Viya
L0· runs locallyExecute SAS code and query Compute, CAS, and model APIs on SAS Viya via OAuth 2.0.
v1.18.0 · active · repository · descriptor JSON · versions
Search / io.github.sassoftware/sas-mcp-server
L0· runs locallyExecute SAS code and query Compute, CAS, and model APIs on SAS Viya via OAuth 2.0.
v1.18.0 · active · repository · descriptor JSON · versions
{
"mcpServers": {
"sas-mcp-server": {
"command": "docker",
"args": [
"-v",
"${sas_token_dir}:/app/.sas",
"-e",
"VIYA_ENDPOINT",
"-e",
"SSL_VERIFY",
"-e",
"CLIENT_ID",
"-e",
"COMPUTE_CONTEXT_NAME",
"-e",
"MCP_READ_ONLY",
"-e",
"MCP_APPS",
"-e",
"MCP_STATELESS_HTTP",
"-e",
"VIYA_CLIENT_TIMEOUT",
"ghcr.io/sassoftware/sas-mcp-server:1.18.0",
"app-stdio"
],
"env": {
"VIYA_ENDPOINT": "${VIYA_ENDPOINT}",
"SSL_VERIFY": "true",
"CLIENT_ID": "sas-mcp",
"COMPUTE_CONTEXT_NAME": "SAS Job Execution compute context",
"MCP_READ_ONLY": "false",
"MCP_APPS": "true",
"MCP_STATELESS_HTTP": "false",
"VIYA_CLIENT_TIMEOUT": "300"
}
}
}
}claude mcp add sas-mcp-server -e "VIYA_ENDPOINT=${VIYA_ENDPOINT}" -e "SSL_VERIFY=true" -e "CLIENT_ID=sas-mcp" -e "COMPUTE_CONTEXT_NAME=SAS Job Execution compute context" -e "MCP_READ_ONLY=false" -e "MCP_APPS=true" -e "MCP_STATELESS_HTTP=false" -e "VIYA_CLIENT_TIMEOUT=300" -- docker -v "${sas_token_dir}:/app/.sas" -e VIYA_ENDPOINT -e SSL_VERIFY -e CLIENT_ID -e COMPUTE_CONTEXT_NAME -e MCP_READ_ONLY -e MCP_APPS -e MCP_STATELESS_HTTP -e VIYA_CLIENT_TIMEOUT ghcr.io/sassoftware/sas-mcp-server:1.18.0 app-stdio[mcp_servers.sas-mcp-server]
command = "docker"
args = ["-v", "${sas_token_dir}:/app/.sas", "-e", "VIYA_ENDPOINT", "-e", "SSL_VERIFY", "-e", "CLIENT_ID", "-e", "COMPUTE_CONTEXT_NAME", "-e", "MCP_READ_ONLY", "-e", "MCP_APPS", "-e", "MCP_STATELESS_HTTP", "-e", "VIYA_CLIENT_TIMEOUT", "ghcr.io/sassoftware/sas-mcp-server:1.18.0", "app-stdio"]
env = { "VIYA_ENDPOINT" = "${VIYA_ENDPOINT}", "SSL_VERIFY" = "true", "CLIENT_ID" = "sas-mcp", "COMPUTE_CONTEXT_NAME" = "SAS Job Execution compute context", "MCP_READ_ONLY" = "false", "MCP_APPS" = "true", "MCP_STATELESS_HTTP" = "false", "VIYA_CLIENT_TIMEOUT" = "300" }
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"sas-mcp-server": {
"type": "local",
"command": [
"docker",
"-v",
"{env:sas_token_dir}:/app/.sas",
"-e",
"VIYA_ENDPOINT",
"-e",
"SSL_VERIFY",
"-e",
"CLIENT_ID",
"-e",
"COMPUTE_CONTEXT_NAME",
"-e",
"MCP_READ_ONLY",
"-e",
"MCP_APPS",
"-e",
"MCP_STATELESS_HTTP",
"-e",
"VIYA_CLIENT_TIMEOUT",
"ghcr.io/sassoftware/sas-mcp-server:1.18.0",
"app-stdio"
],
"enabled": true,
"environment": {
"VIYA_ENDPOINT": "{env:VIYA_ENDPOINT}",
"SSL_VERIFY": "true",
"CLIENT_ID": "sas-mcp",
"COMPUTE_CONTEXT_NAME": "SAS Job Execution compute context",
"MCP_READ_ONLY": "false",
"MCP_APPS": "true",
"MCP_STATELESS_HTTP": "false",
"VIYA_CLIENT_TIMEOUT": "300"
}
}
}
}{
"mcpServers": {
"sas-mcp-server": {
"command": "docker",
"args": [
"-v",
"${sas_token_dir}:/app/.sas",
"-e",
"VIYA_ENDPOINT",
"-e",
"SSL_VERIFY",
"-e",
"CLIENT_ID",
"-e",
"COMPUTE_CONTEXT_NAME",
"-e",
"MCP_READ_ONLY",
"-e",
"MCP_APPS",
"-e",
"MCP_STATELESS_HTTP",
"-e",
"VIYA_CLIENT_TIMEOUT",
"ghcr.io/sassoftware/sas-mcp-server:1.18.0",
"app-stdio"
],
"env": {
"VIYA_ENDPOINT": "${VIYA_ENDPOINT}",
"SSL_VERIFY": "true",
"CLIENT_ID": "sas-mcp",
"COMPUTE_CONTEXT_NAME": "SAS Job Execution compute context",
"MCP_READ_ONLY": "false",
"MCP_APPS": "true",
"MCP_STATELESS_HTTP": "false",
"VIYA_CLIENT_TIMEOUT": "300"
}
}
},
"deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=sas-mcp-server&config=eyJjb21tYW5kIjoiZG9ja2VyIiwiYXJncyI6WyItdiIsIiR7c2FzX3Rva2VuX2Rpcn06L2FwcC8uc2FzIiwiLWUiLCJWSVlBX0VORFBPSU5UIiwiLWUiLCJTU0xfVkVSSUZZIiwiLWUiLCJDTElFTlRfSUQiLCItZSIsIkNPTVBVVEVfQ09OVEVYVF9OQU1FIiwiLWUiLCJNQ1BfUkVBRF9PTkxZIiwiLWUiLCJNQ1BfQVBQUyIsIi1lIiwiTUNQX1NUQVRFTEVTU19IVFRQIiwiLWUiLCJWSVlBX0NMSUVOVF9USU1FT1VUIiwiZ2hjci5pby9zYXNzb2Z0d2FyZS9zYXMtbWNwLXNlcnZlcjoxLjE4LjAiLCJhcHAtc3RkaW8iXSwiZW52Ijp7IlZJWUFfRU5EUE9JTlQiOiIke1ZJWUFfRU5EUE9JTlR9IiwiU1NMX1ZFUklGWSI6InRydWUiLCJDTElFTlRfSUQiOiJzYXMtbWNwIiwiQ09NUFVURV9DT05URVhUX05BTUUiOiJTQVMgSm9iIEV4ZWN1dGlvbiBjb21wdXRlIGNvbnRleHQiLCJNQ1BfUkVBRF9PTkxZIjoiZmFsc2UiLCJNQ1BfQVBQUyI6InRydWUiLCJNQ1BfU1RBVEVMRVNTX0hUVFAiOiJmYWxzZSIsIlZJWUFfQ0xJRU5UX1RJTUVPVVQiOiIzMDAifX0%3D"
}{
"servers": {
"sas-mcp-server": {
"type": "stdio",
"command": "docker",
"args": [
"-v",
"${sas_token_dir}:/app/.sas",
"-e",
"VIYA_ENDPOINT",
"-e",
"SSL_VERIFY",
"-e",
"CLIENT_ID",
"-e",
"COMPUTE_CONTEXT_NAME",
"-e",
"MCP_READ_ONLY",
"-e",
"MCP_APPS",
"-e",
"MCP_STATELESS_HTTP",
"-e",
"VIYA_CLIENT_TIMEOUT",
"ghcr.io/sassoftware/sas-mcp-server:1.18.0",
"app-stdio"
],
"env": {
"VIYA_ENDPOINT": "${VIYA_ENDPOINT}",
"SSL_VERIFY": "true",
"CLIENT_ID": "sas-mcp",
"COMPUTE_CONTEXT_NAME": "SAS Job Execution compute context",
"MCP_READ_ONLY": "false",
"MCP_APPS": "true",
"MCP_STATELESS_HTTP": "false",
"VIYA_CLIENT_TIMEOUT": "300"
}
}
}
}{
"mcpServers": {
"sas-mcp-server": {
"command": "docker",
"args": [
"-v",
"${sas_token_dir}:/app/.sas",
"-e",
"VIYA_ENDPOINT",
"-e",
"SSL_VERIFY",
"-e",
"CLIENT_ID",
"-e",
"COMPUTE_CONTEXT_NAME",
"-e",
"MCP_READ_ONLY",
"-e",
"MCP_APPS",
"-e",
"MCP_STATELESS_HTTP",
"-e",
"VIYA_CLIENT_TIMEOUT",
"ghcr.io/sassoftware/sas-mcp-server:1.18.0",
"app-stdio"
],
"env": {
"VIYA_ENDPOINT": "${VIYA_ENDPOINT}",
"SSL_VERIFY": "true",
"CLIENT_ID": "sas-mcp",
"COMPUTE_CONTEXT_NAME": "SAS Job Execution compute context",
"MCP_READ_ONLY": "false",
"MCP_APPS": "true",
"MCP_STATELESS_HTTP": "false",
"VIYA_CLIENT_TIMEOUT": "300"
}
}
}
}extensions:
"sas-mcp-server":
enabled: true
name: "sas-mcp-server"
type: stdio
cmd: "docker"
args:
- "-v"
- "${sas_token_dir}:/app/.sas"
- "-e"
- "VIYA_ENDPOINT"
- "-e"
- "SSL_VERIFY"
- "-e"
- "CLIENT_ID"
- "-e"
- "COMPUTE_CONTEXT_NAME"
- "-e"
- "MCP_READ_ONLY"
- "-e"
- "MCP_APPS"
- "-e"
- "MCP_STATELESS_HTTP"
- "-e"
- "VIYA_CLIENT_TIMEOUT"
- "ghcr.io/sassoftware/sas-mcp-server:1.18.0"
- "app-stdio"
envs:
"VIYA_ENDPOINT": "${VIYA_ENDPOINT}"
"SSL_VERIFY": "true"
"CLIENT_ID": "sas-mcp"
"COMPUTE_CONTEXT_NAME": "SAS Job Execution compute context"
"MCP_READ_ONLY": "false"
"MCP_APPS": "true"
"MCP_STATELESS_HTTP": "false"
"VIYA_CLIENT_TIMEOUT": "300"
timeout: 300
This is a local package: the command runs on your machine.
Not scored: fewer than three checks apply, usually because no remote answered a credential-free probe or the server is a local package.
protocol.modern, protocol.stateless, protocol.transport, protocol.list_ttlno remote answered a protocol handshake (not probed yet, unreachable, or local-only)auth.prm, auth.as_metadata, auth.cimdno remote uses OAuthauth.secret_in_urlno templated URLtools.descriptions, tools.description_length, tools.schemas, tools.annotations, tools.directory_hints, tools.token_cost, tools.api_dumptool list unknown (behind auth, not probed, or empty)stability.changes, stability.rug_pulltool list unknowndeps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI packageNo tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.
Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.
+repository +namespace-matches-repo ~liveness-unmeasured +updated-20d-ago -unpinned-packages(1)
Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.
| package | registry | version | runtime | secrets |
|---|---|---|---|---|
ghcr.io/sassoftware/sas-mcp-server:1.18.0 | oci | unpinned | docker |
No tools observed. Local packages are never executed by the registry.
Schemas: list_tools.
{
"name": "io.github.sassoftware/sas-mcp-server",
"title": "SAS Viya",
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
"version": "1.18.0",
"packages": [
{
"transport": {
"type": "stdio"
},
"identifier": "ghcr.io/sassoftware/sas-mcp-server:1.18.0",
"runtimeHint": "docker",
"registryType": "oci",
"packageArguments": [
{
"type": "positional",
"value": "app-stdio"
}
],
"runtimeArguments": [
{
"name": "-v",
"type": "named",
"value": "{sas_token_dir}:/app/.sas",
"variables": {
"sas_token_dir": {
"format": "filepath",
"isRequired": true,
"description": "The .sas directory in your home directory, written by `sas-viya auth loginCode`. On Windows, C:\\Users\\<you>\\.sas."
}
},
"isRequired": true,
"description": "Mount the SAS Viya CLI token cache into the container. The server reads ~/.sas/credentials.json, and $HOME is /app inside the image, so the .sas directory has to land at /app/.sas."
}
],
"environmentVariables": [
{
"name": "VIYA_ENDPOINT",
"format": "string",
"isRequired": true,
"description": "Base URL of your SAS Viya environment, e.g. https://viya.example.com. No trailing slash."
},
{
"name": "SSL_VERIFY",
"format": "string",
"default": "true",
"description": "Set false only for a self-signed Viya certificate. Disables verification for the whole process, so prefer a trusted certificate."
},
{
"name": "CLIENT_ID",
"format": "string",
"default": "sas-mcp",
"description": "SASLogon OAuth client id used for the token refresh exchange."
},
{
"name": "COMPUTE_CONTEXT_NAME",
"format": "string",
"default": "SAS Job Execution compute context",
"description": "Compute context that backs SAS code execution."
},
{
"name": "MCP_TIERS",
"format": "string",
"description": "Expose only some tool tiers, e.g. 0-4 or 0,1,7. Empty exposes all 92 tools. Tiers: 0 Compute, 1 Data Discovery, 2 Data Operations, 3 Reports, 4 Batch Jobs, 5 AutoML, 6 Models, 7 Decisioning, 8 Workbench, 9 Business Glossary."
},
{
"name": "MCP_READ_ONLY",
"format": "string",
"default": "false",
"description": "Expose only tools that neither change server-side state nor cause server-side work (51 of 92). Composes with MCP_TIERS."
},
{
"name": "MCP_APPS",
"format": "string",
"default": "true",
"description": "Register interactive views (MCP Apps) for the data, SAS log and glossary tools. Additive: text-only clients are unaffected. Set false to register none."
},
{
"name": "MCP_STATELESS_HTTP",
"format": "string",
"default": "false",
"description": "Serve HTTP requests without an MCP session. Needed by clients that speak only the sessionless 2026-07-28 protocol revision (claude.ai custom connectors); the legacy handshake works either way."
},
{
"name": "VIYA_CLIENT_TIMEOUT",
"format": "number",
"default": "300",
"description": "Timeout in seconds for every SAS Viya REST call the tools make."
}
]
}
],
"repository": {
"url": "https://github.com/sassoftware/sas-mcp-server",
"source": "github"
},
"description": "Execute SAS code and query Compute, CAS, and model APIs on SAS Viya via OAuth 2.0."
}