k-nkmt/basic_sas_mcp
If you are the rightful owner of basic_sas_mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
An MCP server based on saspy for executing SAS code and managing sessions.
Basic SAS MCP Server
saspyをベースとしたMCPサーバーです。
saspyによりメタデータの取得やコードの実行等を行います。
SASによるMCPクライアント・ホスト等のプログラムはこちら
セッション管理により、前のツールによる処理に続いて操作が可能です。
また、出力について長さや形式などを調整し、画像の出力にも対応します。
以下の機能を設定しています。
tool
- submit — SAS コードを実行して結果を返す
- restart — SAS セッションを再起動
- assigned_librefs — 割り当てられたライブラリ参照の一覧を返す
- list_tables — 指定ライブラリ内のテーブル一覧を返す
- columnInfo_t — 指定テーブルのカラム情報を返す(ツール)
- head — 指定テーブルの先頭行を返す
- print — 指定テーブルの全レコードを表示(ラベル付き)
resource
- cat — ファイルの内容を返す
- columnInfo_r — 指定テーブルのカラム情報を返す
通信形式は個人レベルなら使いやすいstdioとしていますが、必要があれば適宜変更してください。
toolやresourceでは基本的にはsaspyの関数やメソッド、引数も同じ名前を使用しているので、必要があればsaspyの仕様も参照してください。
実行環境
- pythonとパッケージ・プロジェクト管理にuvを使用します。
https://docs.astral.sh/uv/ や各種資料を参考にuvをインストールしておいてください。 - saspyの設定が必要になります。
https://sassoftware.github.io/saspy/configuration.html.
ホームディレクトリに共通のsascfg_personal.pyを準備しておく等の対応を行なってください。
利用の手順
-
プログラムのダウンロード gitからクローン、またはzipでダウンロードしてください。
-
依存関係のインストール
uv sync
で依存関係をインストールしてください。 -
MCPサーバーの設定 VSCodeの場合、ワークスペース用の設定ファイル(.vscode/mcp.json)を開き、
"--directory",
の次の行をこのフォルダのパスに変更すると、このワークスペースでは有効になります。 詳細やその他のアプリケーション・サービスについては、それらの仕様を確認してください。 -
必要に応じてtoolの追加などカスタムしてください。 また環境変数に
SAS_AUTOEXEC
,SAS_CFGNAME
を指定すると、saspyのセッションの引数として、使用される設定や起動時に自動で実行されるコードを指定できます。
注意
特にsubmitの機能は、生成されたコードがそのまま実行されることになります。
データやファイルの削除等、任意の操作ができてしまうので、利用を推奨はしません。
実行する場合にはどのようなコードが実行されるのか、よく確認して許可するようにしてください。
また確実に決まった動作をさせるためにも、一部パラメータのみを渡すような形でtoolやresourceを作成して利用することをおすすめします。
ライセンス
いわゆるフェアソースと呼ばれるFSL-1.1-MITとしています。
2027/10 以降にはMITライセンスとなりますが、それまでの商用利用は制限されます。
個人利用や非営利の教育・研究には自由に利用できますが、営利目的の利用は試用や評価を除き不可となります。
個人開発の継続のため、制限へのご理解・ご協力をお願いします。
期間内での営利目的の利用や、利用可能な範囲かわからない場合などはお問い合わせください。
An MCP server based on saspy.
Uses saspy to get metadata and run SAS code.
MCP client/host programs in SAS are here.
Session management lets you continue operations across tools.
Output length and format are optimized by truncating long results and formatting tables for readability; image output (e.g., PNG format) is supported for visualizations and plots.
Features:
tool
- submit — Run SAS code and return results
- restart — Restart SAS session
- assigned_librefs — List assigned library refs
- list_tables — List tables in a library
- columnInfo_t — Column info for a table (tool)
- head — Return top rows of a table
- print — Print all records (with labels)
resource
- cat — Return file contents
- columnInfo_r — Column info for a table
Transport uses stdio by default (simple for personal use).
Tool/resource names mostly match saspy functions/args. See saspy docs as needed.
Environment
- Python with uv for package/project management: https://docs.astral.sh/uv/
- saspy configuration is required: https://sassoftware.github.io/saspy/configuration.html
Prepare a shared sascfg_personal.py in your home directory, etc.
How to use
- Download
Clone the repo or download as zip. - Install dependencies
Run: uv sync - Configure MCP server
If using VSCode, open the workspace configuration file (.vscode/mcp.json) and change the path after"--directory",
to this folder. This will activate the configuration for the workspace.
For details or other applications/services, refer to their respective documentation. - Customize as needed
Add new tools or modify existing ones as required.
You can also set the environment variablesSAS_AUTOEXEC
andSAS_CFGNAME
to specify configuration and auto-execution code for the saspy session.
Notes
The submit tool executes generated code as-is.
It can perform any operation (e.g., delete files/data). Use with caution.
Review code before allowing execution.
For safer, deterministic behavior, create tools/resources that accept only specific parameters.
License
Licensed under FSL-1.1-MIT (Fair Source).
Becomes MIT after 2027/10; commercial use is restricted until then.
Personal and non-profit education/research use is free. Commercial use (beyond trial/evaluation) is not allowed during the period.
Contact us for commercial use within the period or if unsure about permitted usage.