Ted Eu について
Ted Eu は、EU 各国の国・地域・自治体による公共調達公告と落札情報を TED から検索する MCP サーバーです。カテゴリ、国、日付、供給業者などの条件で絞り込み、公告や落札記録を確認できます。
主な機能
- 01条件を指定した調達公告検索
- 02公告の詳細説明を取得
- 03カテゴリ語を CPV コードに変換
- 04落札情報と受注者の検索
- 05供給業者と発注機関の記録確認
活用シーン
- 01国やカテゴリ別に入札案件を探す
- 02公告内容と提出期限を確認する
- 03供給業者の落札履歴を調べる
- 04発注機関の落札先やカテゴリを確認する
MCP 対応
Pipeworx ゲートウェイまたはローカル stdio MCP サーバーを通じて、TED の公告・落札情報検索ツールを MCP クライアントに提供します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://gateway.pipeworx.io/ted-eu/mcpclaude mcp add --transport http pipeworx-io-ted-eu https://gateway.pipeworx.io/ted-eu/mcp{"mcpServers":{"pipeworx-io-ted-eu":{"type":"http","url":"https://gateway.pipeworx.io/ted-eu/mcp"}}}Cursor で開く{"servers":{"pipeworx-io-ted-eu":{"type":"http","url":"https://gateway.pipeworx.io/ted-eu/mcp"}}}VS Code で開く{"mcpServers":{"pipeworx-io-ted-eu":{"type":"http","url":"https://gateway.pipeworx.io/ted-eu/mcp"}}}{"mcpServers":{"pipeworx-io-ted-eu":{"serverUrl":"https://gateway.pipeworx.io/ted-eu/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
47| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| q | string | いいえ | question の別名。 |
| ask | string | いいえ | question の別名。 |
| text | string | いいえ | question の別名。 |
| input | string | いいえ | question の別名。 |
| packs | array | いいえ | 任意。ルーティング対象をこれらのパックスラッグに限定します(例:["sec-form-d","sec-13f"])。その場合、ルーターは該当パック内のツールのみを選択します。省略すると、デフォルトの全カタログへのルーティングになります。スラッグは list_packs / search_packs / https://pipeworx.io/directory から取得できます。リストにない、または不明なスラッグは無視され、_meta.pack_scope.ignored に記載されます。該当するスラッグが 1 つもない場合は、カタログ全体にルーティングし、_meta.pack_scope.full_catalog:true を設定します(空の回答にはなりません)。 |
| query | string | いいえ | question の別名。 |
| prompt | string | いいえ | question の別名。 |
| message | string | いいえ | question の別名。 |
| question | string | はい | 自然言語での質問またはリクエスト。query、q、prompt、text、input、ask、message をエイリアスとして使用できます。 |
詳細
@pipeworx/ted-eu
TED(Tenders Electronic Daily)MCP — すべての加盟国の国、地域、市町村の発注機関によるEUの公共調達公告です。年間約70万件の公告があり、建設関連の公告は130万件が登録されています。キーは不要です。
Pipeworx の一部です — AI エージェントを1684以上のライブデータソースに接続するMCPゲートウェイです。
ツール
search_notices(query?, country?, category?, cpv?, date_from?, date_to?, open_only?, value_min?, value_max?, notice_type?, sort?, limit?, page?)— デフォルトでは新しい順です。categoryには平易な英語(「construction」、「IT services」、「medical equipment」など)を指定するとCPVに変換されます。CPVコードが分かっている場合はcpvに指定できます。get_notice(publication_number)— 発注機関が記載した説明全文を含む公告を1件取得します。notice_id/idも別名として使用できます。cpv_lookup(term)— 平易な英語のカテゴリからCPVコードを検索するか、CPVコードが対象とする内容を調べます。ted_search_awards(query?, winner?, buyer?, country?, winner_country?, category?, cpv?, date_from?, date_to?, value_min?, value_max?, sort?, limit?, page?)— 契約の落札公告のみを対象に、落札者と金額を検索します。公告に記載された落札者はすべて返されます(ロットおよびコンソーシアムの構成員を含む)。公開されている場合はwinner_countriesとdecision_dateも返されます。ted_supplier_history(supplier, country?, category?, cpv?, date_from?, date_to?, limit?, page?)— 指定した経済事業者が落札した案件をすべて新しい順に取得し、通貨別の落札額、主な発注機関、主なCPVカテゴリの概要も返します。名前は部分一致です(「Siemens」なら、Siemensのすべての法人が対象になります)。ted_buyer_profile(buyer, country?, category?, cpv?, date_from?, date_to?, limit?, page?)— 指定した契約機関が発注した案件をすべて取得し、主な落札者とカテゴリも返します。発注機関が使用する言語での名称を指定してください(「City of Paris」ではなく「Ville de Paris」)。
認証
不要です。公開検索エンドポイントは認証なしで応答します。
ただし、GET /notices/{id}はキーなしでは使用できず、「Missing Authorization header」というエラーで400を返します。そのため、get_noticeは公告番号で絞り込んだ公開検索エンドポイント経由で取得します。
同じデータをキーなしで取得できます。
返されるデータ
各公告は、TEDの生データの形式からフラット化されています。
| フィールド | 説明 |
|---|---|
title / title_language | TEDに英語のタイトルがある場合(通常はあります。24言語すべてで公開されています)は英語、ない場合は公告の原語で、言語は常に明記されます |
title_original | 発注機関が使用する原語のタイトル。英語のタイトルと異なる場合に表示されます |
buyer、buyer_country、buyer_city | 契約機関 |
value、currency | 発注機関が入力した値で、TEDによる検証はありません。 常にEURとは限りません。チェコの落札額はCZK、ハンガリーの落札額はHUFで返されます。金額で並べ替えると、まず誤入力が見つかります |
deadline | 申請書類の提出期限 |
winner | 落札公告の場合(can-standard) |
notice_type | cn-standard 公告 · can-standard 落札公告 · pin-only 事前情報公告 |
url | ted.europa.eu上の公告 |
レスポンスのエンベロープにはtotal、partial、sorted_byが含まれます。partial: trueは、TEDがタイムアウトし、不完全な結果セットを返したことを意味します — 件数と合計は下限値であり、確定した回答ではありません。
フリーテキスト
query はタイトルだけでなく、TED の FT 演算子を使って通知全文を検索します。検索範囲を段階的に広げます。
- 文字列全体を完全一致のフレーズとして検索します。
- 先頭の3語を AND で結び、どこに現れても検索します。
- 最も具体的な2語を AND で結びます。
何かが見つかった時点で検索を終了し、どの方法で一致したかを match_strategy で報告します。これは重要です。~ はフレーズ一致を行うため、従来のタイトルまたは説明文を対象としたフレーズ検索では、実際の呼び出し元が送る一般的な複数語のクエリはすべて0件でした。「backup disaster recovery business continuity」、「data center colocation IaaS PaaS」、「GRC risk management compliance governance」はいずれも0件でしたが、AND で結んだ形式では実際の通知が見つかります。
スペルの揺れを考慮するには、2つの語の間に OR を記述してください。fuze OR fuse artillery は (fuze OR fuse) AND artillery になります。両方のスペルを AND で結ぶと、両方を含む通知を検索してしまうためです。
意図的にいずれかの語に一致する検索へのフォールバックはありません。実測の結果、採用しないことにしました。「fuze OR fuse artillery ammunition」に対して、印刷物を筆頭とする42件の通知が返されたためです。説明付きの0件のほうが、求めていない情報が並ぶページよりも適切です。
落札情報
落札情報ツールは notice-type IN (can-standard can-social can-desg can-tran)、つまり4種類の契約落札通知を検索します。eForms 導入前の従来形式の落札通知も TED によってこれらにマッピングされるため、対象期間は何年も前まで遡ります(2022年だけで can-standard の通知が約296,000件)。落札通知は合計で280万件以上です。既存の契約の変更を示す can-modif と、落札の意向を示す veat はデフォルトの対象外です。これらを検索するには、notice_type で search_notices を絞り込んでください。
落札情報の応答では、呼び出し元が誤解しやすい次の2点を必ず明記します。
- 対象範囲: TED が扱うのは、基準額を超える EU の調達のみです。基準額未満の国内契約は各国のポータルで公開され、TED には掲載されません。TED で落札実績がない事業者でも、小規模な公共事業を多数受注している可能性があります。
- 金額: 買い手が公表した金額で、通知に記載された通貨を使用し、通常は VAT を除きます。TED による検証は行われていません。集計では通貨ごとに合算します。通貨をまたいだ総額は、実態のない数値になるため算出しません。
上流の winner-name は言語ごとの配列のマップで、すべての落札者(ロットごとに1者、コンソーシアムのメンバー、重複を含む)が格納されています。落札情報ツールは重複を除去して全件を返します。単一の winner 文字列のように先頭の項目だけを取ると、共同落札者が気付かれないまま抜け落ちてしまいます。
知っておくと役立つ上流の仕様
- POST のみです。
GET /v3/notices/searchは 405 を返します。 fieldsは空にできません。 省略すると「Validation error on field fields」という400エラーになります。認証の問題のように見えますが、そうではありません。- 並べ替えはリクエストフィールドではありません。 クエリ文字列内に指定します。例:
... SORT BY publication-date DESC。指定しない場合、結果は新しい順ではなく、ドイツの建設入札では2016年の事前情報通知が最上位に表示されました。 - すべてのテキストフィールドは言語ごとのマップです。
notice-titleには24の公用語すべてのテキストが、buyer-nameには配列のマップが格納されています。そのまま返すと、ドイツの入札にラトビア語のタイトルを返してしまい、通知1件あたり重複したタイトルだけで約4KBを消費します。 - 実際のタイトルフィールドは
title-proc(買い手が付けたタイトル)です。notice-titleは TED が生成した「国 – CPV ラベル – 買い手のタイトル」の要約です。存在しないフィールドを指定してもエラーではなく何も返されないため、フィールド名の入力ミスはデータ欠落のように見えます。 - CPV は01から99まで連続しているわけではありません。 部門28は存在せず、存在しない部門を指定すると TED は
QUERY_UNSUPPORTED_FIELD_VALUEを返します。これは「見つからなかった」ように見えます。このパックでは事前に部門を検証し、有効な部門を示します。 - クエリの日付形式は
YYYYMMDD(YYYY-MM-DDではありません)で、応答には UTC オフセット付きのタイムスタンプが含まれます。
データソース
https://api.ted.europa.eu/v3/notices/search — POST、JSON のエキスパートクエリ本文。
ドキュメント:https://docs.ted.europa.eu/api/
未対応のフィールドを指定すると、エンドポイントは 400 メッセージ内にサポート対象のフィールド名をすべて 1,830 件列挙します。推測せずにフィールドを見つける最も手軽な方法です。
クイックスタート
MCP クライアント(Claude Desktop、Cursor、Windsurf など)に追加します。
{
"mcpServers": {
"ted-eu": {
"url": "https://gateway.pipeworx.io/ted-eu/mcp"
}
}
}
このエンドポイントが実際に提供するもの
https://gateway.pipeworx.io/ted-eu/mcp の tools/list は、上の表にあるツールに加えて、共有 Pipeworx メタツール(ask_pipeworx、discover_tools、search_within、remember/recall など、ゲートウェイ全体で利用できるツール一式)も返します。そのため、表示されるツール数はこの表より多くなります。現在、単一パックのエンドポイントには、そのパック独自のツールとともに、共有ツールが約 30 件表示されます。接続の initialize レスポンスには正確な対象範囲が記載されており、その日の状況を確認する際の正式な情報源です。
これは意図的な仕様であり、偶然の多重化ではありません。メタツールを使えば、このパックの対象外の質問にも、カタログ全体を横断する ask_pipeworx 経由で回答できます。そのため、MCP サーバーを 2 つ追加する必要はありません。現在、メタツールなしでパックのエンドポイントをマウントする方法はありません。追加のスキーマによるコンテキスト消費がルーティングの利点を上回る場合は、複数のパックエンドポイントではなく、フルゲートウェイに一度だけ接続してください。
このパックのツールだけでなく、すべてのパックのツールを直接一覧表示するには、フル Pipeworx ゲートウェイに接続してください。
{
"mcpServers": {
"pipeworx": {
"url": "https://gateway.pipeworx.io/mcp"
}
}
}
どちらの URL も同じゲートウェイと同じ 1684 以上のデータソースに接続します。違いは、どのパックのツールが直接一覧表示されるかだけです。どちらからでも ask_pipeworx ですべてのツールにアクセスできます。
MCP クライアントがない場合:HTTP 経由で呼び出す
curl -X POST https://gateway.pipeworx.io/v1/tools/ted_eu_search_notices \
-H 'Content-Type: application/json' \
-d '{"category":"construction","country":"DEU","limit":25}'
最初の呼び出しにアカウントは必要ありません。ツールの詳細を確認するには、GET https://gateway.pipeworx.io/v1/tools/ted_eu_search_notices を使用します。ツールを探すには、{"query":"..."} を指定して POST https://gateway.pipeworx.io/v1/tools/search_packs を使用します。
スタンドアロン(ゲートウェイアカウント不要)
このパッケージはローカルの stdio MCP サーバーとしても実行できます。Pipeworx アカウントも、ゲートウェイへの往復通信も不要です。
{
"mcpServers": {
"ted-eu": {
"command": "npx",
"args": ["-y", "@pipeworx/mcp-ted-eu"]
}
}
}
または、直接実行して起動を確認できます。
npx -y @pipeworx/mcp-ted-eu
stdin/stdout 経由で MCP を使用し、このパックのツールだけを対象に initialize/tools/list/tools/call に応答します。上記のゲートウェイ接続が追加する共有メタツールは含まれません。同じソース、同じツールで、ask_pipeworx によるルーティングはありません。
ask_pipeworx を使う
ツールを直接呼び出す代わりに、平易な英語で質問できます。これは上記のパックエンドポイントでも、フルゲートウェイでも利用できます。
ask_pipeworx({ question: "your question about Ted Eu data" })
ゲートウェイが適切なツールを選び、引数を自動的に入力します。
詳細
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。