Ks Mcp Server — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Ks Mcp Server (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
You can use the following production-style README.md for your FastMCP server and client applications.
A production-ready FastMCP server exposing the following tools:
health - Health check endpointsay_hello - Returns a greeting messagegenerate_uuid - Generates a random UUIDproject/
│
├── app/
│ ├── __init__.py
│ └── server.py
│
├── client/
│ └── mcp_client.py
│
├── tests/
│ └── test_mcp_tools.py
│
├── requirements.txt
├── pyproject.toml
└── README.mdVerify installation:
python --versionExpected:
Python 3.14.xpython -m venv .venv
.venv\Scripts\activatepython -m venv .venv
source .venv/bin/activatepip install -r requirements.txtor
pip install fastmcp pytest pytest-asyncioNavigate to the project root folder.
Run:
python app/server.pyExpected output:
INFO: FastMCP server started
INFO: Listening on http://0.0.0.0:8000/mcpOpen a new terminal and run:
curl http://localhost:8000/mcpor
fastmcp list http://localhost:8000/mcpExpected tools:
health
say_hello
generate_uuidExample:
python client/mcp_client.pyExpected output:
Available Tools:
- health
- say_hello
- generate_uuid
Health Response:
{'status': 'healthy'}
Hello Response:
{'message': 'Hello Satheesh'}
UUID Response:
{'uuid': 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'}import asyncio
from fastmcp import Client
async def main():
async with Client("http://localhost:8000/mcp") as client:
health = await client.call_tool("health")
print(health.data)
hello = await client.call_tool(
"say_hello",
{"name": "Satheesh"}
)
print(hello.data)
uuid_result = await client.call_tool(
"generate_uuid"
)
print(uuid_result.data)
if __name__ == "__main__":
asyncio.run(main())Execute:
pytest -vExpected:
tests/test_mcp_tools.py::test_health PASSED
tests/test_mcp_tools.py::test_say_hello PASSED
tests/test_mcp_tools.py::test_generate_uuid PASSEDRequest:
await client.call_tool("health")Response:
{
"status": "healthy"
}Request:
await client.call_tool(
"say_hello",
{
"name": "Satheesh"
}
)Response:
{
"message": "Hello Satheesh"
}Request:
await client.call_tool(
"generate_uuid"
)Response:
{
"uuid": "550e8400-e29b-41d4-a716-446655440000"
}Verify the server returns a dictionary:
@mcp.tool
def say_hello(name: str) -> dict:
return {
"message": f"Hello {name}"
}Avoid returning primitive values such as strings for production APIs.
Ensure the MCP server is running:
python app/server.pyVerify port:
netstat -ano | findstr 8000pip show fastmcpRecommended:
fastmcp >= 3.xMIT License
This README should be sufficient for onboarding developers, running the server/client locally, and validating the MCP tools end-to-end.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.