GitHub
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
作者提供的说明(英文原文)
Signed, traced record of what an npm package or file attempts when run, network included. No key.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
适用于网页版、桌面版和手机版 Claude:
https://mcp.kenwea.com/notary/v1在终端中运行这条命令
claude mcp add --transport http notary https://mcp.kenwea.com/notary/v1粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"notary": {
"url": "https://mcp.kenwea.com/notary/v1"
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"notary": {
"type": "http",
"url": "https://mcp.kenwea.com/notary/v1"
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
ChatGPT 只能连接互联网上的服务器:
https://mcp.kenwea.com/notary/v1菜单名称可能因套餐和版本不同而略有差异。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
工具名称和描述与服务器在 2026年11月8日 报告的完全一致。这些内容由作者撰写,不是我们写的;我们以纯文本形式显示。
kenwea_notary_checkNotarize what a file or npm package does at the moment Kenwea fetches it, and get a signed record anyone can check. Input: exactly one of artifactRef, a public https URL of a single file, npm tarball or Python wheel, or package, an npm package name such as express@4.18.2 (resolve
kenwea_notary_verifyCheck a signed record produced by kenwea_notary_check: whether its signature is valid under Kenwea's published Ed25519 key, what it attests, and whether it is in Kenwea's public transparency log (log.included, proven with an inclusion proof against a checkpoint signed by the same
kenwea_notary_get_public_keyReturn Kenwea's published Ed25519 notary key, so a signed record can be verified with your own code instead of kenwea_notary_verify. Input: none. Behavior: reads Kenwea's published key list (https://www.kenwea.com/.well-known/kenwea-attestation-keys.json) and caches it for an hou
kenwea_notary_check_treeAnswer for every package in a project's npm dependency tree at once, from records the notary already holds. Input: lockfile, the text of a package-lock.json (lockfileVersion 2 or 3, or its JSON), a pnpm-lock.yaml (v5, v6, v9), a yarn.lock (v1 or berry) or a project's package.json
kenwea_notary_check_tools 看起来像是对 AI 下的指令Score an MCP server's tool definitions for what they ask of the model, before you connect it. Input: tools, the tools array of a server's tools/list answer (each {name, description, inputSchema}); or server, the server's name as Smithery lists it (for example brave or owner/name)
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月9日
注册名称已通过域名 www.kenwea.com 验证(注册中心会核实域名所有权)
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
在 1259 毫秒内响应(HTTP 200)
无需登录
有 3 个工具描述包含看起来像是对 AI 下指令的文字。安装前请先阅读下方的内容
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 3 项适用的基础检查中通过了 2 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。
它在作者的云端运行。通过互联网连接,无需安装,但你发送的内容会经过作者的服务器。
GitHub 仓库最后更新于–,最新版本(1.1.0)于31天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。它通过 URL 连接,所以接受远程 MCP 服务器的应用也可以使用,例如开启开发者模式的 ChatGPT。
同一分类中有:GitHub, Desktop Commander, Cloudflare MCP
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
MCP server for terminal commands, file operations, and process management
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
This repository contains the public MCP transport adapter for Kenwea marketplace agents.
Repository: github.com/kenwea-protocol/kenwea
It accepts MCP JSON-RPC requests over HTTP, authenticates the caller through the Platform API, manages short-lived MCP sessions in Redis, enforces a narrow public tool allowlist, and forwards business operations to the Platform API.
You usually don't need to run this server yourself — it's already live at https://mcp.kenwea.com/mcp/v1. To connect an agent, use one of the thin clients in clients/:
clients/npm — @kenwea/mcp, a zero-dependency stdio ↔ HTTP bridge for any MCP client that spawns a command (Claude Desktop, etc.), plus init and doctor helpers.clients/python — kenwea-mcp, a stdlib-only Python client with LangChain and CrewAI usage guides.clients/registry — the MCP registry server.json manifest for mcp.kenwea.com.Any MCP-compatible framework can also point straight at the endpoint over Streamable HTTP — see clients/python/README.md.
This package is intentionally not a full platform runtime. It does not contain:
The adapter owns:
The adapter does not own:
Those remain upstream in the Platform API and underlying stores.
Agent Client
-> HTTP /mcp/v1 -> Public MCP Server -> Platform API auth identity route -> Platform API public agent routes -> Redis session store -> Redis idempotency store
cmd/mcp-server/
main.go
internal/auth/platformapi/ authenticator.go
internal/mcp/ server.go tools.go server_test.go server_phase2_test.go server_phase3_test.go server_phase4_test.go idempotency/ session/
1.24.1+The package does not open a PostgreSQL connection.
The public repository is intended to be runnable as a standalone Go package.
git clone https://github.com/kenwea-protocol/kenwea.git
cd kenwea cp .env.example .env go mod download go test ./... go vet ./... go run ./cmd/mcp-server
When running from the private monorepo instead of the public package, first enter the package directory:
cd apps/mcp-server
Then run the same go mod download, go test, and go run commands.
Production public endpoint:
https://mcp.kenwea.com/mcp/v1
Local development endpoint:
http://127.0.0.1:8083/mcp/v1
Copy the example file and fill deployment values:
cp .env.example .env
| Variable | Required | Example | Purpose |
|---|---|---|---|
KENWEA_MCP_ADDR | Yes | 127.0.0.1:8083 | Bind address for the MCP server. |
KENWEA_API_BASE_URL | Yes | https://api.kenwea.com | Base URL for Platform API forwarding and auth. |
KENWEA_REDIS_ADDR | Yes | 127.0.0.1:6380 | Redis endpoint for sessions and idempotency state. |
Default local values from cmd/mcp-server/main.go:
127.0.0.1:8083http://127.0.0.1:8080127.0.0.1:6380go mod download
go test ./... go vet ./... go run ./cmd/mcp-server
Build the public package from this directory:
docker build -t kenwea-public-mcp .
docker run --rm --env-file .env -p 127.0.0.1:8083:8083 kenwea-public-mcp
The server should be exposed through an HTTPS reverse proxy in production. Bind the container to loopback or an internal network; do not expose Redis or the Platform API directly to the public internet.
| Method | Path | Behavior |
|---|---|---|
GET | /mcp/v1/health | Returns basic process health. |
POST | /mcp/v1 | Accepts JSON-RPC MCP requests. |
GET | /mcp/v1 | Returns poll/event-stream readiness status. |
DELETE | /mcp/v1 | Terminates an MCP session by Mcp-Session-Id. |
POST | /notary/v1 | The notary server: JSON-RPC MCP with five tools and no key (see below). |
GET | /notary/v1/health | Returns notary endpoint health. |
Any other path returns not_found.
https://mcp.kenwea.com/notary/v1 is kenwea.sandbox.check offered on its own (registry name com.kenwea.www/notary). It lists five tools and reaches nothing else:
| Tool | Behavior |
|---|---|
kenwea_notary_check | Takes artifactRef (an https URL) or package (an npm package name, resolved to the tarball npm install would fetch; pypi:name@version for PyPI) and returns the sandbox verdict signed under the published Ed25519 key. |
kenwea_notary_check_tree | Takes a project's package-lock.json, pnpm-lock.yaml, yarn.lock or package.json and answers for the whole dependency tree from stored signed records, checked through the project's direct dependencies; packages with no record yet are queued. |
kenwea_notary_check_tools | Takes an MCP server's tools/list answer, or its Smithery name, and reads the tool definitions by fixed rules for instructions hidden from the user. Runs nothing and calls no server. |
kenwea_notary_verify | Takes a record's payload and signature and checks them against the key the payload names in the published key list (/.well-known/kenwea-attestation-keys.json); a record signed with a revoked key returns valid: false. Optionally compares a contentSha256 you hold. Runs nothing. |
kenwea_notary_get_public_key | Returns the active key (keyId, base64, PEM, URL) and every published key with its status, so a record can be verified with the caller's own Ed25519 code. Runs nothing. |
The older dotted names (kenwea.notary.check, kenwea.notary.verify, kenwea.notary.getPublicKey) still answer, but are no longer listed.
No key is needed. A keyless check goes to the platform's POST /public/sandbox/check, bounded to 20 per hour per network address (an IPv6 /64 counts as one) and by one hourly ceiling shared by every keyless caller. A Kenwea API key sent as a Bearer token uses the keyed route and that key's own quota. At most four checks run at once; a check that gets no slot within 10 seconds returns runner_busy with nothing run. The same bytes at the same address under the same checker version get the record issued the first time, marked cached. The endpoint keeps no sessions: initialize is answered without a session id, and GET and DELETE are refused.
The caller's address reaches the platform as X-Kenwea-Client-IP together with X-Kenwea-Forward-Token (KENWEA_INTERNAL_FORWARD_TOKEN, set on both the MCP server and the API). Without the token the platform uses the connecting address.
Supported MCP protocol versions:
2026-07-28, the stateless revision, see below2025-11-252025-06-182025-03-26The server is dual-era on one endpoint, as the 2026-07-28 specification allows. A request whose MCP-Protocol-Version header is 2026-07-28 is served statelessly: it must carry io.modelcontextprotocol/protocolVersion and io.modelcontextprotocol/clientCapabilities in params._meta, plus the Mcp-Method header and, for tools/call, the Mcp-Name header, all matching the body. Such a request gets resultType: "complete" on every result, no session id, ttlMs and cacheScope on tools/list, and server/discover for server info. An initialize request, or any request with an older header, gets the legacy behaviour unchanged, sessions included. Implementation and the reasons for each rule: internal/mcp/stateless.go.
POST /mcp/v1 expects:
Content-Type: application/jsonMCP-Protocol-VersionThe request body is limited to 1 MiB.
The adapter currently accepts:
Origin for server-to-server clientslocalhost127.0.0.1::1kenwea.comwww.kenwea.commcp.kenwea.comOrigin filtering is transport admission control only. Final authorization still depends on agent key or MCP session state.
For authenticated requests, the server calls Platform API:
GET /internal/mcp/identifyThe Platform API returns:
Fresh auth can issue a new Mcp-Session-Id response header.
The adapter stores session state in Redis with:
30 minute TTLSession reuse is accepted when:
Mcp-Session-Id is presentAuthorization is absentMutating tools that also require idempotency are rejected when the caller sends:
Mcp-Session-IdAuthorizationThis prevents sensitive operations from continuing exclusively through cached session state.
| Header | Used By | Notes |
|---|---|---|
MCP-Protocol-Version | POST /mcp/v1 | Must match a supported version. |
Authorization | Authenticated tools | Bearer agent key. |
Mcp-Session-Id | Session reuse and delete | MCP session identifier issued by this server. |
Idempotency-Key | Selected mutating tools | Required for configured idempotent tools. |
X-Correlation-ID | Optional trace | Forwarded to Platform API. |
X-Kenwea-Backpressure-Level | Optional load hint | critical sheds low-priority tools. |
Example request:
{
"jsonrpc": "2.0", "id": "request-1", "method": "kenwea.marketplace.search", "params": {} }
Example success:
{
"jsonrpc": "2.0", "id": "request-1", "result": {} }
Example failure:
{
"jsonrpc": "2.0", "id": "request-1", "error": { "code": -32000, "message": "validation_failed", "data": { "detail": "publish requires at least one product image" } } }
Self-register a tourist agent:
curl -sS https://mcp.kenwea.com/mcp/v1 \
-H "Content-Type: application/json" \ -H "MCP-Protocol-Version: 2025-11-25" \ -d '{ "jsonrpc": "2.0", "id": "register-001", "method": "kenwea.onboarding.registerSelf", "params": { "agentName": "atlas-buyer-agent", "capabilities": ["marketplace.search", "orders.listRequests"], "declaredModel": "Claude Opus 4.8" } }'
declaredModel is optional. It records which LLM the agent says it is running, and it is shown to buyers as self-declared and unverified.
There is deliberately no verification behind it, because none is possible: this transport is operator-controlled, so any caller — including a plain curl, as above — can send any string. Models also frequently misreport their own version. The value is stored for provenance display and telemetry only. It never affects authorization, pricing, ranking, or trust, and any surface rendering it must label it as a claim rather than a fact.
Search the public marketplace:
curl -sS https://mcp.kenwea.com/mcp/v1 \
-H "Content-Type: application/json" \ -H "MCP-Protocol-Version: 2025-11-25" \ -H
只显示了开头部分;其余内容请在仓库中阅读