skgate について
skgateは、MCPサーバー向けのセルフホスト型ゲートウェイ兼LLMプロキシです。OAuth 2.1によるMCP接続と、モデルエイリアスを設定できる共通APIを求める運用者に適しています。
主な機能
- 01OAuth 2.1対応のMCPゲートウェイ
- 02オンデマンド起動のMCPサーバー管理
- 03複数プロバイダー対応のOpenAI互換API
- 04ユーザー定義モデルエイリアスと仮想キー
- 05REST APIをMCPツールとして公開
活用シーン
- 01リモートおよび管理対象MCPサーバーへの接続を集約
- 02クライアント設定を変えずにLLMプロバイダーを切り替え
- 03選択したOpenAPI操作をMCPクライアントに公開
MCP 対応
skgateはMCPクライアントを、リモート、REST/OpenAPI、管理対象のMCPサーバーへ接続します。OAuth 2.1に対応し、管理対象サーバーをオンデマンドで起動できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
docker run -i --rm -e PUBLIC_URL -e OIDC_ISSUER -e OIDC_CLIENT_ID -e OIDC_CLIENT_SECRET ghcr.io/helv-io/skgate:0.28.0PUBLIC_URLPublic origin of skgate, no trailing slash.OIDC_ISSUERIssuer URL of the OIDC provider used for admin sign-in.OIDC_CLIENT_IDOIDC client ID.OIDC_CLIENT_SECRETシークレットOIDC client secret.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ghcr.io/helv-io/skgate:0.28.0Streamable HTTPghcr.io/helv-io/skgate:0.28.0-slimStreamable HTTPツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
skgate
セルフホスト可能な MCP ゲートウェイおよび LLM プロキシです。任意の MCP サーバーまたは REST API を OAuth 2.1 の背後で 1 つのアドレスから提供し、LLM プロバイダー(OpenAI、Anthropic、Gemini、Grok、Ollama など)を、モデルエイリアスと仮想キーに対応した OpenAI 互換 API 1 つを通じてプロキシします。Grok のサブスクリプションも利用できます。API キーは必要ありません。
あらゆる MCP サーバーに対応します。skgate がサーバーを実行できるため、サーバーごとにコンテナーを用意する必要はありません。
名前の由来
skgate /ɛsˈkɑːɡeɪt/(エス・カー・ゲート)
「sk」は多くの SI API キーの先頭に付く文字で、「gate」はゲートウェイを表しています。あまり良い名前ではありませんが、これが私たちの名前です。
ロゴの飛行機は内輪ネタです。一般の方には理解できないでしょうし、説明するつもりもありません。すみません。
品質
これは良いものですか?
はい
クイックスタート
skgate には、機密クライアントを設定したOIDC プロバイダーが必要です。管理者ログインには OIDC のみを使用します。1 台のマシンで試しますか?docs/quickstart.mdでは、バンドルされたプロバイダーを使い、アカウントを作成せずに skgate を実行できます。
# docker-compose.yml
services:
skgate:
container_name: skgate
image: ghcr.io/helv-io/skgate:latest
restart: always
ports:
- 8080:8080
environment:
- PUBLIC_URL=https://skgate.example.com
- OIDC_ISSUER=https://auth.example.com
- OIDC_CLIENT_ID=skgate
- OIDC_CLIENT_SECRET=change-me
volumes:
- ./data:/data
healthcheck:
test: ["CMD", "/skgate", "healthcheck"]
interval: 30s
timeout: 5s
retries: 3
docker compose up -dhttps://skgate.example.com/adminを開き、OIDC プロバイダーからサインインします。- mcp upstreams > Add upstream:リモート MCP サーバー、または skgate が実行する GitHub リポジトリ、npm パッケージ、PyPI パッケージを追加します(設定を提案して MCP サーバーを追加するを参照)。
- MCP クライアントを、含まれるすべてのアップストリームに対して
https://skgate.example.com/mcpまたはサイトのルートに接続するか、1 つのアップストリームに対してhttps://skgate.example.com/mcp/<alias>に接続します。要求されたらサインインします。
イメージタグ:
latest:プロキシ + 管理対象 MCP サーバー。Node.js(npx)、pnpm、Bun(bunx)、Deno、Python(uv、uvx)、Go、.NET、git を同梱しています。slim:プロキシのみ
アップグレードするには、./data をバックアップしてから、docker compose pull && docker compose up -d を実行します。
SI プロバイダーをプロキシする
skgate は、SI プロバイダーの前段で動作する OpenAI 互換 API としても利用できます。アプリを 1 つのアドレスに接続すれば、アプリを変更せずに背後のプロバイダーを切り替えられます。ユーザー定義のモデルエイリアスを使うと、アプリに任意の安定したモデル名を指定できます。
Grok は API キーなしで、サブスクリプションを使ってサインインできます。それ以外のプロバイダーでは、そのプロバイダーの API キーを使用します(OpenAI、Anthropic、Gemini、Mistral、DeepSeek、Groq、OpenRouter、Ollama、LM Studio、および任意の OpenAI 互換エンドポイント)。
- status > Grok > Sign in:表示されたアドレスを開き、コードを入力して承認します。skgate がサインイン状態を維持します。
- keys > 名前を入力 > Create key。
sk-...キーをコピーします。キーは一度だけ表示されます。 - 使用方法:ベース URL は
https://skgate.example.com/v1、API キーはsk-...です(Examples を参照)。- 次のベース URL はすべて同じ API に接続します:
/v1、/api、/api/v1、およびホスト名のみ。クライアントが要求する形式を使用してください。
- 次のベース URL はすべて同じ API に接続します:
- その他のプロバイダーの場合:status > Add providerでプロバイダーを選択し、API キーを入力します。プロバイダーのアドレスはどの形式で入力してもかまいません。skgate が適切なものを見つけます。
例
curl:モデルとチャット補完
export SKGATE=https://skgate.example.com KEY=sk-...
curl -s $SKGATE/v1/models -H "Authorization: Bearer $KEY"
curl -s $SKGATE/v1/chat/completions -H "Authorization: Bearer $KEY" \
-H 'Content-Type: application/json' \
-d '{"model":"<id from /v1/models>","messages":[{"role":"user","content":"Say hi"}]}'
OpenAI クライアント
export OPENAI_BASE_URL=https://skgate.example.com/v1 OPENAI_API_KEY=sk-...
from openai import OpenAI
client = OpenAI() # reads the two variables above
r = client.chat.completions.create(model="<id from /v1/models>", messages=[{"role": "user", "content": "Say hi"}])
print(r.choices[0].message.content)
モデルエイリアス:モデルにユーザー定義の名前を付ける
エイリアスはユーザー定義です。skgate にはエイリアスは用意されていません。任意の名前を付けて、モデルに割り当ててください。この例では grok-latest を使っていますが、名前は自由に選べます。
この 1 か所で割り当て先を変更すると、その名前を使用しているすべてのアプリが一度に切り替わります。クライアント設定を変更する必要はありません。
Grok > Aliases:New alias grok-latest、Target model grok-4.7、Add alias。
client sends {"model": "grok-latest", ...}
skgate sends {"model": "grok-4.7", ...}
エイリアスは /v1/models の一覧の先頭に表示されます。
設定の提案を使って MCP サーバーを追加する
`latest` イメージと、利用可能なプロバイダーの MCP ヘルパーモデルが必要です。初回は、ボタンの横にある **MCP ヘルパーモデルを選択** をクリックすると、ページ上でモデルピッカーが開きます。mcp upstreams > Add upstream > managed process と入力します。
-
MCP source URL / package に、次のいずれかを指定します。
ソース 実行方法 @modelcontextprotocol/server-everythingnpm パッケージ、 npxpypi:mcp-server-timePyPI パッケージ、 uvxhttps://github.com/example-org/notes-mcpgit リポジトリ:クローン、インストール、実行(プライベートの場合:Suggest でトークンを求められます) -
設定を提案 をクリックします。skgate が README とマニフェスト(
package.json、pyproject.toml、server.json)を取得します。MCP ヘルパーモデルがコマンド、引数、インストール手順、環境変数名(シークレットかどうか、必須か任意か)を提案します。手動設定 の各フィールドに値が入力され、信頼度と警告も表示されます。
まだ保存されていません。サーバーに必要な変数を設定します。
-
エイリアスを設定し、必要な変数を入力して(空の変数はサーバーに渡されません)、保存 をクリックします。サーバーの URL は
https://skgate.example.com/mcp/<alias>です。
ボタンがグレー表示されている場合は、ボタンにカーソルを合わせてください。横にある MCP ヘルパーモデルを選択 を使うか、先に status でプロバイダーを追加してください。
MCP クライアント:1 つのアップストリームまたはすべてのアップストリーム
| URL | 提供内容 |
|---|---|
https://skgate.example.com/mcp/<alias> | 1 つのアップストリーム |
https://skgate.example.com/mcp | In /mcp が付いたすべてのアップストリーム |
https://skgate.example.com/ (MCP クライアント) | Accept/Content-Type が MCP のように見える場合は /mcp と同じ集約エンドポイント。ブラウザーでは引き続き /admin が開きます |
ホスト型コネクターは OAuth を使用します(クライアント ID とシークレットは空欄にしてください)。スクリプトや CLI ではキーを送信します。
{"mcpServers": {"skgate": {"type": "http", "url": "https://skgate.example.com/mcp/<alias>",
"headers": {"Authorization": "Bearer sk-..."}}}}
オンデマンド MCP サーバー:アイドル時の RAM 使用量ゼロ
RAM に制約のあるホームラボでは、アイドル状態の MCP サーバーがリソースを消費しないようにする必要があります。
管理対象サーバー(npx、pnpm dlx、bunx、deno、uvx、git)は、skgate の子プロセスです。
デフォルト(Lifecycle が on-demand)では、最初のリクエストでサーバーが起動し、リクエストがない状態が 10 分続くと停止します。次のリクエストで再び起動します。
before 3 MCP servers = 3 containers, always running
after 1 skgate container; 0 server processes while idle, 1 per server in use
stopped --request--> starting --> running --10 min idle--> stopped
- デフォルトはオンデマンドです。Lifecycle を
always-onにすると、起動時にサーバーが起動します。 - 停止後の最初のリクエストは、サーバーが起動するまで待機します。
- 処理中のリクエストがあるサーバーは停止されません。
- アイドル時間は import JSON の
idleTimeoutSecondsで指定します(デフォルトは 600。フォームにはありません)。
{"mcpServers": {"time": {"command": "uvx", "args": ["mcp-server-time"], "skgate": {"idleTimeoutSeconds": 120}}}}
- 集約エンドポイント
/mcpには、In /mcp が付いたリモート、OpenAPI、常時起動のアップストリームが含まれます。オンデマンドサーバーは除外されるため、/mcpによって起動されることはありません。利用するには、クライアントを/mcp/<alias>に接続してください。 - リモートと OpenAPI のアップストリームにはプロセスがないため、アイドル状態にする対象はありません。
- 管理画面で Stop を実行すると、Start または Restart を実行するまでサーバーは停止したままです。
管理対象 MCP サーバー:npx(stdio)
mcp upstreams > import JSON > 貼り付け > Import の順に操作します。latest イメージが必要です。
{"mcpServers": {"everything": {"command": "npx", "args": ["-y", "@modelcontextprotocol/server-everything"]}}}
https://skgate.example.com/mcp/everything で提供されます。同じパッケージを、バンドルされている任意のランナーで実行できます。
| ランナー | command | args |
|---|---|---|
| npm | npx | ["-y", "<package>"] |
| pnpm | pnpm | ["dlx", "<package>"] |
| Bun | bunx | ["<package>"] |
| Deno | deno | ["run", "-A", "npm:<package>"] |
| Python | uvx | ["<package>"] |
管理対象 MCP サーバー:git リポジトリ
mcp upstreams > import JSON > 貼り付け > Import の順に操作します。skgate がリポジトリをクローンし、install を実行してからコマンドを実行します。
{"mcpServers": {"notes": {"command": "node", "args": ["server.js"],
"skgate": {"gitUrl": "https://github.com/example-org/notes-mcp.git", "gitRef": "main", "install": "npm ci"}}}}
リモート MCP サーバー
mcp upstreams > Add upstream > remote server と入力するか、次をインポートします。
{"mcpServers": {"docs": {"type": "http", "url": "https://mcp.example.com/mcp",
"headers": {"Authorization": "Bearer ..."}}}}
| 機能 | 内容 |
|---|---|
| Grok へのサインイン | デバイスコードまたはブラウザーからの貼り付けで認証し、トークンを更新します |
| その他のプロバイダー | OpenAI、Anthropic、Gemini など。API キーで利用できます(docs) |
| モデルエイリアス | ユーザー定義のモデル名を使い、接続先を一度変更するだけで切り替えられます |
| API | /v1、/api/v1、/api、プレフィックスなしに対応します。SSE(docs) |
| 仮想キー | ハッシュ化され、キーごとのトークン入出力を記録します(docs) |
| MCP | OAuth 2.1 の背後で、リモート、stdio、git サーバーを利用できます(docs) |
| ツールのライブ更新 | 接続済みクライアントは、更新、再インストール、またはツールのオン・オフ切り替え後に上流のツールが変更されると通知を受け、再接続せずに新しいツールを利用できます |
| ツールとしての REST API | OpenAPI の記述を渡し、操作を選択します(または 名前と選択を提案 で名前を付け、主要な操作を選択できます)。MCP クライアントはそれらをツールとして利用できます(docs) |
テスト済みの MCP クライアント
作者が稼働中の skgate でテストしたクライアントです。ステータスは実際の動作を示すもので、動作を保証するものではありません。
| クライアント | ステータス | 備考 |
|---|---|---|
| ChatGPT | OK | |
| Claude | OK | |
| Grok | OK | |
| Hermes | OK | |
| Open WebUI | OK | OAuth 2.1 を使用し、クライアントを登録して認可してください。 |
| Gemini | 警告 | 接続できますが、ツールを呼び出しません。 |
| Home Assistant | 警告 | OAuth クライアント ID とシークレットを手動で設定する必要があります。使用できる MCP 上流は 1 つだけです。 |
| Cline | 未テスト | |
| Continue | 未テスト | |
| Cursor | OK | |
| Goose | 未テスト | |
| LibreChat | 未テスト | |
| VS Code | 未テスト | |
| Windsurf | 未テスト | |
| Zed | 未テスト |
ディレクトリモード
skgate stdio は、標準入力と標準出力で小規模な読み取り専用 MCP サーバーを起動します。MCP ディレクトリやスキャナーがサーバーを起動して提供機能を問い合わせ、skgate を確認できるようにするためのものです。実際の利用には適していません。skgate を実行するには、上記の Docker イメージを使用してください。
設定は不要で、ポートを開かず、データベースを読み込まず、ネットワークも使用しません。about、list_features、config_help の 3 つのツールがあります。これらは skgate についてのみ説明します。詳しくは docs/mcp.md を参照してください。
skgate の比較
2026-10-13 時点で、各プロジェクトのドキュメントに基づく大まかなガイドです。最新の機能は各ドキュメントで確認してください。
| skgate | LiteLLM | MetaMCP | |
|---|---|---|---|
| OpenAI 互換の LLM プロキシ | 対応 | 対応、100 以上のプロバイダー | 非対応 |
| MCP ゲートウェイ | 対応 | 対応 | 対応 |
| stdio MCP サーバーの実行 | 対応。必要に応じて起動し、アイドル時は停止 | 対応。LITELLM_ENABLE_MCP_STDIO=true が設定されていない場合は無効 | 対応 |
| MCP クライアント向け OAuth | 動的クライアント登録に対応する OAuth 2.1 | 対応。ゲートウェイで動的クライアント登録 | 対応。MCP 仕様 2025-06-18 の OAuth |
| データベース | SQLite、コンテナー 1 つ | 仮想キー用の Postgres | Postgres(Docker Compose) |
比較
各プロバイダーが他の場所でどのようにサインインを提供しているか、また skgate がどのように接続するかを示します。
| プロバイダー | 他の場所でのサブスクリプションサインイン | skgate での接続 |
|---|---|---|
| xAI Grok * | OpenCode。今後さらに追加予定 [1] | サブスクリプション |
| Anthropic Claude | サードパーティには提供されていません [2] | API キー |
| DeepSeek | なし | API キー |
| Google Gemini * | CLI ログインは再利用できません [3] | API キー |
| Groq * | なし | API キー |
| Mistral * | なし | API キー |
| OpenAI | ChatGPT でサインイン [4] | API キー |
| OpenRouter * | なし | API キー |
| LM Studio | なし | キー不要(ローカル) |
| Ollama | なし | キー不要(ローカル) |
* 無料プランを利用できます。
2026-10-05 時点。各プロバイダーの利用規約を確認してください。GitHub Copilot は skgate のプロバイダーではありません。
出典
- xAI、OpenCode で Grok を使用する
- Anthropic、法務およびコンプライアンス
- Google、Gemini CLI の利用規約
- OpenAI、ChatGPT でサインイン
environment: の下、または env_file で設定します。プレースホルダーは .env.example にあります。
| 変数 | デフォルト | 用途 |
|---|---|---|
PUBLIC_URL | http://localhost:8080 | パブリックオリジン。末尾にスラッシュは付けません。 |
OIDC_ISSUER | 発行者 URL。プロバイダーのディスカバリー issuer と一致する必要があります。 | |
OIDC_CLIENT_ID, OIDC_CLIENT_SECRET | 機密クライアントの認証情報です。 | |
OIDC_SCOPES | openid profile email groups | 要求するスコープです。 |
OIDC_REDIRECT_URL | PUBLIC_URL/admin/oidc/callback | プロバイダーに登録するコールバックです。 |
OIDC_ALLOWED_EMAILS, OIDC_ALLOWED_GROUPS | 空 | 管理者になれるユーザーを制限する、カンマ区切りのリストです。 |
MCP_OAUTH_REQUIRE_CONSENT | true | /authorize でのログイン後に承認/拒否ページを表示します。 |
SECRETS_KEY | ランダムな secrets.key ファイル | 保存されたアップストリームのシークレットを暗号化します。32 バイトの base64(openssl rand -base64 32)、または scrypt で伸長したパスフレーズを指定します。 |
GITHUB_TOKEN | 空 | リポジトリを読み取る際の Suggest 用の任意の GitHub トークンです。アップストリーム独自のアクセストークンが優先されます。GitHub のレート制限が引き上げられます。 |
UPDATE_CHECK | true | 新しいリリースがある場合、ヘッダーのバージョン表示が黄色になります。false にするとチェックを無効にします。 |
LISTEN_ADDR | :8080 | リッスンアドレスです。 |
DB_PATH | /data/skgate.db | SQLite ファイルです。 |
LOG_LEVEL | info | info または debug です。 |
LOG_LINES | 1000 | 管理対象プロセスごとに保持する出力行数です(現在と前回の実行分。最大 512 KB)。 |
TZ | UTC | UI とログで使用するタイムゾーンです。例:America/New_York。 |
PUID, PGID | 1000 | 実行ユーザー ID。0、65534、または 61000-64999 は指定できません(管理対象サーバーが使用します)。 |
MANAGED_DIR | /data/managed | 管理対象のアップストリームの作業ディレクトリとクローンです。 |
MANAGED_MAX_PROCS | 0 | 同時に実行する管理対象プロセス数です。0 は無制限です。 |
Grok に必要な変数はありません。ステータスページでサインインしてください。モデルエイリアスは、カード上の Aliases コントロールから設定できます。
すべてのデータは /data(skgate.db、secrets.key)に保存されます。両方をバックアップしてください。
リバースプロキシ
PUBLIC_URL にパブリックな https オリジンを設定します。
/v1、/api、/mcp、/sse、/messages、/authorize、/token、/register、/.well-known にフォワード認証を設定しないでください。
作者がテストしたのは Traefik のみです。試した内容を添えてIssue を作成してください。
Traefik
services:
skgate:
container_name: skgate
image: ghcr.io/helv-io/skgate:latest
restart: always
network_mode: web # existing Docker network shared with Traefik; no ports needed
environment:
- PUBLIC_URL=https://skgate.example.com # the public https origin
- OIDC_ISSUER=https://auth.example.com
- OIDC_CLIENT_ID=skgate
- OIDC_CLIENT_SECRET=change-me
volumes:
- ./data:/data
healthcheck:
test: ["CMD", "/skgate", "healthcheck"]
interval: 30s
timeout: 5s
retries: 3
labels:
# no forward-auth middleware on /v1, /api, /mcp, /sse, /messages, /authorize, /token, /register, /.well-known
- traefik.enable=true
- traefik.http.routers.skgate.rule=Host(`skgate.example.com`)
- traefik.http.routers.skgate.entryPoints=websecure
- traefik.http.services.skgate.loadbalancer.server.port=8080
nginx
server {
listen 443 ssl;
http2 on;
server_name skgate.example.com;
ssl_certificate /etc/ssl/skgate/fullchain.pem;
ssl_certificate_key /etc/ssl/skgate/privkey.pem;
client_max_body_size 32m; # skgate accepts up to 32 MB
location / {
proxy_pass http://skgate:8080;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header Host $host; # keep Host
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_buffering off; # SSE streaming
proxy_read_timeout 3600s; # long streams
proxy_send_timeout 3600s;
}
}
Caddy
skgate.example.com {
# Host and X-Forwarded-* are set by default; no body limit, no response timeout
reverse_proxy skgate:8080 {
flush_interval -1 # SSE streaming
}
}
HAProxy
defaults
mode http
timeout connect 5s
timeout client 1h # long streams
timeout server 1h
timeout tunnel 1h
frontend https
bind :443 ssl crt /etc/haproxy/certs/skgate.pem alpn h2,http/1.1
option forwardfor # X-Forwarded-For; Host is kept, responses are not buffered
http-request set-header X-Forwarded-Proto https
default_backend skgate
backend skgate
option httpchk GET /healthz
server skgate skgate:8080 check
Apache
# a2enmod ssl proxy proxy_http headers
<VirtualHost *:443>
ServerName skgate.example.com
SSLEngine on
SSLCertificateFile /etc/ssl/skgate/fullchain.pem
SSLCertificateKeyFile /etc/ssl/skgate/privkey.pem
# keep Host
ProxyPreserveHost On
RequestHeader set X-Forwarded-Proto "https"
# long streams
ProxyTimeout 3600
# flushpackets: no buffering (SSE)
ProxyPass / http://skgate:8080/ flushpackets=on
ProxyPassReverse / http://skgate:8080/
</VirtualHost>
OIDC の設定
| クライアント設定 | 値 |
|---|---|
| 種類 | 機密クライアント、client_secret_basic または client_secret_post |
| フロー | PKCE S256 を使用する認可コード |
| リダイレクト URI | https://skgate.example.com/admin/oidc/callback |
| スコープ | openid profile email groups(groups が拒否される場合:OIDC_SCOPES=openid profile email) |
| ID トークン | 非対称署名(RS、PS、ES、EdDSA)。ディスカバリーの issuer は OIDC_ISSUER と一致する必要があります。 |
OIDC_ISSUER、OIDC_CLIENT_ID、OIDC_CLIENT_SECRET が設定されていなくても skgate は起動しますが、管理者機能は利用できません。
プロバイダーがログインを許可するすべてのユーザーが管理者になります。プロバイダー側で制限するか、OIDC_ALLOWED_EMAILS/OIDC_ALLOWED_GROUPS を設定してください。
Authelia、Authentik、Keycloak、Zitadel、Pocket ID のヒント:docs/oidc.md。
セキュリティに関する注意事項
- 仮想キーは SHA-256 ハッシュとして保存され、上流の認証情報は AES-256-GCM で暗号化されます。
/authorizeには管理者セッションが必要です。- 管理対象の上流は管理者が指定したコマンドを実行します。これを無効にするには、
slimイメージを使用してください。 /register、/token、/authorizeおよび管理者フォームでは、到着が遅すぎるリクエスト本文は切り捨てられます。アップロードとストリーム(/v1、/mcp)にはこの制限はありません。- ヘッダーを送信できないクライアント向けに、URL(
?key=)でキーを許可できます。URL はログ、履歴、リファラーに漏れるため、キーごとにデフォルトで無効になっています。
既知のトレードオフを含む詳細については、運用をご覧ください。
SI の支援を受けて開発
skgate は SI の支援を受けて開発されています。コーディングエージェントがコード、テスト、ドキュメントの多くを作成します。
すべての変更は作者がレビューし、セキュリティ関連の経路(OAuth、トークン、シークレット)は人間がレビューしてテストします。最先端のモデルによるレビューは補助であり、代替ではありません。実力を試すようなイシューやプルリクエストを歓迎します。
開発
go build ./... && go vet ./... && go test ./...
docs/development.md。コントリビューターとエージェントの方は、AGENT.mdをご覧ください。
ライセンス
MIT。詳しくはLICENSEをご覧ください。
Star History
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
