Metadata-Version: 2.4
Name: physicalcontextprotocol
Version: 1.0.0
Summary: Physical Context Protocol — MCP-compatible standard protocol for robots and industrial systems
Author-email: Sandeep Thummala <physicalcontextprotocol@gmail.com>
License-Expression: Apache-2.0
Project-URL: Homepage, https://github.com/physicalcontextprotocol/pmcp-python
Project-URL: Documentation, https://github.com/physicalcontextprotocol/pmcp-spec/blob/main/docs/PROTOCOL_README.md
Project-URL: Repository, https://github.com/physicalcontextprotocol/pmcp-python
Project-URL: Issues, https://github.com/physicalcontextprotocol/pmcp-python/issues
Project-URL: Specification, https://github.com/physicalcontextprotocol/pmcp-spec/blob/main/docs/PROTOCOL_SPEC.md
Keywords: robotics,llm,mcp,model-context-protocol,safety,industrial,protocol,digital-twin,shadow-layer,temporal-lease,robot-arm,mobile-robot,iso10218,iec62443
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
Classifier: Topic :: System :: Hardware
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: cryptography>=41.0
Provides-Extra: numerics
Requires-Dist: numpy>=1.24.0; extra == "numerics"
Provides-Extra: physics
Requires-Dist: numpy>=1.24.0; extra == "physics"
Requires-Dist: pybullet>=3.2; extra == "physics"
Provides-Extra: http
Requires-Dist: aiohttp>=3.9; extra == "http"
Provides-Extra: full
Requires-Dist: numpy>=1.24.0; extra == "full"
Requires-Dist: aiohttp>=3.9; extra == "full"
Requires-Dist: eclipse-zenoh>=0.11; extra == "full"
Requires-Dist: asyncio-mqtt>=0.16; extra == "full"
Requires-Dist: websockets>=12.0; extra == "full"
Requires-Dist: asyncua>=1.0; extra == "full"
Requires-Dist: python-snap7>=1.3; extra == "full"
Requires-Dist: pymodbus>=3.5; extra == "full"
Requires-Dist: pyserial>=3.5; extra == "full"
Requires-Dist: ultralytics>=8.0; extra == "full"
Requires-Dist: opencv-python>=4.8; extra == "full"
Requires-Dist: pybullet>=3.2; extra == "full"
Requires-Dist: ur-rtde>=1.5; extra == "full"
Provides-Extra: transport
Requires-Dist: eclipse-zenoh>=0.11; extra == "transport"
Requires-Dist: asyncio-mqtt>=0.16; extra == "transport"
Provides-Extra: industrial
Requires-Dist: asyncua>=1.0; extra == "industrial"
Requires-Dist: python-snap7>=1.3; extra == "industrial"
Requires-Dist: pymodbus>=3.5; extra == "industrial"
Provides-Extra: vision
Requires-Dist: ultralytics>=8.0; extra == "vision"
Requires-Dist: opencv-python>=4.8; extra == "vision"
Provides-Extra: ui
Requires-Dist: websockets>=12.0; extra == "ui"
Provides-Extra: drivers
Requires-Dist: pyserial>=3.5; extra == "drivers"
Requires-Dist: ur-rtde>=1.5; extra == "drivers"
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.23; extra == "dev"
Requires-Dist: pytest-cov>=4.0; extra == "dev"
Requires-Dist: pytest-timeout>=2.1; extra == "dev"
Requires-Dist: black>=23.0; extra == "dev"
Requires-Dist: ruff>=0.1; extra == "dev"
Requires-Dist: mypy>=1.5; extra == "dev"
Provides-Extra: marketplace
Requires-Dist: aiohttp>=3.9; extra == "marketplace"
Provides-Extra: depin
Requires-Dist: aiohttp>=3.9; extra == "depin"
Requires-Dist: web3>=6.0; extra == "depin"
Provides-Extra: federated
Requires-Dist: numpy>=1.24.0; extra == "federated"
Requires-Dist: aiohttp>=3.9; extra == "federated"
Provides-Extra: swarm
Requires-Dist: aiohttp>=3.9; extra == "swarm"
Provides-Extra: edge
Requires-Dist: aiohttp>=3.9; extra == "edge"
Provides-Extra: hnn
Requires-Dist: torch>=2.0; extra == "hnn"
Requires-Dist: numpy>=1.24.0; extra == "hnn"
Dynamic: license-file

# pmcp-python

Python implementation of PCP.

## Layout
- `pcp/` — the packaged library. The PyPI distribution is
  `physicalcontextprotocol` (`pip install physicalcontextprotocol`,
  version 1.0.0); the import package is still `pcp`. Includes protocol, physics
  (Hamiltonian Neural Network validation), digital twin, fleet,
  learning, and tools submodules.
- `v05/` — a parallel v0.5 implementation (server, client, types,
  kinematics, safety, registry, replay, robot_servers/). Overlaps
  significantly with `pcp/`.
- `sdk/` — a third, smaller client/server/safety/types implementation.
- `tests/` — everything except conformance (unit, integration, e2e,
  load, security, chaos, benchmark, v05, plus top-level test_types.py
  / test_compliance.py). Conformance tests now live in
  `pmcp-conformance`.

## ⚠️ Known issue: duplicate client implementations
There are at least **four** separate client implementations shipping
together and not yet consolidated:
1. `pcp/client.py`
2. `pcp/client_v2.py`
3. `sdk/client.py`
4. `v05/pcp_v5_client.py`

(plus `pcp/fleet/client.py`, which may be legitimately distinct as a
fleet-coordination client rather than a duplicate). This split
preserved all of them as-is — picking a canonical one and deprecating
the rest is flagged as follow-up work in `MIGRATION_MAP.md` and should
happen before this repo's first independent release.
