Install
$ agentstack add mcp-physcat-mcpatom ✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README, it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →About
mcpatom
A minimal Python MCP Server SDK.
From Greek atomos: indivisible. The whole library is a single file, mcpatom.py, consumable two ways:
- Copy the file into your project. No dependency, no lockfile entry.
- Install the package:
pip install mcpatom- the file itself is
the installed module.
Scope
- Tools, resources, and prompts, over stdio or streamable HTTP.
- Protocol versions
2025-06-18and2025-11-25. - stdlib-only Python >= 3.10, no dependencies, ever.
Everything else (sampling, elicitation, subscriptions, auth, etc.) is deliberately omitted.
Usage
from mcpatom import Server
srv = Server("my-server")
@srv.tool
def greet(name: str, excited: bool = False) -> str:
"""Return a greeting for the given name."""
return f"Hello, {name}{'!' if excited else '.'}"
@srv.resource("data://motd")
def motd() -> str:
"""Message of the day."""
return "Be indivisible."
@srv.prompt
def haiku(topic: str) -> str:
"""Ask for a haiku."""
return f"Write a haiku about {topic}."
srv.serve_stdio()
For streamable HTTP instead of stdio, end with:
srv.serve_http(8388) # http://127.0.0.1:8388/mcp
serve_http binds to loopback and rejects DNS-rebinding requests; host="0.0.0.0" widens the bind and switches those checks off.
More runnable servers in [examples/](examples/).
Schemas and return types
Each function's name, docstring, and annotations become the tool's name, description, and schema; @srv.tool(name=, description=, input_schema=, output_schema=) override generation, and extra= merges raw fields into the listing. Server() also takes version= and instructions=. Parameters may be annotated with any of these:
strintfloatboollist[X](or barelist)Literal[...]TypedDictX | Noneof any of the above
Annotated[X, "text"] adds a description the model sees. A parameter's default is published in the schema when it is JSON-representable; a None default is omitted unless null is a selectable Literal value.
A tool may return:
str- one text blockdict- JSON text plusstructuredContent; aTypedDictreturn
annotation publishes the matching outputSchema
Image(data, mime_type)/Audio(data, mime_type)- one binary
block (raw bytes in, base64 on the wire)
- a tuple - one block per item:
strtext,Image/Audiomedia, a
dict whose "type" names a spec block type verbatim (e.g. resource_link)
None- empty content; any other JSON value - text
Raising is the error API: any exception becomes isError content the model can read and correct.
Resources return str (text) or bytes (base64 blob).
Prompts take only str arguments and return a str user message, or a list of message dicts passed through verbatim.
Wiring it up
claude mcp add my-server -- /abs/path/.venv/bin/python /abs/path/server.py
or in any mcpServers config:
{"mcpServers": {"my-server": {"command": "/abs/path/.venv/bin/python", "args": ["/abs/path/server.py"]}}}
Smoke test without a client:
echo '{"jsonrpc":"2.0","id":1,"method":"ping"}' | python server.py
# {"jsonrpc":"2.0","id":1,"result":{}}
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: physcat
- Source: physcat/mcpatom
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet, be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.