Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
Pick one movie, show, book, artist or restaurant a whole group will enjoy, using Qloo taste data.
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
ウェブ、デスクトップ、モバイルのClaudeで使えます:
https://common-ground.lipmichal.workers.dev/mcpターミナルでこれを実行します
claude mcp add --transport http common-ground https://common-ground.lipmichal.workers.dev/mcpプロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"common-ground": {
"url": "https://common-ground.lipmichal.workers.dev/mcp"
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"common-ground": {
"type": "http",
"url": "https://common-ground.lipmichal.workers.dev/mcp"
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
ChatGPTがつなげるのは、インターネット上のサーバーだけです:
https://common-ground.lipmichal.workers.dev/mcpメニューの名前は、プランや時期によって少し違うことがあります。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
ツールの名前と説明は、サーバーが2026年11月7日に返したそのままの内容です。書いたのは作者で、私たちではありません。プレーンテキストとして表示しています。
find_common_groundPick ONE movie, TV show, book, music artist, podcast, restaurant (kind=place, with location) or destination that a whole group will enjoy. Give each person's name and 2 to 5 things they love. Favourites can come from another category with tasteFrom, for example music artists to p
plan_night_outPlan dinner, drinks and a live music venue in one city for 2 to 6 friends. Give the city and each friend's name with 1 to 4 music artists, movies, TV shows or books they love. Optionally give an exact night date as YYYY-MM-DD; Qloo then filters venues by that date's weekday only,
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
レジストリ名は、リポジトリを所有するGitHubアカウント theluckystrike で確認済みです
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
300ミリ秒で応答(HTTP 200)
サインイン不要
2件のツールの説明を読み、AIへの隠れた指示は見つかりませんでした
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック3項目のうち3項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
作者のクラウドで動きます。インストール不要でインターネット経由でつながりますが、送った内容は作者のサーバーを通ります。
GitHubリポジトリの最終更新は–、最新バージョン(1.0.0)がレジストリに届いたのは11 日前です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。URLでつながるので、リモートMCPサーバーに対応したアプリ(開発者モードのChatGPTなど)でも使えます。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, Microsoft Exchange Online MCP
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Exchange Online admin for MSPs: forwarding audits, EWS posture and offboarding, no PowerShell
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
Plan a night out your whole friend group will love. For friends who argue about where to go. Everyone names a few bands, films, shows or books they love. Qloo's cross-domain taste graph turns that shared taste into dinner, drinks and live music in your city. Each stop names the favourites that picked it and shows how much each friend's taste counts.
Open the live app · MCP endpoint · Live mode check
The earlier 85-second video and screenshots below show the interface before the optional date field. The video also uses older score and time labels. Use the app and the current limits below to assess present behavior.
feature.explainability. The app names the favourites that drove the pick ("Radiohead, Ana, 16%") and splits the pick between friends. When one friend's taste barely counts, the app says so and asks for one more favourite.Below the night planner, "Or pick one thing together" picks one movie, show, book, artist or restaurant the same fair way. No login is needed.
The privacy notice is web/privacy.html in this source. Its public URL becomes available when this version is deployed.
The browser sends the city, optional date, friend names and favourites to the app's Cloudflare Worker. In live mode the Worker sends favourite text unchanged to Qloo search, then matched entity IDs to Qloo Insights, with the city and selected weekday for place and night calls. A city is required when picking a restaurant. Member names are not a separate field in those Qloo request parameters; a name typed into a favourite field is sent as favourite text. The app has no accounts and does not automatically anonymize the text you enter. The app's own web code sets no cookies and loads no analytics script. The Worker has no database binding. The web night API at /api/night can hold a plan in a per-isolate memory cache for up to 30 minutes for reuse. That period is a reuse window, not a deletion time, and entries can remain until eviction or isolate shutdown. The single-pick web API and both MCP tools do not use that cache. Result images are loaded directly from Qloo-supplied URLs, so their host receives ordinary network metadata such as IP address and user agent, and may receive the referring page depending on browser policy. Qloo and Cloudflare process data under their own policies. Their actual retention is not controlled or fully known by this app. The verified public contact is the GitHub issue tracker. Do not put personal data in a public issue.
Both flows are MCP tools on one Streamable HTTP endpoint, plan_night_out and find_common_ground.
claude mcp add --transport http common-ground https://common-ground.lipmichal.workers.dev/mcp
Then ask your agent, for example "Plan a night out in Lisbon. Ana loves Radiohead and Dune, Tom loves Kendrick Lamar and The Bear, Priya loves Phoebe Bridgers and Normal People." plan_night_out takes a city, 2 to 6 members with 1 to 4 likes each, and an optional date in YYYY-MM-DD form. It returns the available stops, the favourites behind each, each friend's share, a call trace and dateScope. A plan can be incomplete if Qloo cannot find all three stops. find_common_ground input is kind, an optional tasteFrom (a category, or any for mixed favourites), an optional location and 2 to 8 members with 2 to 5 likes each. The tool returns the pick, three alternatives, a reason per person and a trace of the Qloo calls.
Registry name io.github.theluckystrike/common-ground in the official MCP registry.
Built for the Qloo Agentic Hackathon by Michael Lip. MIT license.
Use Node.js 22 or later and npm.
npm ci
npm test npm run typecheck npm run dev
Open the local URL printed by Wrangler. Without a key, the app runs on local synthetic fixtures (see below).
For local live mode, place the key in .dev.vars. Use a line with the variable name and your actual value. Keep this file private.
QLOO_API_KEY=YOUR_API_KEY
GET /search resolves each favourite across artists, movies, TV shows and books. Each favourite keeps the type Qloo returns.GET /v2/insights call sends everyone's favourites as signal.interests.entities, filter.type=urn:entity:place, filter.location.query with the city, a stop tag and feature.explainability=true. Stop tags are urn:tag:genre:place:restaurant, urn:tag:category:place:bar and urn:tag:genre:place:live_music_venue.filter.location.radius=0). The app keeps up to 20 real venues. A venue needs opening hours in Qloo and a category that fits the stop, such as a restaurant for dinner. Shops, malls, markets and event rentals are dropped, and so are streets and districts. Dinner prefers restaurants that are not also bars or cafes, and live music prefers music venues that are not also restaurants. Each falls back to mixed venues only when a city has fewer than 3 pure ones. One more Insights call per friend scores that pool with filter.results.entities. With a selected date, every group and per-person venue call also sends Qloo's documented filter.hours weekday value.query.explainability scores name the favourites behind it. When Qloo weighs the favourites about equally, the app says the venue is a balanced compromise instead of showing near-equal percentages. Each friend's share is the sum of their favourites' scores. A shared favourite is split evenly.A four-friend plan makes 8 searches and 15 Insights calls. The same plan within 30 minutes is answered from memory, so replays by judges do not spend the quota. The cache separates each selected calendar date from other dates and from an undated request.
The Worker reads QLOO_API_KEY from its environment. On Cloudflare this value is a Worker secret. The browser never receives the key.
GET /search resolves each favourite with query and types. With tasteFrom, favourites resolve in that category, for example music artists.GET /v2/insights runs separately for each person.filter.type, signal.interests.entities and take=50.filter.location.query and filter.tags=urn:tag:genre:place:restaurant, so museums and stations drop out.query.affinity in the documented zero to one range.filter.results.entities.The key travels only in the X-Api-Key request header. Hackathon calls use https://hackathon.api.qloo.com. Calls time out after five seconds, or nine seconds for explainability calls. A timeout is retried once. Calls are spaced to stay under the hackathon limit of 10 requests per second. A 429 answer is retried twice after one second. Authentication, quota and network errors are reported. A failed live call never switches to fixtures.
See the search reference, Insights reference and hackathon developer guide.
This is for local development only. The hosted app uses live data. Without a key, the same Qloo client reads local synthetic fixtures. The same resolution and fairness code runs in both modes. The page banner, result note, JSON response and MCP response show the mode. Fixture affinities and IDs are invented. They are not evidence of Qloo recommendations or real user preferences. The night plan tests use one small recorded set of real Qloo responses for a Lisbon group, trimmed to IDs, names, types, affinity and explainability.
The fixture file cites the documented response schemas. Search returns success, duration and a results array. Insights returns success and results with entities and duration. Each Insights entity has query.affinity.
The examples cover movies, books, restaurants, artists and TV shows. Only names listed in the fixture catalogue resolve without a key. Unknown names are reported rather than invented. Fixture restaurants are fictional and limited to the Warsaw example. Their names do not imply that a real venue exists.
Authenticate Wrangler with your own Cloudflare account.
npm run deploy
npx wrangler secret put QLOO_API_KEY npm run verify:live -- https://YOUR-WORKER.workers.dev
The secret command prompts for the key. It updates the deployed Worker without storing the key in source. The verification command checks the mode and performs a real group pick. It prints no credentials and stores no Qloo data.
GET /health reports the selected mode and whether a key is configured. A live health response alone proves configuration. A successful live pick confirms that Qloo answered.
Connect a Streamable HTTP MCP client to /mcp on the deployed host. List tools and call find_common_ground with the same input as /api/pick.
{
"kind": "movie", "members": [ { "name": "Ana", "likes": ["Prisoners", "Gone Girl"] }, { "name": "Tom", "likes": ["Interstellar", "Inception"] } ] }
Add "tasteFrom": "artist" to pick a movie from music favourites.
The tool returns structured results and plain text. It is read only and does no
冒頭だけを表示しています。続きはリポジトリで読めます