Tiny Tank MCP
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Tiny Tank MCP
Reference material only. This is not production software. Review and vet it fully before using any part of it, and don't adopt it into a work environment as it is. Whoever uses it takes full responsibility for that use. See DISCLAIMER.md.
A small, read-only MCP server for testing how an agent (Claude, Copilot Studio, or any MCP client) combines tools. It serves four tools over Streamable HTTP at /mcp (stateless, JSON responses) on a synthetic dataset of 8 tanks at two sites.
There are no write operations, no connections to any other system, no auth, and no secrets.
Tools
Tool | Input | Returns |
|
| Tank ID, site, product, capacity |
|
| Status and site |
|
| Inspections (date, type, result, notes), |
|
| Daily level % and temperature, high and low alarm limits |
Every result carries result_code (OK, NOT_FOUND, INVALID_INPUT), a fixed message and source. The newer tools also return as_of, the date of the data snapshot (2026-10-16). Rejected input is never echoed back.
The tools return facts only. They never say "overdue" or "alarm". Working that out is the agent's job.
Related MCP server: mcp-knowledge-server
Try it with an agent
Two tanks are deliberately inconsistent, and no single tool shows the problem:
TK-105 is "In Service", but its inspection was due 2026-09-30 and its level has been above the 90% high alarm for 5 days.
TK-107 is "Out of Service", but its level rose from 0.5% to 37.6% in a week.
Ask questions like these and watch which tools the agent calls:
"Which tanks at Site B need attention, and why?"
"Are any tanks overdue for inspection?"
"Is anything happening in a tank that's out of service?"
"Compare Site A and Site B."
Layout
MCP_Guide.md how MCP works and how to build a server, step by step
MCP_Publish.md how to host it: container, config, TLS, pipeline, gateway, agents
MCP_Security.md security rules, the SEC-01..05 tests, evidence and limits
DISCLAIMER.md reference-only terms: review before use, no warranty
dist/ the handover package as one zip (PDFs + code), a snapshot; its name gives the build date, time (UTC-5) and version
src/tank_data.py the synthetic snapshot (8 tanks, inspections, 7 days of readings)
src/business_logic.py validation and lookups (no MCP dependency)
src/server.py MCP wrapper, run options, one JSON log line per call
tests/ unit, in-process MCP protocol, and security (SEC-01..05) tests
tools/smoke_test.py stdlib client for a live endpoint; writes JSON evidence
tools/compare_routes.py direct vs gateway evidence parity check (GT-05)
tools/security_check.py black-box SEC-01..05 against a live endpoint
security/tool_manifest.sha256 pinned hash of the tool definitions (SEC-01)
SECURITY.md security declaration
docs/security_test_cadence.md the five security cases and when to run them
docs/deployment.md hosting and connecting an agent
docs/build_report.md verification results
.github/workflows/ci.yml tests + live black-box security check on every pushRun locally
python -m venv .venv && . .venv/bin/activate
pip install -r requirements.txt
python -m pytest -v # 79 tests (22 functional + 57 security)
python -m src.server # http://127.0.0.1:8000/mcp
python tools/smoke_test.py --out evidence/direct.jsonRuntime variables
Variable | Default | Purpose |
|
| Bind interface ( |
|
| Listen port. Hosting platforms that set |
| empty | Comma-separated Host header allowlist |
| empty | Comma-separated Origin allowlist |
When MCP_HOST is a loopback address, the SDK applies a localhost-only Host/Origin check on its own. On any other bind, set MCP_ALLOWED_HOSTS. Otherwise no Host header check runs.
Logging
Each tool call writes one JSON line to stderr with these fields: ts, event, tool, call_id, tank_id (or site for list_tanks; normalized, max 32 characters), result_code, duration_ms. Headers, tokens and other arguments are never logged.
Security
Every tool declares itself read-only, non-destructive, idempotent and closed-world. It does this through standard MCP annotations and a tinytank/security-declaration block in _meta, sent both at discovery and on every call. See SECURITY.md.
The five security cases (SEC-01..05) and when they run are in docs/security_test_cadence.md. Run the independent black-box check with:
python -m tools.security_check --url http://127.0.0.1:8000/mcp --log-file server.logConnect an agent
Once hosted at https://<host>/mcp (see docs/deployment.md):
claude mcp add --transport http tiny-tank https://<host>/mcpFor Copilot Studio, add an MCP tool with the Streamable HTTP transport and no authentication. If the agent belongs to an organization, get that organization's approval before connecting it to an external endpoint.
Disclaimer
Reference material, shared for learning. No licence is granted, and there is no warranty or support. Anyone who uses any part of it takes full responsibility for that use. The full terms are in DISCLAIMER.md.
This server cannot be deployed
Maintenance
Related MCP Connectors
Read-only lookup of tested agent tools and MCP servers: scores, test evidence, deprecation.
Read-only MCP server that answers questions about turva.dev from its published data. Five tools return JSON: the service catalog with prices, contact and operator details, engagement principles and dated agent-readiness and security evidence with verification links. Connect over Streamable HTTP. You need no API key. The server does not scan other websites or run audits.
Read-only MCP server for AIStatusDashboard status, incidents, metrics, and fallback recommendations.
HTTP status code reference MCP.
Related MCP Servers
- AlicenseAqualityCmaintenanceRead-only MCP server that exposes a design system's tokens, components, conventions, and deprecations as queryable tools, enabling agents to look up canonical values, assess change impact, and detect hardcoded value drift.83 npmMIT
- FlicenseNot gradedqualityCmaintenanceExposes a version-controlled knowledge base as MCP tools so agents can read merged identity/state summaries and next recommended actions at runtime, plus run deterministic schema validation and cross-reference link checks. This lets agents fetch live state and verify integrity via self-describing calls instead of re-reading raw files.-
- FlicenseBqualityCmaintenanceEnables MCP-compatible clients to search approved local Markdown runbooks, retrieve selected local host health details, and get bounded Kubernetes pod-status summaries for allowlisted clusters and namespaces.4-
- AlicenseNot gradedqualityBmaintenanceEnables MCP clients to discover and call three tools over Streamable HTTP: generating personalized greetings, retrieving the current ISO 8601 date/time in a configured timezone, and performing addition, subtraction, multiplication, or division with clear error handling. It runs locally or in Docker and exposes a health endpoint for monitoring.MIT