devsnips-mcp
A lightweight, read-only MCP server that exposes the DevSnips UI library — components, sections and templates — to AI coding agents over stdio.
It is a consumer of the existing DevSnips registry (snippets-index.json), never a
second source of truth. It adds no database, no web server, no embeddings, and only one
runtime dependency (the MCP SDK).
AI coding agent → devsnips-mcp → snippets-index.json → library/<path>/<file>
What it does
| Tool | Purpose |
|---|---|
search_resources |
Deterministic keyword/filter search over the whole library |
get_resource |
Metadata, README, template AGENTS.md and file manifest for one resource |
get_resource_file |
One allowlisted source/doc file from a resource |
list_facets |
Current inventory: technologies, types, categories, families (with counts) |
Everything is read-only. Nothing writes outside the cache directory.
Install
Requires Python 3.10+.
Option 1 — from PyPI (published releases)
pip install devsnips-mcp
Option 2 — directly from the DevSnips repository
Installs the latest main without waiting for a PyPI release:
pip install "devsnips-mcp @ git+https://github.com/sarthakbystander/DevSnips.git#subdirectory=integrations/mcp"
Run the server directly:
devsnips-mcp # console script
python -m devsnips_mcp # module form
Connect from an MCP client
Clients that support stdio MCP servers launch the server as a subprocess. Configure the
command (and any env overrides) in the client's MCP configuration.
Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"devsnips": {
"command": "devsnips-mcp",
"args": []
}
}
}
Cursor / Windsurf / VS Code (.mcp.json or settings)
{
"mcpServers": {
"devsnips": {
"command": "devsnips-mcp",
"args": []
}
}
}
Most clients accept the same shape; the two things that vary per client are the config
file location and whether env is honored.
Configuration
All settings are optional environment variables — no CLI flags. A client injects them
through its env block.
| Variable | Default | Purpose |
|---|---|---|
DEVSNIPS_MCP_SOURCE |
auto |
auto | github | local | http |
DEVSNIPS_MCP_REF |
main |
git ref for the remote registry |
DEVSNIPS_MCP_BASE_URL |
https://raw.githubusercontent.com/sarthakbystander/DevSnips |
remote base |
DEVSNIPS_MCP_LOCAL_ROOT |
— | path to a DevSnips checkout (enables local) |
DEVSNIPS_MCP_CACHE_DIR |
platform cache dir | cache directory |
DEVSNIPS_MCP_INDEX_TTL |
86400 |
registry cache TTL (s) |
DEVSNIPS_MCP_FILE_TTL |
604800 |
file cache TTL (s) |
DEVSNIPS_MCP_TIMEOUT |
30 |
network timeout (s) |
DEVSNIPS_MCP_MAX_FILE_BYTES |
524288 |
per-file retrieval cap |
DEVSNIPS_MCP_MAX_RESPONSE_BYTES |
1048576 |
per-tool-response cap |
DEVSNIPS_MCP_MAX_CACHE_BYTES |
209715200 |
total cache cap |
DEVSNIPS_MCP_LOG_LEVEL |
WARNING |
logging level (goes to stderr) |
DEVSNIPS_MCP_SOURCE=local reads a local DevSnips checkout (fastest, fully offline, and
can enumerate the complete file tree of a template, which the remote provider cannot).
auto prefers a local checkout when one is detected, else falls back to GitHub raw. http
is reserved for a future DevSnips registry API.
Example (local mode)
{
"mcpServers": {
"devsnips": {
"command": "devsnips-mcp",
"args": [],
"env": {
"DEVSNIPS_MCP_SOURCE": "local",
"DEVSNIPS_MCP_LOCAL_ROOT": "/path/to/DevSnips"
}
}
}
}
Tool usage
Search first, then fetch — every response carries a registry provenance block
(source, ref, last-updated, stale flag, variant count).
search_resources
search_resources(
query?, technology?, type?, category?, family?, tags?, tagsMode?, styles?,
features?, installableOnly?, limit?, offset?)
search_resources(query="responsive SaaS pricing section", technology="React")
search_resources(query="dark dashboard sidebar", type="component")
search_resources(technology="Tailwind CSS", type="section", family="Pricing")
Returns ranked items with id, name, type, tech, category, family, path,
description, tags, features, styles, files, install, score, matched_fields.
get_resource
get_resource(id, include?, maxBytes?)
Returns the canonical metadata plus README (and AGENTS.md for templates), and the file manifest — without pulling source code into context.
get_resource_file
get_resource_file(id, file, maxBytes?, truncate?)
Fetch one file listed in the resource's manifest (plus README.md/AGENTS.md/metadata.json).
preview.html is retrievable only by explicit request.
list_facets
list_facets(facet?, technology?, includeVariants?)
Inventory with live counts — always read from the current registry, never hardcoded.
Examples for agent prompts
"Find a responsive SaaS pricing section for React."
"Find a dark dashboard sidebar."
"Find a minimal hero section using Tailwind."
"List all template families."
For a template, prefer get_resource(id) to read its AGENTS.md before adapting it, and
fetch multi-page templates page by page with get_resource_file, or install the whole
template with the CLI command in its install field.
Security model
- Read-only — no write tools; nothing writes outside the cache dir.
- Path safelisting — ids and filenames must match strict patterns, and every file is
checked against the registry manifest allowlist. Arbitrary paths (
.., absolute paths, backslashes, URL-encoded separators) are rejected before any fetch. - No arbitrary URLs — tools never accept URLs; the provider is configured server-side.
- Remote hardening — HTML error pages are never treated as content; redirects are limited to same-host HTTPS.
- Oversized responses — per-file and per-response byte caps with explicit truncation.
Registry parity
Derived id and install values mirror the specialized agent indexes
(agents/resources/indexes/*.json) and the CLI's installability predicate. This is pinned
by a parity test so any future drift fails loudly.
Development
cd integrations/mcp
python -m unittest discover -s tests # unit + integration + stdio smoke
python scripts/tooling/validators/validate.py # repo-level validation (from repo root)
ruff check src tests
mypy src/devsnips_mcp
Live network tests are opt-in with DEVSNIPS_MCP_NETWORK_TESTS=1.
Relationship to the DevSnips CLI
The CLI (npx devsnips add <id>) installs source into a user project; the MCP discovers
and reads the same resources for AI agents. Both resolve against the same registry and
share the same path conventions (library/<path>/<file>), installability rules and
npx devsnips add <id> install command, but they are separate processes with no runtime
dependency on each other.
License
MIT. Part of the DevSnips project.
Metadata
Release files for devsnips-mcp 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| devsnips_mcp-0.1.0.tar.gz | 47.4 kB | Without provenance | Details for devsnips_mcp-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| devsnips_mcp-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for devsnips_mcp-0.1.0-py3-none-any.whl |
Total release size: 89.8 kB
Release files / devsnips_mcp-0.1.0.tar.gz
| Download URL | devsnips_mcp-0.1.0.tar.gz |
|---|---|
| Size | 47.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7cdfbb97dd26a4e125f19548aa25a0e3db4a4cec8394c84d939d465562a780b3
|
|
BLAKE2b-256 checksum How to use checksums |
26edb5527cc69db800996d65ad76be43085981fa933f498380c97b742dda09f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / devsnips_mcp-0.1.0-py3-none-any.whl
| Download URL | devsnips_mcp-0.1.0-py3-none-any.whl |
|---|---|
| Size | 42.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
2b9a6a3a92aa7af6949c2927dddca128672db6778027a752b0b62160fe7ab756
|
|
BLAKE2b-256 checksum How to use checksums |
bd9910141cee2a31f37a758f4f3ad232c9bb7c81b4ccca790dfe4e4f91831c15
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.17 {"installer":{"name":"uv","version":"0.12.17","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for devsnips-mcp 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.