wishlist-mcp
wishlist-mcp
wishlist.fit のホスト型 MCP サーバーです。Claude、ChatGPT、または Codex があなたの代わりに wishlist を読み取り・更新できるようにするものです。
https://mcp.wishlist.fit/mcpapp.wishlist.fit/connect から接続します。そこにクライアントごとのセットアップ手順があります。最初に wishlist アカウントが必要です。このサーバーがアカウントを作成することはありません。
これは何か
wishlist REST API の前面に立つ、純粋な OAuth 2.1 リソースサーバーです。データベースもビジネスルールも持ちません。可視性、レート制限、招待の処理はすべて wishlist API 側にあり、このサーバーはユーザー自身のアクセストークンでその API を呼び出すことにより、それらを継承します。
この分離は意図的です。独自のルール・コピーを持つ2つ目のサービスを作る選択肢は、誰が何を見られるかについて2つのサーフェスが静かに食い違う始まりです。
Claude / ChatGPT / Codex
│ MCP over HTTP, bearer token
▼
this server ──── verifies the token (issuer + audience)
│
│ the same token, forwarded
▼
api.wishlist.fit ──── applies visibility, rate limits, invite rules
│
▼
PostgresWorkOS AuthKit が認可サーバーです。このサーバーは何も発行せず、同意画面も表示しません。AuthKit が署名したものを検証するだけです。
ツール
14個あります。それぞれ、Web アプリで手動でできるひとつの操作に対応します。パリティが原則です。エージェント専用の特権も、アプリ自身ができない操作もありません。
ツール | 種別 |
| 読み取り |
| 読み取り |
| 読み取り |
| 読み取り |
| 読み取り |
| 読み取り |
| 読み取り |
| 読み取り |
| 書き込み |
| 書き込み |
| 書き込み |
| 書き込み |
| 破壊的 |
| 破壊的 |
wishlist_get_gift_guide は、人のプロフィールとウィッシュリストをまとめて返します。これがないと、ギフトを贈る人の旅程は3往復ラウンドトリップになるため、この関数はこのサーバーに誰もが接続する理由です。
破壊的ツール2つは destructiveHint: true を持つため、取り消せない操作を確認するクライアントは先に確認を求めます。招待を送信すると実際の人間にメールされ、取り消すことはできません。受け入れることは相互的です。招待した人があなたの circle 限定フィールドにアクセスでき、あなたもその人の circle 限定フィールドにアクセスできます。
接続1つですべて
スコープはありません。WorkOS はカスタムスコープを表現できないので、接続はツール一式全体を運びます。書き込み保護は構造的ではなく行動的です。上記の注釈、ツールの説明、API が課すレート制限がそれです。
ローカルで実行する
uv sync
cp .env.example .env # point it at a local API and the Local WorkOS environment
uv run python -m wishlist_mcp.mainuv run pytest
uv run ruff format --check . && uv run ruff check .テストは respx で wishlist API をスタブします。テストが確認するのは、このサーバー自身の仕事です。トークンの検証、リクエストの形作り、APIエラーをモデルが対処できる文章に変えることです。ルールは API 側に属し、そこでテストされます。
設定
全変数には接頭辞 WISHLIST_MCP_ が付きます。.env.example を参照してください。
変数 | 目的 |
| 呼び出す wishlist REST API |
| WorkOS AuthKit の発行者。空ならサーバーは起動を拒否します |
| 正規のURI。すべてのトークンのオーディエンスがそれと厳密に一致する必要があります |
| どのホスト以外でもサーバーは404を返します |
| API を待つ時間 |
RESOURCE_URI は、WorkOS に設定されたリソースインジケーターと/mcp パスを含めて文字単位で一致しなければなりません。ここが合わず、クライアントが接続を拒否する最も多い原因です。
これを変更する前に知っておくべきこと
これらはどれも、一度本番に到達したバグです。
get_http_headers()はauthorizationを剥ぎ取ります。 明示的に取り出してください。そうしないと、ツール呼び出しはすべて"no access token"と報告し、一方でinitializeとtools/listは成功します。ツール本体の実行前に応答されるからです。グリーンなハンドシェイクは、ツールが動く証拠にはなりません。MCP アプリはルートにマウントされ、自身のパスを持ちます。
/mcpにマウントすると、Starlette は/mcpを/mcp/にリダイレクトし、各クライアントに渡されるアドレスには最後のスラッシュがないからです。X-Forwarded-Protoは信頼されています。 Cloud Run が TLS を終端するため、そうでないと生成されるURLがすべてhttp://になります。上記のリダイレクトと組み合わせると、かつてクライアントがベアラートークンを平文で送ることを意味していました。**FastMCP のライフスパンは、アプリのライフスパンにチェーンされます。
**ASGI アプリのマウントそのものはライフスパンを起動しませんから、
**他のツール呼び出しは「Task group is not initialized」というエラーになります。
ユニットテストは通るのに。 (実装を確認してください)
TestClientはデフォルトでリダイレクトを追跡します。 ポイントがパスが直接応答することであれば、follow_redirects=Falseを渡します。
デプロイ
Cloud Run、asia-southeast1。wishlist の他の部分と同じプロジェクトで、main はプッシュ時にデプロイされます。インフランスは wishlist-infrastructure にあります。
ライセンス
MIT。 LICENSE を参照してください。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Cloud-hosted MCP server for durable AI memory
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/teslakoile/wishlist-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server