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
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม 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": "ใส่ค่าของคุณ",
"MAPI_KEY": "ใส่ค่าของคุณ",
"MAPI_SECRET": "ใส่ค่าของคุณ"
}
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add altr --env ORG_ID='ใส่ค่าของคุณ' --env MAPI_KEY='ใส่ค่าของคุณ' --env MAPI_SECRET='ใส่ค่าของคุณ' -- uvx altr-mcpเติมค่าที่เว้นว่างไว้ก่อนรัน
วางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"altr": {
"command": "uvx",
"args": [
"altr-mcp"
],
"env": {
"ORG_ID": "ใส่ค่าของคุณ",
"MAPI_KEY": "ใส่ค่าของคุณ",
"MAPI_SECRET": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"altr": {
"type": "stdio",
"command": "uvx",
"args": [
"altr-mcp"
],
"env": {
"ORG_ID": "ใส่ค่าของคุณ",
"MAPI_KEY": "ใส่ค่าของคุณ",
"MAPI_SECRET": "ใส่ค่าของคุณ"
}
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 6 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub altrsoftware ซึ่งเป็นเจ้าของ repo
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 1 จาก 1 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
ต้องใส่ค่าเหล่านี้: ORG_ID, MAPI_KEY, MAPI_SECRET
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด – และส่งรุ่นล่าสุด (0.9.0) เข้า registry 4 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี Spec Driven Development, Remote Desktop Commander, yontu
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
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.
Türkçe yazı denetimi: TDK kuralları, yapay zekâ izleri, metin türüne göre üslup.
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ 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
ตัดมาแค่ช่วงต้น อ่านต่อใน repo