toolkit-mcp
Provides read-only access to a local SQLite database, including schema introspection via describe_database and running SELECT/WITH queries via query_database.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@toolkit-mcpWhat tables are in the database and what's the weather today?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
toolkit-mcp — an MCP server for Claude
A small but real Model Context Protocol server that gives Claude three capabilities it doesn't have on its own: querying a local SQLite database, searching files inside one directory, and looking up weather.
Built on the official Python SDK (mcp v2). Works with Claude Desktop, Claude
Code, and any other MCP client.
The problem
Claude can't see your database, your files, or anything that happened after its training cutoff. Copy-pasting a schema and some rows into the chat works once and doesn't scale — and it gives Claude a stale snapshot rather than the ability to go and look.
Related MCP server: SQLite MCP Server
The solution
MCP is the standard interface for handing an assistant real tools. This server implements five of them, with the boring parts done properly: the database connection is genuinely read-only, file access can't escape its root, and every error comes back as data the model can read and correct rather than a crash.
The tools
Tool | What it does |
| Lists tables, columns, types and row counts — call it first to learn the schema |
| Runs a read-only |
| Finds files by filename glob or by text content |
| Reads one text file from inside the configured root |
| Current conditions + forecast via Open-Meteo (free, no API key) |
Security, and why it's two layers deep
query_database is the tool most likely to be handed something destructive, so
it has two independent guards:
SQLite's own read-only mode. The connection is opened as
file:store.db?mode=ro, so a write is refused by the database engine — not by my code.Statement validation. Only
SELECTandWITH…SELECTare accepted. Multiple statements,PRAGMA,ATTACH, and every DDL/DML keyword are rejected with a message explaining why. SQL comments are stripped first, so a forbidden keyword can't hide behind--.
search_files and read_file resolve every path and confirm it is still inside
the configured root. ../../../../etc/passwd, absolute paths, and symlinks
pointing outside are all refused.
All of this is covered by tests — see below.
Setup
git clone https://github.com/harshhh817/mcp-server-demo.git
cd mcp-server-demo
pip install -r requirements.txt
python make_sample_db.py # builds data/store.dbVerify it works before wiring it into anything:
python test_server.pyClaude Code
From inside the repo:
claude mcp add toolkit -- python /absolute/path/to/mcp-server-demo/server.pyOr commit a .mcp.json at your project root so the whole team gets it:
{
"mcpServers": {
"toolkit": {
"command": "python",
"args": ["/absolute/path/to/mcp-server-demo/server.py"],
"env": {
"TOOLKIT_DB_PATH": "/absolute/path/to/mcp-server-demo/data/store.db",
"TOOLKIT_FILES_ROOT": "/absolute/path/to/mcp-server-demo/sandbox"
}
}
}
}Then check it registered:
claude mcp listClaude Desktop
Edit claude_desktop_config.json:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"toolkit": {
"command": "python",
"args": ["/absolute/path/to/mcp-server-demo/server.py"],
"env": {
"TOOLKIT_DB_PATH": "/absolute/path/to/mcp-server-demo/data/store.db",
"TOOLKIT_FILES_ROOT": "/absolute/path/to/mcp-server-demo/sandbox"
}
}
}
}Restart Claude Desktop. The tools appear under the tools icon in the chat input.
Two things that trip people up: paths must be absolute — MCP servers don't
inherit your shell's working directory. And "command": "python" must be a
Python that has mcp installed; if you use a virtualenv, point at
/path/to/venv/bin/python instead.
Configuration
Variable | Default | Purpose |
|
| SQLite file to query |
|
| The only directory file tools can reach |
Point these at your own database and folder and the server is immediately useful — nothing in the tool code is specific to the sample data.
Try it
Once connected, ask Claude things like:
What tables are in the database?
Which customer has spent the most, and on what?
Find every file mentioning connection pooling and summarise the issue.
What's the weather in Delhi this week?
Claude picks the tool, writes the SQL, and reads the result. For the second
question it typically calls describe_database, then issues a three-table join
on its own.
Tests
test_server.py spawns the server as a subprocess and drives it as a real MCP
client over stdio — the same transport Claude Desktop uses. It isn't testing
the functions in-process; it's testing the server.
python test_server.pyReal output:
connected to 'toolkit' v1.0.0
tool discovery
ok server advertises 5 tools (describe_database, get_weather, query_database, read_file, search_files)
...
query_database - rejected queries
ok DROP is rejected (only SELECT (or WITH ... SELECT) queries are allowed)
ok stacked statements rejected (only one statement per call; remove the extra ';')
ok comment-hidden DROP rejected (only one statement per call; remove the extra ';')
ok database still intact after attacks
path traversal is refused
ok ../ escape refused ('../server.py' resolves outside the allowed root)
ok absolute path refused ('/etc/passwd' resolves outside the allowed root)
get_weather (live network call)
ok resolves the location (Delhi, National Capital Territory of Delhi, India)
ok returns a temperature (29.2degC, overcast)
40 passed, 0 failedTech
Python 3.10+ · mcp v2 (official SDK) · SQLite · stdlib urllib (no HTTP
dependency for the weather tool)
server.py tool definitions + MCPServer wiring
toolkit_mcp/
├── database.py read-only SQL, validation, schema introspection
├── files.py sandboxed search and read
└── weather.py Open-Meteo client
make_sample_db.py seeded sample database
test_server.py end-to-end test over real stdio MCP transport
sandbox/ what the file tools are allowed to seeNote on SDK versions:
mcpv2 renamedFastMCPtoMCPServer(from mcp.server.mcpserver import MCPServer). Most tutorials online still show the v1FastMCPimport, which raisesModuleNotFoundErroron v2. This repo targets v2.
Building one for your stack
The pattern generalises. A tool is a decorated function with a clear description and typed arguments — the description is what Claude reads to decide whether to call it, so it's worth writing carefully. Common asks I can build:
Query your internal Postgres/MySQL read replica safely
Search and summarise a documentation or ticket archive
Call your company's REST API with auth handled server-side
Read and write to a Google Sheet or Notion database
Hire me
I build MCP servers and Claude Code workflows — tested, documented, and delivered fast.
Fiverr: My Fiverr profile
Upwork: My Upwork profile
GitHub: github.com/harshhh817
Final-year B.Tech CSE · AWS Certified Cloud Practitioner · Delhi, India
MIT licensed — see LICENSE.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides database access capabilities to Claude with support for both SQLite and SQL Server databases. It enables users to manage schemas, execute SQL queries, and export results through natural language interaction.806MIT
- AlicenseNot gradedqualityDmaintenanceEnables natural language interaction with local SQLite databases through Claude Desktop, translating plain English queries into SQL for data analysis and exploration.3MIT
- AlicenseAqualityCmaintenanceProvides filesystem, web search, SQLite, and system tools for AI assistants like Claude, enabling secure access to local resources and the web.6MIT
- FlicenseNot gradedqualityDmaintenanceEnables Claude to perform file operations, retrieve system information, run calculations, and generate timestamps on the local system.
Related MCP Connectors
Gateway between LLM agents and world data through eight tools and a bundled endpoint catalog.
Bounded tools for rendering, extraction, RAG, enrichment, local discovery and review analysis.
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/harshhh817/mcp-server-demo'
If you have feedback or need assistance with the MCP directory API, please join our Discord server