-
Notifications
You must be signed in to change notification settings - Fork 0
Extensions
Draggy speaks the Model Context Protocol, so it can borrow tools from servers other people wrote. Turn on the GitHub server and the assistant can read your issues; turn on Postgres and it can query your database.
Settings → Extensions holds a catalogue of thirty-four. Search it, or filter
it down to the ones you have switched on.
Nothing in it duplicates a built-in feature. Draggy already has Brave and DuckDuckGo as search providers and a browser of its own, so those servers are left out, since a second way to do the same job is one more thing for a small model to get wrong. A service Draggy genuinely cannot do is not a duplicate, so Perplexity, Exa, Tavily and Firecrawl are all here.
This is worth being clear about before you switch one on.
An MCP server is a program. Draggy installs it with npm the first time you switch it on, into a folder of its own inside the Draggy data folder, and then runs it directly and talks to it over its standard input and output. It runs on your machine, as you, with whatever credentials you typed into the panel.
Install scripts are refused, and the server's own JavaScript is started without a shell, which is also what keeps a console window from flashing on screen every time one starts.
So this is the one part of Draggy that runs code somebody else wrote. Nothing is
enabled by default, nothing starts on its own, and every entry names the exact
package it will fetch, @modelcontextprotocol/server-github and so on, with a
link to its page on npm, so you can go and read it first.
Switch one on only if you would be comfortable running that package from a terminal.
Find it in the catalogue and flip the switch. If it needs anything, whether an API token, a folder or a connection string, the switch opens the setup fields instead of starting a server that would fail. Fill them in and it starts.
A running server shows how many tools it contributed. Those tools become
available to the model on your next message, named after the server, so
github__create_issue rather than a bare create_issue that could have come
from anywhere.
The On and Off buttons beside the search box narrow the list to what you have already switched on, or to what you have not. It opens unfiltered.
Switch it off and the tools disappear from the model's world immediately. When you quit, Draggy stops every server, and anything a server started itself.
While the model is using one, it shows in the conversation timeline like any built-in tool, named after the server, so a slow call looks like work rather than a hang.
Code and issues: Filesystem, GitHub, GitLab, Sentry, JetBrains IDEs, Context7 documentation, 21st.dev Magic
Search Draggy cannot do itself: Perplexity (an answer with its sources), Exa (search by meaning rather than keyword), Tavily (results already extracted for a model), Firecrawl (a whole site turned into markdown, where the built-in reader takes one page at a time)
Work: Slack, Notion, Linear, Todoist, Obsidian, Google Drive, Google Maps
Databases: PostgreSQL, MongoDB, Redis, Elasticsearch, Supabase, Airtable
Cloud: Kubernetes, Cloudflare, Heroku, Stripe, AWS Knowledge Base
Thinking: Memory (a knowledge graph that survives between conversations), Sequential thinking, Everything (the reference server, useful for checking that MCP works at all)
Other: Figma, YouTube transcripts
Each entry carries two links: Package docs goes to the package's own page on npm, which renders its README, and Website goes to the service it talks to. Read both before switching something on.
Some carry a warning in the panel, and they mean it. Filesystem can write and delete inside the folders you list. Stripe with a live key can move real money. Kubernetes does whatever your current kubeconfig context is allowed to do.
Tokens are stored in the same local SQLite database as your chats, in the Draggy data folder, and are masked in the interface. That is the same protection your conversation history gets, which is honest but is not a keychain. If that matters for a particular token, use a scoped or read-only one.
They are ordinary tools once they are running. The model chooses between them and the built-in ones the same way, and the same caveat applies: a model below about 4B parameters is unreliable at tool calling and gets worse the more tools it has to choose between. Turning on twelve servers at once is a good way to make a small model worse.
Start with one.
The panel shows the error underneath the entry, including whatever the server wrote to its standard error, which is usually the only account of what went wrong.
Not configured yet: a required field is empty. Open the setup fields.
Did not answer in time: the package could not be fetched, or it needs a runtime you do not have. Follow the Package docs link and check.
npm could not be found on this machine: extensions are installed with npm, which comes with Node.js. Install Node and restart Draggy.
could not be installed: npm could not fetch the package. The reason npm gave is on the end of the message.
Stopped (exit code 1): it started and rejected something, most often the credentials.
Settings → Data → Open logs has the rest.
An extension is a hole you opened in the local-only story on purpose. The package comes from npm, and then the server talks to whatever service it is for: GitHub, Slack, your own database. Draggy is not in the middle of that and cannot be.
Everything else in the app still behaves as it always did. See the privacy note in the README.