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.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っている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日にチェック
レジストリ名はドメイン www.kenwea.com で確認済みです(レジストリがドメインの所有を確認しています)
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
まだチェックしていません。エンドポイントは順番にチェックしています
まだチェックしていません。エンドポイントは順番にチェックしています
まだチェックしていません。エンドポイントをチェックするときにツール一覧を読み取ります
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
作者のクラウドで動きます。インストール不要でインターネット経由でつながりますが、送った内容は作者のサーバーを通ります。
GitHubリポジトリの最終更新は–、最新バージョン(1.1.0)がレジストリに届いたのは30 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。URLでつながるので、リモートMCPサーバーに対応したアプリ(開発者モードのChatGPTなど)でも使えます。
同じカテゴリには:GitHub, Desktop Commander, Cloudflare MCP
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
作者のリポジトリから書かれたとおりにコピーしたものです。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
冒頭だけを表示しています。続きはリポジトリで読めます