karma-mcp-server
Karma 通用 Agent MCP Server —— 薄接入层。把已有后端能力接到 MCP,不重写任何业务。
- 设计:
docs/mcp/karma-mcp-architecture.md - 工具契约:
docs/mcp/karma-mcp-tools.md - 安全:
docs/mcp/karma-mcp-security.md
安全红线
- 本进程只注入
KARMA_RUNTIME_KEY;禁止私钥、助记词。启动时会检查并拒绝启动。 - 远程 HTTP 传输默认关闭(需
KARMA_MCP_ENABLE_HTTP=1+KARMA_MCP_HTTP_TOKEN;缺一拒绝启动)。 - Tier-2/3(动钱)默认不注册(
KARMA_MCP_ENABLE_TIER2/3=1才开)。
环境变量
| 变量 | 必填 | 说明 |
|---|---|---|
KARMA_RUNTIME_KEY |
是(配对后) | KRM_RT_…;只读 |
KARMA_RUNTIME_URL |
否 | 默认 http://localhost:8000 |
KARMA_AGENT_PRIVATE_KEY |
否 | Agent 签名私钥(base64/hex),留在本机 |
KARMA_AGENT_ID |
否 | 主人授权的 agent id |
KARMA_AGENT_ENV_PATH |
否 | 凭据文件路径覆盖(默认 ~/.karma/agent.env) |
KARMA_MCP_ENABLE_TIER2 |
否 | 开启交易/交付工具(默认关) |
KARMA_MCP_ENABLE_TIER3 |
否 | 开启结算/争议工具(默认关) |
KARMA_MCP_ENABLE_HTTP |
否 | 开启 Streamable HTTP(默认关) |
KARMA_MCP_HTTP_TOKEN |
远程必填 | 远程 HTTP 的静态 bearer token;缺了拒绝启动 |
KARMA_MCP_STATE_DIR |
否 | 配对状态目录(含配对码),默认 ~/.karma/pairings |
KARMA_MCP_ISSUER_URL / KARMA_MCP_RESOURCE_URL |
否 | 远程鉴权 issuer / resource,默认取 host:port |
安装
pip install karma-mcp-server # 已发布到 PyPI(当前 0.1.1)
# 或者,从仓库里装:
pip install ./packages/karma-mcp-server
装 / 接线 / 自检 / 发包的完整口径:
docs/mcp/karma-mcp-integration.md。
运行
pip install -e ".[dev]"
karma-mcp-server # stdio(本地 Agent,默认)
KARMA_MCP_ENABLE_HTTP=1 KARMA_MCP_HTTP_TOKEN=... \
karma-mcp-server --transport streamable-http --host 0.0.0.0 --port 8765
远程启动有三道红线:进程里出现私钥 / 未设 KARMA_MCP_ENABLE_HTTP=1 / 没配
KARMA_MCP_HTTP_TOKEN —— 任一条不满足都拒绝启动。
测试
python -m pytest -q -c pyproject.toml
当前状态(第二阶段 S2–S5 已落地)
已实现并有测试(packages/karma-mcp-server/tests,56 例全绿):
- S2 薄层:配置 / 凭据(只读)/ Agent Ed25519 逐请求签名(与服务端逐字对齐)/
后端客户端(错误分类 +
client_nonce)/ 凭据 0600 落盘 / stdio 入口。 - S3 配对与身份:
karma_connect→karma_connect_status→karma_connect_claim(配对码只落本机文件,凭据只回指纹);身份核验、授权状态、策略、交易 / 结算 / 信誉查询。 - S3 授权读写:
karma_request_authorization(预览,不写后端)→karma_submit_authorization(主人钱包签名后铸造)→karma_update_authorization(铸新 + 撤旧)→karma_revoke_authorization(一键停用)。 - S4 远程入口:
--transport streamable-http+ 静态 bearer token(常量时间比较)。 - S5 交易工具:Tier-2/3 已实现,默认不注册,按 Tier 白名单 fail-closed。
| Tier | 默认 | 开启方式 | 内容 |
|---|---|---|---|
| T0 只读 | 开 | — | 连接 / 身份 / 授权状态 / 策略 / 交易 / 结算 / 信誉 / 凭证查询 |
| T1 授权 | 开 | — | 授权预览 / 提交(需主人钱包签名)/ 更新 / 撤销 |
| T2 交易 | 关 | KARMA_MCP_ENABLE_TIER2=1 |
下单 / 收款码 / 确认裁决 / 证据 / 回执 / 进度 / 结算请求 |
| T3 资金 | 关 | KARMA_MCP_ENABLE_TIER3=1 |
凭证校验 / 争议 / 退款 |
未做(S6 及以后):跨平台适配器(Telegram / 微信等)、完整 OAuth 2.1 授权服务器接入。
Metadata
Release files for karma-mcp-server 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| karma_mcp_server-0.1.1.tar.gz | 44.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| karma_mcp_server-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 78.7 kB
Release files / karma_mcp_server-0.1.1.tar.gz
| Download URL | karma_mcp_server-0.1.1.tar.gz |
|---|---|
| Size | 44.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
620da53e284adc15dd1caae7e5e37f1637baccd2bd99d0aca0a088107f23cc18
|
|
BLAKE2b-256 checksum How to use checksums |
f079919a78c07db5d4f4aad54603a57fe30cc6d7862e773c1f3461fd92ad184a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|
Release files / karma_mcp_server-0.1.1-py3-none-any.whl
| Download URL | karma_mcp_server-0.1.1-py3-none-any.whl |
|---|---|
| Size | 34.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d68ce2c22b97a160a25863c13dd74a8231250b049a8352025f955c0f93dbb5d3
|
|
BLAKE2b-256 checksum How to use checksums |
700b0945d714c733e764458bf6ba57827d6d49948da1dc823d94cf9ad9e223d1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.15
|