About Snipe-IT (Mojood Connect)
An MCP server for Snipe-IT users to look up assets, assignments, audits, and stock through Claude, then check assets out or in with confirmation. It connects to existing Snipe-IT instances and includes sample data for a fictional company.
Key features
- 01Find assets by tag, serial, or holder
- 02View assets assigned to a person
- 03Review audits, loans, and warranties
- 04Check low-stock items
- 05Check assets out or in after confirmation
Use cases
- 01Find who holds an asset and where it is
- 02Identify overdue audits or loans due soon
- 03Review assets with expiring warranties
- 04Check out equipment to an employee with confirmation
MCP support
The MCP server exposes asset lookup, audit and stock information, and checkout and check-in operations to MCP clients through the Snipe-IT REST API. Changes require a one-time confirmation code and use the API token owner's permissions.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
uvx mojood-snipeit-mcpSNIPEIT_URLYour Snipe-IT addressSNIPEIT_TOKENSecretA Snipe-IT API tokenSNIPEIT_SAMPLE0 for real data (1 labels answers SAMPLE)Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMESnipe-IT MCP server
Ask Claude about your assets in plain words: who has laptop LAP-0142, what needs auditing this month, what's running low. Check assets out and in from the same chat, with a confirmation step before anything changes.
Built by Mojood Connect as a working demo for Snipe-IT. It runs against any Snipe-IT through its REST API. This repository includes a local Snipe-IT with SAMPLE data for a made-up company, Harbor Trading, so you can try it without touching a real instance.
Tools
| Tool | What it does | Changes anything? |
|---|---|---|
find_asset | Find assets by tag, serial, model or holder: status, who has it, where, next audit, warranty end | No |
whats_assigned_to | Everything checked out to one person; asks which person when a name matches several | No |
needs_attention | Audits overdue and due, loans overdue and due back soon, warranties ending, assets out of service | No |
low_stock | Consumables and accessories below their minimum quantity | No |
check_out_asset | Assign an asset to a person | Yes, after confirmation |
check_in_asset | Return an asset from whoever holds it | Yes, after confirmation |
How changes are made safe. A call to check_out_asset or check_in_asset without a confirmation changes
nothing: it returns a plain summary ("Check out LAP-0160 (ThinkPad T14 Gen 5) to Sara Al-Qahtani, Finance, Dammam
HQ.") and a one-time code. The change happens only when the same request comes back with that code, within 10
minutes. A code works once, and only for the request it was issued for. The server's instructions tell the model to
show the summary and wait for the user's yes. Every change goes through Snipe-IT's own checkout and check-in
endpoints with the note "via Claude (Mojood Connect demo)", so it appears in the asset's history like any change a
person makes.
The server acts as the user who owns the API token, with that user's Snipe-IT permissions.
Try it locally
Needs Docker (with Compose), uv and Python 3.13.
scripts/reset.sh # local Snipe-IT on http://localhost:8088, filled with the SAMPLE company
uv run --env-file .env snipeit-mcp # MCP server on http://127.0.0.1:8002/mcp (Streamable HTTP)
scripts/reset.sh generates every password and the API token itself and keeps them in the git-ignored files
docker/.env and .env; nothing is printed. Run it again any time to start over from fresh SAMPLE data. Everything
listens on 127.0.0.1 only. scripts/up.sh starts it again after a restart without touching the data.
Claude Desktop: add this to claude_desktop_config.json (Settings › Developer), with the path to this folder:
{
"mcpServers": {
"snipe-it": {
"command": "uv",
"args": ["run", "--directory", "/path/to/snipeit-mcp", "--env-file", "/path/to/snipeit-mcp/.env", "snipeit-mcp", "--stdio"]
}
}
}
Then ask: "Who has LAP-0142, and what else do they hold?", "What needs attention this month?", "What's running low?", "Check the spare ThinkPad out to Sara."
Your own Snipe-IT: set SNIPEIT_URL and SNIPEIT_TOKEN (a personal API key from your Snipe-IT profile) and
SNIPEIT_SAMPLE=0.
The SAMPLE company
Harbor Trading: three sites (Dammam HQ, Riyadh office, Jeddah warehouse), 15 people, 48 assets (laptops, monitors, phones, warehouse scanners, printers) and 7 stock items. Dates are set relative to the day it is seeded, so there are always audits overdue and due, one loaner laptop 12 days late, one due back in 4 days, warranties ending, a laptop out for repair and three items below their minimum. The people, serials and prices are made up.
Tests
uv run pytest # unit tests (a fake Snipe-IT API), plus live tests when the local Snipe-IT runs
What a production version adds
This demo signs in with one API token. A production server for Snipe-IT customers would add sign-in with each person's own Snipe-IT account, so Claude sees exactly what they may see; hosting with an audit log of every tool call; and more of the API (licenses, components, maintenance, requests). That is what Mojood Connect builds.
License
Apache 2.0. Snipe-IT is a trademark of Grokability, Inc.; this project is not made or endorsed by Grokability.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.