Keep Me Secure
Server Details
Tells your coding agent whether your installed packages need patching, with advice on what to do.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- robertkeus/keep-me-secure-mcp
- GitHub Stars
- 0
- Server Listing
- keep-me-secure-mcp
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 3 tools
check_package (one version) and check_packages (batch of up to 500) are near-identical names and could be misselected at a glance, but their descriptions make the singular/batch split explicit. check_platform targets an entirely different object (platforms/breaches) and is clearly distinct.
All three tools follow the same snake_case verb_noun pattern (check_*), so the naming is fully predictable. The only caveat is the singular/plural pair, which is a consistency-consistent but low-contrast distinction captured under disambiguation.
Three focused tools is a tight, well-scoped set with little redundancy for a security-checking server. The single-package tool is partially subsumed by the batch tool, so one tool could arguably be merged, but nothing feels padded.
The core surface (single check, batch check, platform incidents) is covered, but the package tools only return a verdict with no severity, advisory IDs, or remediation guidance, and the descriptions explicitly exclude runtimes, OS packages, and Docker base images. These are notable gaps an agent must work around rather than a full lifecycle.
Available Tools
3 toolscheck_packageIs this package version safe?ARead-onlyInspect
Checks one exact package version against public security advisories.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Package name, such as guzzlehttp/guzzle | |
| version | Yes | Exact version, such as 7.4.0 | |
| ecosystem | Yes | php, npm, python, go, rust, ruby, java or dotnet |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and external-data behavior are covered structurally. The description confirms the external source ("public security advisories"), which is mildly additive, but it says nothing about latency, rate limits, advisory-source coverage, or what a caller gets back when no advisories match.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with zero redundant wording. For a three-parameter read-only lookup, this is appropriately sized and every word carries meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, annotations cover the safety profile, and the input schema is fully documented, so the description is close to sufficient. The notable gap is the absence of an output schema combined with no statement of the return shape — whether it returns a boolean, a severity level, or a list of advisories — which an agent would want to know before calling.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented with examples, including the required exact-version format. The description reinforces "exact" but adds no syntax, normalization, or ecosystem-matching guidance beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ("Checks") and resource ("one exact package version") against a named data source ("public security advisories"). The singular "one exact package version" implicitly distinguishes it from the sibling check_packages, but it never names or explains that contrast explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase "one exact package version" hints that this is the single-package path and the sibling handles multiple, but no when-to-use, when-not-to-use, or alternative is stated. An agent must infer the routing rule from the singular/plural naming alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_packagesIs my stack secure?ARead-onlyInspect
Use for questions like 'is my stack secure?' or 'do we have vulnerable packages?'. Checks a list of exact installed package versions against public security advisories. Read them from the project's lockfiles, including transitive packages. Up to 500 per call; call again for more. verdict is yes, no or unknown; unknown means the check was incomplete, so never report it as safe. Does not cover language runtimes, OS packages or Docker base images.
| Name | Required | Description | Default |
|---|---|---|---|
| packages | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With readOnlyHint and openWorldHint already supplied, the description still adds substantive context: it reads lockfiles including transitive packages, has a 500-item ceiling requiring repeat calls, and defines the verdict domain with the critical warning that 'unknown' must never be reported as safe. That last point materially changes how an agent would interpret and relay results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five short sentences, front-loaded with the trigger questions and scope, followed by operational limits and the verdict semantics. No filler or repetition; each sentence carries a distinct fact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description explains the verdict values and how to interpret 'unknown', which is the one return detail an agent must not misreport. Scope limits, input source, and batch ceiling are all covered, so nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Given a single required parameter and reported 0% schema description coverage, the description compensates by specifying that versions must be exact installed versions (not ranges) sourced from lockfiles and that the list is capped at 500. It does not restate the ecosystem enum values, but the key semantic constraint on the array is conveyed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource: it checks exact installed package versions against public security advisories, and clarifies the input is a list read from the project's lockfiles. It implicitly separates itself from the singular sibling check_package via 'a list of exact installed package versions', but never names or references the sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with the exact user questions it answers ('is my stack secure?', 'do we have vulnerable packages?') and closes with explicit exclusions: language runtimes, OS packages, Docker base images are out of scope. It also gives the operational boundary (up to 500 per call, call again for more), leaving little to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_platformHas this platform been breached?ARead-onlyInspect
Lists known security incidents at hosting, deployment and AI platforms, with what to do and a link to the source. Use when the user asks about a platform or breach. Omit name to list all. The list is curated and not complete, so no result doesn't mean a platform is safe.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Platform name, such as railway or vercel |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, but the description adds genuinely new behavioral context: the list is curated and incomplete, so a zero-result must not be read as 'safe'. That caveat materially changes how an agent should report results. Missing only secondary details such as data freshness or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with what the tool returns, then usage, then the coverage caveat. Each sentence carries information, though 'with what to do and a link to the source' and the title overlap slightly in framing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by describing the shape of returned entries (incident, remediation, source link). For a single optional-parameter read tool this is nearly complete; the only gap is not characterizing how current or how large the curated list is.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the name parameter is already documented with an example, so baseline would be 3. The description goes beyond the schema by specifying the semantics of omission ('Omit name to list all'), which the schema does not state.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (lists) and resource (known security incidents at hosting, deployment and AI platforms), plus what each entry contains. The platform-vs-package boundary with siblings check_package/check_packages is only implicit through the word 'platform', so it is clear but not explicitly differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use when the user asks about a platform or breach' gives a clear trigger, and 'Omit name to list all' explains the no-argument mode. It stops short of naming when to prefer check_package/check_packages instead, so an agent must infer the platform-vs-package split from the sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Added
check_platform
2 tool updates
- First observed
check_package - First observed
check_packages
Related MCP Connectors
Check packages for CVEs, slopsquatting, and CISA KEV before your AI agent installs them.
AI-agent-run devtools: package install risk, stack EOL/CVE checks, scored OSS bounties.
Security tools for coding agents: dependency advisory audits and evidence for remediation.
Check PyPI and npm upgrades: known vulnerabilities, the safe version, and what each upgrade breaks.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI coding agents to check package names and versions for allow/warn/deny verdicts, scan project lockfiles for known-malicious packages and critical advisories, and suggest safe versions across npm, PyPI, crates.io, and Go before manifests are edited.MIT
- AlicenseNot gradedqualityBmaintenanceEnables coding agents to retrieve maintainer-written release notes and compare installed versus target dependency versions, search packages, and report on projects pushed to a dashboard.MIT
- AlicenseAqualityDmaintenancePackage intelligence for AI coding agents that checks npm and PyPI package health, deprecation, vulnerabilities, bundle size, and compares alternatives.5MIT
- AlicenseAqualityAmaintenanceDependency intelligence for AI agents. CVE scanning, health checks, upgrade planning.9718 npm2Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.