Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Unofficial MCP server for the Snipe-IT REST API: assets, users, licenses, guarded writes.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
SNIPEIT_API_BASE, SNIPEIT_API_TOKEN, SNIPEIT_CONFIRM_WRITES, SNIPEIT_TIMEOUT_MS, SNIPEIT_LOG_LEVEL, SNIPEIT_MAX_RESULT_BYTES, SNIPEIT_CALL_DEADLINE_MS, SNIPEIT_REDACT_PII, SNIPEIT_REDACT_SECRETS, SNIPEIT_READ_ONLY, SNIPEIT_REQUIRE_PREVIEW「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます
{
"mcpServers": {
"the-real-snipeit": {
"command": "npx",
"args": [
"-y",
"the-real-snipeit-mcp"
],
"env": {
"SNIPEIT_API_BASE": "your-value",
"SNIPEIT_API_TOKEN": "your-value",
"SNIPEIT_CONFIRM_WRITES": "your-value",
"SNIPEIT_TIMEOUT_MS": "your-value",
"SNIPEIT_LOG_LEVEL": "your-value",
"SNIPEIT_MAX_RESULT_BYTES": "your-value",
"SNIPEIT_CALL_DEADLINE_MS": "your-value",
"SNIPEIT_REDACT_PII": "your-value",
"SNIPEIT_REDACT_SECRETS": "your-value",
"SNIPEIT_READ_ONLY": "your-value",
"SNIPEIT_REQUIRE_PREVIEW": "your-value"
}
}
}
}ターミナルでこれを実行します
claude mcp add the-real-snipeit --env SNIPEIT_API_BASE=your-value --env SNIPEIT_API_TOKEN=your-value --env SNIPEIT_CONFIRM_WRITES=your-value --env SNIPEIT_TIMEOUT_MS=your-value --env SNIPEIT_LOG_LEVEL=your-value --env SNIPEIT_MAX_RESULT_BYTES=your-value --env SNIPEIT_CALL_DEADLINE_MS=your-value --env SNIPEIT_REDACT_PII=your-value --env SNIPEIT_REDACT_SECRETS=your-value --env SNIPEIT_READ_ONLY=your-value --env SNIPEIT_REQUIRE_PREVIEW=your-value -- npx -y the-real-snipeit-mcp動かす前に、空欄の値を入力してください。
プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"the-real-snipeit": {
"command": "npx",
"args": [
"-y",
"the-real-snipeit-mcp"
],
"env": {
"SNIPEIT_API_BASE": "your-value",
"SNIPEIT_API_TOKEN": "your-value",
"SNIPEIT_CONFIRM_WRITES": "your-value",
"SNIPEIT_TIMEOUT_MS": "your-value",
"SNIPEIT_LOG_LEVEL": "your-value",
"SNIPEIT_MAX_RESULT_BYTES": "your-value",
"SNIPEIT_CALL_DEADLINE_MS": "your-value",
"SNIPEIT_REDACT_PII": "your-value",
"SNIPEIT_REDACT_SECRETS": "your-value",
"SNIPEIT_READ_ONLY": "your-value",
"SNIPEIT_REQUIRE_PREVIEW": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"the-real-snipeit": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"the-real-snipeit-mcp"
],
"env": {
"SNIPEIT_API_BASE": "your-value",
"SNIPEIT_API_TOKEN": "your-value",
"SNIPEIT_CONFIRM_WRITES": "your-value",
"SNIPEIT_TIMEOUT_MS": "your-value",
"SNIPEIT_LOG_LEVEL": "your-value",
"SNIPEIT_MAX_RESULT_BYTES": "your-value",
"SNIPEIT_CALL_DEADLINE_MS": "your-value",
"SNIPEIT_REDACT_PII": "your-value",
"SNIPEIT_REDACT_SECRETS": "your-value",
"SNIPEIT_READ_ONLY": "your-value",
"SNIPEIT_REQUIRE_PREVIEW": "your-value"
}
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
SNIPEIT_CONFIRM_WRITES envSNIPEIT_TIMEOUT_MS envSNIPEIT_LOG_LEVEL envSNIPEIT_MAX_RESULT_BYTES envSNIPEIT_CALL_DEADLINE_MS envSNIPEIT_REDACT_PII envSNIPEIT_REDACT_SECRETS envSNIPEIT_READ_ONLY envSNIPEIT_REQUIRE_PREVIEW envこの設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月8日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント mguttmann で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
これはパソコンで動くため、インターネット上のエンドポイントはありません
パソコンで動き、代わりにローカルの設定を使います
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
入力が必要なもの:SNIPEIT_API_BASE, SNIPEIT_API_TOKEN
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
GitHubリポジトリの最終更新は–、最新バージョン(0.2.2)がレジストリに届いたのは11 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, Thalovant MCP
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ 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.
Connect MCP clients to Thalovant control-plane and hub runtime APIs over stdio or Streamable HTTP.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
An unofficial MCP server for the Snipe-IT REST API: one generated tool for every operation in the vendored Snipe-IT OpenAPI 3.1 spec (read + write), hand-written wrappers for common workflows, stdio transport.
Unofficial, not affiliated with Snipe-IT/Grokability. This project is not affiliated with, endorsed by, sponsored by or supported by Grokability, Inc. or the Snipe-IT project. "Snipe-IT" is a trademark of its owner. The vendored API description and its license situation are described in NOTICE.
Three tool layers (183 tools):
snipeit_*): friendlier UX for common workflowssnipeit_gen_*): one per operation of the vendored spec (vendor/snipe-it-rest-api.json, Snipe-IT 8.2.0)SNIPEIT_API_BASEPlus 3 resources and 3 prompts. The counts are held by tests/unit/docsFacts.test.ts.
SECURITY.md).engines in package.json); CI tests Node 22, 24 and 26.CHANGELOG.md.CONTRIBUTING.md.Requires Node.js 22.12 or newer. The server needs SNIPEIT_API_BASE (your instance, including /api/v1) and SNIPEIT_API_TOKEN; all other variables are optional (see Configuration). Only the npm package the-real-snipeit-mcp and the MCP Registry name io.github.mguttmann/the-real-snipeit-mcp are this project.
npx fetches and runs the package; no clone or build is needed. Attach it to Claude Code (type the token in your shell, never into a chat):
claude mcp add snipeit \
-e SNIPEIT_API_BASE=https://snipe-it.example.com/api/v1 \ -e SNIPEIT_API_TOKEN= \ -- npx -y the-real-snipeit-mcp
Any other stdio host takes the same command in its JSON configuration (Claude Desktop: claude_desktop_config.json):
{
"mcpServers": { "snipeit": { "command": "npx", "args": ["-y", "the-real-snipeit-mcp"], "env": { "SNIPEIT_API_BASE": "https://snipe-it.example.com/api/v1", "SNIPEIT_API_TOKEN": " " } } } }
A configuration file with these values holds the token: keep it readable for your user only and out of version control. the-real-snipeit-mcp@ pins a version.
npm install -g the-real-snipeit-mcp
The command is the-real-snipeit-mcp; use it as "command" in the host configuration above (without args).
git clone https://github.com/mguttmann/the-real-snipeit-mcp.git
cd the-real-snipeit-mcp npm ci cp .env.example .env
npm run build # prebuild runs lint, typecheck and the unit tests first node --env-file=.env dist/index.js
npm run inspector opens the MCP Inspector against the built server.
For an unattended host, install an exact version from a committed lockfile, without install scripts and without dev dependencies, and check the registry signatures and provenance attestations:
mkdir snipeit-mcp && cd snipeit-mcp
npm init -y npm install --save-exact --ignore-scripts the-real-snipeit-mcp@ # once; commit package.json and package-lock.json
npm ci --omit=dev --ignore-scripts npm audit signatures node --env-file=/path/to/.env node_modules/the-real-snipeit-mcp/dist/index.js
Each release on GitHub Releases carries the npm tarball, a CycloneDX SBOM and SHA256SUMS; releases published by the release workflow carry an npm provenance statement and a GitHub build provenance attestation.
Each stable release is listed in the official MCP Registry as io.github.mguttmann/the-real-snipeit-mcp (the npm package, with its environment variables). glama.json names the maintainer of the Glama listing.
| Variable | Default | Description | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
SNIPEIT_API_TOKEN | (required) | Snipe-IT Personal API Token (JWT) | |||||||||||
SNIPEIT_API_BASE | https://snipe-it.example.com/api/v1 | API base URL. The default is an RFC 2606 placeholder; set your instance. The server starts with any valid URL but logs a warning when the placeholder is in use, when http goes to a non-loopback host (cleartext token), for other schemes, for credentials in the URL and for a query or fragment | |||||||||||
SNIPEIT_CONFIRM_WRITES | true | If on (default), destructive tools require confirm: "YES". Only false, 0, no or off (any case) disable the guard; empty or unrecognised values keep it on and log a warning. The effective state is logged to stderr at startup | |||||||||||
SNIPEIT_TIMEOUT_MS | 30000 | Timeout in ms per attempt (positive integer), covering the response headers and the full body read | |||||||||||
SNIPEIT_LOG_LEVEL | info | debug \ | info \ | warn \ | error | ||||||||
SNIPEIT_MAX_RESULT_BYTES | 1048576 (1 MiB) | Cap for one tool result (serialized JSON, bytes); minimum 65536. Values above 8 MiB log a warning: TypeScript SDK clients read at most 10 MiB per message. Larger results are shortened to valid JSON with a truncation marker (see Large and binary results). One HTTP response body is never buffered beyond the larger of 16 MiB and 4 times this value. | |||||||||||
SNIPEIT_CALL_DEADLINE_MS | 0 (none) | Overall deadline for one tool call in ms, across retries, backoffs and all: true pagination; 0 disables it. A call past the deadline ends with a DEADLINE_EXCEEDED tool error; all: true returns the rows collected so far with truncated: true and next_offset | |||||||||||
SNIPEIT_REDACT_PII | false | Mask personal data in tool results and resource reads with (redacted) (not in error texts or write previews): email, employee_num(ber), phone, mobile, address, address2, username, first_name, last_name at any depth, and name of objects that describe a person. Asset, model and location names stay. Accepts true/false (also 1/0, yes/no, on/off); an unrecognised value turns it on and logs a warning | |||||||||||
SNIPEIT_REDACT_SECRETS | false | Mask secrets in tool results and resources with (redacted): the value of every key matching `password\ | secret\ | token\ | api[_-]?key at any depth, and the value of every custom_fields entry (object or array form) whose display name or database column (_snipeit_*, also as a flat key in write responses) matches passw\ | kennw\ | secret\ | token\ | key\ | recovery\ | bitlocker\ | pin\ | laps (any case; broad on purpose, so "Keyboard layout" is masked too); also old and new of every log_meta entry (action log, /reports/activity) and the default_value of every custom field definition whose name or column matches either rule. Null and empty values stay. Error texts that echo such a JSON field are masked as well. Same accepted values as SNIPEIT_REDACT_PII`; an unrecognised value turns it on and logs a warning. Write tools always refuse a body that contains the placeholder (see Write safety) |
SNIPEIT_READ_ONLY | false | Refuse every write at runtime with a READ_ONLY tool error; all tools stay registered and reads work. Same accepted values as SNIPEIT_REDACT_PII; an unrecognised value turns it on | |||||||||||
SNIPEIT_REQUIRE_PREVIEW | false | While the write guard is on, confirm: "YES" executes only after a preview of the identical request in the last 10 minutes, once per preview. Off: confirm: "YES" executes in the first call. Same accepted values as SNIPEIT_REDACT_PII |
Variables come from the environment, from node --env-file= , or from a .env in the working directory (or DOTENV_CONFIG_PATH), which never overrides a variable that is already set. The names (never the values) of the variables a .env added are logged to stderr at startup.
| Tool | Endpoint | Annotations |
|---|---|---|
snipeit_me | GET /users/me | readOnly |
| Tool | Endpoint | Annotations |
|---|---|---|
snipeit_list_hardware | GET /hardware (paginated, common filters) | readOnly |
snipeit_search_hardware | GET /hardware?search={query} (convenience) | readOnly |
snipeit_get_hardware_by_id | GET /hardware/{id} | readOnly |
snipeit_get_hardware_by_tag | GET /hardware/bytag/{tag} | readOnly |
snipeit_get_hardware_by_serial | GET /hardware/byserial/{serial} | readOnly |
snipeit_create_hardware | POST /hardware | writeOnce |
snipeit_update_hardware | PATCH /hardware/{id} | writeIdempotent |
snipeit_delete_hardware | DELETE /hardware/{id} (soft delete; snipeit_gen_hardwareidrestore restores) | writeIdempotent |
snipeit_checkout_hardware | POST /hardware/{id}/checkout (user/location/asset) | writeOnce |
snipeit_checkin_hardware | POST /hardware/{id}/checkin | writeOnce |
snipeit_audit_hardware | POST /hardware/audit | writeOnce |
snipeit_list_audit_due | GET /hardware/audit/due | readOnly |
snipeit_list_audit_overdue | GET /hardware/audit/overdue | readOnly |
| Tool | Endpoint | Annotations |
|---|---|---|
snipeit_list_users | GET /users | readOnly |
snipeit_get_user | GET /users/{id} | readOnly |
snipeit_get_user_assets | GET /users/{id}/assets | readOnly |
snipeit_get_user_accessories | GET /users/{id}/accessories | readOnly |
snipeit_get_user_licenses | GET /users/{id}/licenses | readOnly |
| Tool | Endpoint | Annotations |
|---|---|---|
snipeit_list_licenses | GET /licenses | readOnly |
snipeit_get_license_seats | GET /licenses/{id}/seats | readOnly |
snipeit_checkout_license_seat | PUT /licenses/{license_id}/seats/{seat_id} | writeIdempotent |
| Tool | Endpoint | Annotations |
|---|---|---|
snipeit_list_accessories | GET /accessories | readOnly |
snipeit_checkout_accessory | POST /accessories/{id}/checkout | writeOnce |
snipeit_checkin_accessory | POST /accessories/{id}/checkin (pivot-id) | writeOnce |
snipeit_list_consumables | GET /consumables | readOnly |
snipeit_checkout_consumable | POST /consumables/{id}/checkout | writeOnce |
snipeit_list_components | GET /components | readOnly |
snipeit_checkout_component | POST /components/{id}/checkout (to asset) | writeOnce |
snipeit_checkin_component | POST /components/{id}/checkin (pivot-id) | writeOnce |
| Tool | Endpoint | Annotations |
|---|---|---|
snipeit_list_locations | GET /locations | readOnly |
snipeit_get_location | GET /locations/{id} | readOnly |
snipeit_list_statuslabels | GET /statuslabels | readOnly |
snipeit_get_statuslabel_assets | GET /statuslabels/{id}/assetlist | readOnly |
snipeit_list_maintenances | GET /maintenances | readOnly |
snipeit_create_maintenance | POST /maintenances | writeOnce |
| Tool | Behavior | Annotations
冒頭だけを表示しています。続きはリポジトリで読めます