Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者による説明(英語の原文)
ICOS atmosphere, ocean and ecosystem greenhouse-gas observations, with citation and DOI per answer
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っているAIアプリを選んで、設定をコピーしてください。
必要なもの
どのアプリを使っていますか?
上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。
ウェブ、デスクトップ、モバイルのClaudeで使えます:
https://mcp.icos-cp.eu/mcpターミナルでこれを実行します
claude mcp add --transport http icos https://mcp.icos-cp.eu/mcpプロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます
{
"mcpServers": {
"icos": {
"url": "https://mcp.icos-cp.eu/mcp"
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
プロジェクトの .vscode/mcp.json に貼り付けます
{
"servers": {
"icos": {
"type": "http",
"url": "https://mcp.icos-cp.eu/mcp"
}
}
}ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。
ChatGPTがつなげるのは、インターネット上のサーバーだけです:
https://mcp.icos-cp.eu/mcpメニューの名前は、プランや時期によって少し違うことがあります。
選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。
この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
ツールの名前と説明は、サーバーが2026年11月6日に返したそのままの内容です。書いたのは作者で、私たちではありません。プレーンテキストとして表示しています。
list_datasetsList the ICOS datasets: one per data store, with domain (atmosphere, ocean, ecosystem), time and space coverage, licence and DOI.
search_variablesFind variable ids in the ICOS catalogue by name, quantity or unit. The ids are what estimate and get_data take. Primary measurements come before their companions (standard deviation, value counts, flags).
describe_variableOne variable in full: names, unit, which dataset, its coverage, how its quality flag is read, licence and DOI. For a multi-dimensional variable read through zarr (access 'zarr'), its axes with their labels, the slice /query serves (prescribed) and an xarray line for any other sli
estimateHow big a selection is -- rows, stations, time span -- without fetching it. Call this before get_data.
get_dataObservations for one variable, filtered by box, time, station, cruise, height and quality control. Returns at most max_rows rows as a table, the total, a download URL for the whole selection, and the citation the user must be given with any use of the data.
get_citationHow to cite a variable's data: the citation text, licence and DOI from its data passport, and -- for a selection (stations, a time window, a box) -- every data object it came from, in full. Data answers carry a short citation and only the COUNT of their sources; this lists them.
aggregateStatistics over a WHOLE selection, computed on the server: count, mean, min, max, sum and standard deviation of one variable, overall or per station, year, month or day. Use this for any average, total, range or trend instead of reading rows. Any size: a selection over 500,000 ro
find_stationsThe stations that carry a variable: id, name, position, sampling height, country, ecosystem -- near a point (sorted by distance), in a box, by name or by country. The ids are what estimate and get_data take as station=.
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック
公開者(icos-cp.eu)がリポジトリの所有者(ICOS-Carbon-Portal)ではありません。別の人が登録した可能性があります
このリポジトリはまだGitHubから読み取っていません
このリポジトリはまだGitHubから読み取っていません
544ミリ秒で応答(HTTP 200)
サインイン不要
8件のツールの説明を読み、AIへの隠れた指示は見つかりませんでした
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
当てはまる基本チェック3項目のうち2項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
作者のクラウドで動きます。インストール不要でインターネット経由でつながりますが、送った内容は作者のサーバーを通ります。
GitHubリポジトリの最終更新は–、最新バージョン(0.3.0)がレジストリに届いたのは今日です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。URLでつながるので、リモートMCPサーバーに対応したアプリ(開発者モードのChatGPTなど)でも使えます。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, Hunter Killer
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ 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.
Liquidation walls, snapshot age, evidence labels and a public record. Managed OAuth.
作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。
ICOS carbon and greenhouse-gas observations for AI assistants, over the Model Context Protocol. A thin server over the ICOS zarr proxy (https://zarr.icos-cp.eu): every number comes from the proxy, and every data answer carries the citation, licence and DOI. The plan, and why it is built this way, is docs/plan.md.
Phases 1 and 2: seven read-only tools, five resources, three prompts, and a per-store access policy.
| tool | does |
|---|---|
list_datasets | the stores, with domain, coverage, licence, DOI |
search_variables | variable ids by name, quantity or unit ("methane" finds ch4) |
describe_variable | one variable in full, with how its QC flag is read |
find_stations | the stations carrying a variable: near a point, in a box, by name or country |
estimate | how big a selection is, before fetching it |
get_data | at most 2,000 rows, the total, a CSV download URL for the whole selection, the citation |
get_citation | citation, licence and DOI from the data passport |
uv run icos-mcp # stdio, for a local client uv run icos-mcp --transport streamable-http --port 8090 # http://127.0.0.1:8090/mcp
ICOS_PROXY points it at another proxy (the RC, a test instance).
Over HTTP the server also answers GET / with an HTML page in the style of zarr.icos-cp.eu -- built from what it offers an anonymous caller: the endpoint and how to connect, the public datasets, the tools and prompts, the citation rule (landing.py; ICOS_MCP_PUBLIC_URL sets the endpoint it names, default https://mcp.icos-cp.eu) -- and GET /health.
DEFAULT-DENY: a store is offered only when a rule names it, whatever the proxy behind the server would serve. Without a config file the rules are exactly the public stores of zarr.icos-cp.eu (config/public.json writes them out). ICOS_MCP_CONFIG=/path/to/config.json sets the proxy, the Host header to send it, the base of download links, and an ordered list of store rules, each public or token:
uv run icos-mcp --show-policy # what this config offers, to whom uv run icos-mcp --hash-token TOKEN # the line a tokens_file takes
config/ct122.example.json is the shape for running beside zpd on CT122, where zpd answers for EVERY store on the machine (the shuttle, GlobalView, AGAGE): the public stores by name, those three behind tokens, anything else hidden. A token store is offered to an HTTP caller sending Authorization: Bearer whose SHA-256 is in its tokens_file (plain tokens are never stored); a local stdio caller is the operator and uses ICOS_MCP_TOKEN, which never speaks for an HTTP caller. A hidden store answers exactly as one that does not exist, and the static icos://catalogue resource -- which the protocol does not tell who is asking -- lists the public stores only.
An oauth section in the config makes signing in required over HTTP. Anyone can sign in. The aim is to know who uses the server, not to keep anyone out:
"oauth": {"issuer": "https://sso.fs4vm.icos-cp.eu/realms/icos-test", "audience": "https://mcp.icos-cp.eu"}
The server is only a resource server. ICOS's Keycloak handles the sign-in, through cpauth, Google or ORCID. MCP clients find Keycloak in /.well-known/oauth-protected-resource, register themselves with it and send the user to sign in. A token must be signed by the realm and carry this server's audience, which needs an audience mapper in Keycloak. The store tokens above still work. The landing page and /health stay open, and the stdio operator is never asked to sign in (auth.py).
Signing in also allows a group store rule. The store is offered to members of a Keycloak group, or of a subgroup of one, and to no one else. The groups come from the verified token's groups claim:
{"match": "agage*", "access": "group", "groups": ["agage"], "public_url": "https://agage-zarr.icos-cp.eu"}
Group names are paths below /apps/mcp in the realm: agage is /apps/mcp/agage. That is the only part of a user's groups Keycloak sends this server.
Access is granted and withdrawn in Keycloak, not in the config. A group rule may also list store tokens for scripts. A group rule without an oauth section is refused at load, because nobody could reach it.
In Claude Code:
claude mcp add icos -- uv --directory /path/to/zarrm9/mcp run icos-mcp
Resources: icos://stores/{store}/agent-guide, icos://stores/{store}/croissant, icos://catalogue, icos://llms.txt, icos://data-passport. Prompts: station_record, compare_stations, ocean_region.
uv run pytest # over RECORDED proxy answers (tests/cassette) ICOS_CASSETTE_MODE=record uv run pytest # re-record from the live proxy ICOS_LIVE=1 uv run pytest # live, nothing recorded uv run ruff check src tests conformance/run.sh # the MCP conformance suite (needs Node)
conformance/run.sh starts a local server and runs the MCP project's own conformance suite against it, pinned to 0.1.16 by conformance/package-lock.json. conformance/baseline.yml lists the known failures and why each one fails (mostly the suite's own test fixtures, which a real server doesn't carry). It is read in both directions: a new failure fails the run, and so does an entry that now passes.
eval/questions.json is the DRAFT evaluation set: 30 questions across the three domains, each naming the variable and station a correct answer must use and a truth computed from the proxy at run time. It needs one reviewer per domain before it is relied on; the runner is not written yet.
This server is the ORACLE for the M9 port (mcpd, plan phase 7): its tool names, descriptions and answer shapes are the contract the port is replayed against, so change them deliberately.
Copyright (C) 2026 ICOS ERIC -- Carbon Portal.
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See LICENSE.
The DATA this server serves are not covered by this licence: each answer carries the licence of its dataset (ICOS data are CC BY 4.0) and the citation to give with it.