Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
MCP server for ALTR data security: databases, tags, policies, classification, access, audits
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
ORG_ID, MAPI_KEY, MAPI_SECRET「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"altr": {
"command": "uvx",
"args": [
"altr-mcp"
],
"env": {
"ORG_ID": "your-value",
"MAPI_KEY": "your-value",
"MAPI_SECRET": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add altr --env ORG_ID=your-value --env MAPI_KEY=your-value --env MAPI_SECRET=your-value -- uvx altr-mcp動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"altr": {
"command": "uvx",
"args": [
"altr-mcp"
],
"env": {
"ORG_ID": "your-value",
"MAPI_KEY": "your-value",
"MAPI_SECRET": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"altr": {
"type": "stdio",
"command": "uvx",
"args": [
"altr-mcp"
],
"env": {
"ORG_ID": "your-value",
"MAPI_KEY": "your-value",
"MAPI_SECRET": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月6日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント altrsoftware で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:ORG_ID, MAPI_KEY, MAPI_SECRET
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.9.0)がレジストリに届いたのは4 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, HotCodePush
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Manage over-the-air (OTA) updates for React Native, Expo, Capacitor and Cordova apps.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
ALTR provides tag-based data masking, access governance, and classification for Snowflake, Databricks, and OLTP databases. This MCP server enables AI assistants (Claude, Cursor, and other MCP clients) to manage data security on the ALTR platform, covering database connections, tag masking, policies, classification, access management, audits, telemetry, and sidecar configuration.
New to ALTR? See the ALTR documentation for an overview of the platform, concepts, and supported data sources.
All tools return structured {success, data, error} responses and can run over stdio, SSE, or streamable-http transports.
pip install altr-mcp
Or run directly with uvx (no install required):
uvx altr-mcp
uvxis part of the uv Python package manager. Install it withpip install uvor see the uv installation guide.
export ORG_ID=your-org-id
export MAPI_KEY=your-api-key export MAPI_SECRET=your-api-secret
env block.get_databasesget_tagsget_rolesIf these return data, your setup is working.
You need three values from the ALTR platform to configure this server. See Manage API keys for the full reference.
| Credential | Where to find it |
|---|---|
ORG_ID | In the ALTR console: Settings > Preferences > Organization — copy the value from "ALTR Organization ID" |
MAPI_KEY | In the ALTR console: Settings > Preferences > API > Add New — give it a description, then copy the key |
MAPI_SECRET | Shown once when you create the API key above — copy and store it securely |
Set the following environment variables before starting the server:
| Variable | Required | Description |
|---|---|---|
ORG_ID | Yes | ALTR organization ID |
MAPI_KEY | Yes | ALTR management API key |
MAPI_SECRET | Yes | ALTR management API secret |
MCP_TRANSPORT | No | Transport protocol: stdio (default), sse, or streamable-http |
MCP_HOST | No | Bind address for HTTP transports (default: 127.0.0.1). See Running over HTTP |
MCP_PORT | No | Port for HTTP transports (default: 8000) |
MCP_AUTH_TOKEN | No | Bearer token every HTTP request must carry: at least 32 characters, letters, digits and -._~+/, with = only at the end. Required when MCP_HOST is not a loopback address |
MCP_ALLOW_UNAUTHENTICATED | No | Set true to listen beyond loopback without MCP_AUTH_TOKEN, when a gateway in front authenticates every request (default: false) |
RESTRICTED_TOOLS | No | Comma-separated tool names to hide from clients |
LOG_FORMAT | No | Log output format: console (default) or json |
LOG_LEVEL | No | Log level (default: INFO) |
MAX_RETRIES | No | Attempts per API call before giving up (default: 3, minimum 1) |
DISABLE_RETRY | No | Set true to disable retries entirely (default: false) |
REQUEST_TIMEOUT | No | Per-request timeout in seconds (default: 30) |
MAX_RETRY_AFTER | No | Ceiling in seconds on a server-sent Retry-After (default: 60) |
MAX_RETRIES counts total attempts, not retries on top of the first, so 1 disables retrying without disabling the retry path. Backoff is exponential with jitter; a Retry-After response header overrides it, clamped to MAX_RETRY_AFTER so a server cannot park a call indefinitely.
Every tool call is logged to stderr at INFO with its arguments, which is what makes a session traceable. An argument is redacted when its value is a credential or user-supplied free text — values, text, comment, comments, attestation, justification, statement_text_contains, filters, filter_tree, content, content_base64, connection_string, connection_properties, the bare credential names (password, secret, credentials, passphrase, private_key, api_key, auth_token, access_key), and anything ending _password, _secret, _credential, _credentials, _private_key or _passphrase. Identifiers, enums and pagination cursors are logged in full.
An argument can also reach a log by travelling in a request URL, which redaction keyed on argument names cannot see. httpx's per-request line is therefore held at WARNING, so it does not appear at the default INFO.
Dictionary keys survive, so a line reads values={'ssn': ' ', 'email': ' '}: you keep which fields were sent and lose the data. Tokens are not redacted — a token exists to be handled freely, and ALTR's own Shield audit log is keyed by token.
Redaction covers the invocation line, tracebacks, and the argument-coercion error returned to the caller.
LOG_FORMAT applies to dependency output as well as this server's own — under json, every line on the stream is a JSON object, and dependency lines carry the correlation_id of the tool call they occurred inside. See Logging.
Upgrading from 0.6.0 or earlier? Arguments were not redacted before
0.7.0. Treat any credential passed as a tool argument as exposed in your
logs and rotate it — in practice
database_passwordand
connection_string. Those logs may also hold plaintext passed to the
tokenize tools, so review who can read them and how long they are kept. Log
output also changed shape; see the 0.7.0 entry in the
CHANGELOG.
Every ALTR service endpoint can be pointed elsewhere, which is useful against a non-production ALTR environment. All are optional — leave them unset in normal use.
The eight per-service endpoints are derived from your ORG_ID as https:// . .live.altr.com, five of them with a path appended (a version, or /v1/dam-alerting). An override replaces the whole value, so it must include that path where the default has one — see the table.
| Variable | Default |
|---|---|
ALTR_API_BASE_URL | https://api.live.altr.com |
ALTR_ALTRNET_BASE_URL | https://altrnet.live.altr.com |
ALTR_CLASSIFICATION_BASE_URL | https:// .classification.live.altr.com |
ALTR_SC_CONTROL_BASE_URL | https:// .sc-control.live.altr.com |
ALTR_SERVICE_USER_BASE_URL | https:// .service-user.live.altr.com |
ALTR_AUDIT_REPORT_BASE_URL | https:// .audit-report.live.altr.com/v1 |
ALTR_VAULT_BASE_URL | https:// .vault.live.altr.com/api/v2 |
ALTR_CRITICAL_BASE_URL | https:// .critical.live.altr.com/v2 |
ALTR_KMA_BASE_URL | https:// .kma.live.altr.com/v1 |
ALTR_DAM_ALERTING_BASE_URL | https:// .dam-alerting.live.altr.com/v1/dam-alerting |
Use RESTRICTED_TOOLS to hide specific tools from MCP clients. Restricted tools are removed from the tool list and blocked if called directly.
Names must match the registered tool name exactly. An entry that matches nothing restricts nothing, and is logged as a warning the first time a client lists tools. Note that 11 tools were renamed from delete_* to disconnect_* in 0.4.0.
For example, to give a team read-only access without any destructive operations:
RESTRICTED_TOOLS=disconnect_database,delete_policy,delete_rule,disconnect_tag,disconnect_tag_by_details,delete_classifier,delete_collection,disconnect_sc_repo,disconnect_sc_sidecar
Or in the Claude Desktop config:
{
"mcpServers": { "altr": { "command": "uvx", "args": ["altr-mcp"], "env": { "ORG_ID": "your-org-id", "MAPI_KEY": "your-api-key", "MAPI_SECRET": "your-api-secret", "RESTRICTED_TOOLS": "disconnect_database,delete_policy,delete_rule,disconnect_tag" } } } }
This is an operator-level safety net — it prevents accidental or unwanted tool usage but is not a substitute for proper API key permissions.
With the default stdio transport, your AI client starts the server as its own subprocess, so nothing else can reach it. With MCP_TRANSPORT=sse or streamable-http, the server listens on a port, and every tool call runs with your organization's API key. So:
MCP_HOST defaults to 127.0.0.1, so only clients on the same machine can connect, and no token is needed. Without a token, the server also rejects any request whose Host or Origin header is not a loopback name (localhost, 127.0.0.1 or [::1]), so a web page open in a local browser cannot use it. Pages served from this machine are trusted, whatever their port, so local tools such as the MCP Inspector keep working.MCP_HOST (for example 0.0.0.0) and MCP_AUTH_TOKEN. The server refuses to start with a non-loopback MCP_HOST and no token. Clients send the token as Authorization: Bearer , and a request without it gets 401. The token may contain only letters, digits and -._~+/, with = only at the end. A reverse proxy on the same machine should also use a token, since it sends its own Host header.MCP_ALLOW_UNAUTHENTICATED=true instead of a token. This also turns off the Host and Origin check on a loopback address, so a gateway on the same machine that passes those headers through keeps working. The server logs a warning at startup, since it then accepts any request that reaches it.Generate a token with:
python3 -c "import secrets; print(secrets.token_urlsafe(32))"
For exam
冒頭だけを表示しています。続きはリポジトリで読めます