MCP 接続
ChatGPT と Claude から search / fetch の2 toolsでSignal Foundryの会社情報とevidenceを読むための接続手順です。
このページの内容10項目
Signal Foundry MCP は、ChatGPT と Claude から会社、event、求人、建設業許可、展示会を検索し、Company Card と関連 evidence を読むための Remote MCP surface です。
公開toolは search と fetch の2つです。
AI clientが依頼の意味から search.operation と引数を選びます。 Signal Foundry serverは自然言語からoperationを推測せず、operationごとの入力schema、account scope、permission、quota、rate limit、creditを決定的に適用します。
契約サマリー
| Field | Value |
|---|---|
| Method | POST |
| Path | /api/mcp |
| Full URL | https://signal-foundry.app/api/mcp |
| Transport | MCP Streamable HTTP |
| Auth | WorkOS OAuth。ChatGPT / Claude の接続画面からサインインする |
| Public tools | search, fetch |
| Usage | 実行したdomain operationに対応するquotaとrate limitを適用する |
| Credit | 通常のdata requestと同じ。data operationの実行は1 request credit |
| Write | 未公開。write toolsはまだ表示しない |
API keyは貼りません。 ChatGPT / Claude側のOAuth接続で認証します。
接続する
ChatGPTのconnector / MCP設定、またはClaudeのremote MCP設定に次のURLを登録します。
https://signal-foundry.app/api/mcp
確認すること:
- 接続先URLが
/api/mcpで終わっている - 認証方式がOAuthとして始まる
- Signal Foundryのサインイン画面に進む
- 接続後のpublic toolsが
searchとfetchの2つだけである
接続確認prompt:
Signal Foundryで「トヨタ」を検索して、最初の候補のCompany Cardを読んでください。
期待する動き:
- clientが
search(operation: "company.search")を呼ぶ searchが候補とcanonicalsf://URIを返す- clientが候補の
uriをfetch.idに渡す fetchがCompany Card、evidence、gaps、関連linkを返す
ChatGPT の画面例
ChatGPTの画面名や配置は変わることがあります。 確認する値は接続URL、OAuth、search / fetch のtool表示です。








リクエスト
search
search は、依頼に対応するoperationを1つ明示して呼びます。 query の文面からserverがoperationを選ぶことはありません。
| Operation | 使う場面 |
|---|---|
company.search | 社名、証券コード、domain、filterから会社を探す |
company.resolve | 識別子からcanonical company_id 候補を得る |
company.query | company_query.v1 を決定的に実行する |
event.search | corporate event条件で会社を探す |
job.search | 求人行を探す |
construction.search | 建設業許可明細を探す |
exhibition.search | 展示会の開催回を探す |
基本形:
{
"operation": "company.search",
"query": "株式会社UNITE",
"filters": {
"prefecture": ["東京都"],
"city": ["港区"]
},
"limit": 5
}
filters はoperationごとに許可されたkeyと型だけを受け付けます。 未知のkey、別operation用のkey、矛盾する条件は invalid_arguments です。
company.resolve の例:
{
"operation": "company.resolve",
"query": "7203",
"filters": {
"identifier_type": "securities_code"
}
}
結果が ambiguous の場合、候補から勝手に1社を選びません。 識別子を追加するか、人間に確認してください。
company.query は、AI clientが作ったtyped contractを contract.value に渡します。
{
"operation": "company.query",
"contract": {
"version": "company_query.v1",
"value": {
"contract_version": "company_query.v1",
"raw_request": "売上100億円以上をROEの高い順",
"predicates": [
{
"type": "financial_metric",
"metric": "revenue",
"operator": "gte",
"period": { "latest": true },
"value": {
"amount": 10000000000,
"currency": "JPY",
"unit": "absolute"
}
}
],
"requested_output": {
"limit": 10,
"sort": [
{
"type": "financial_metric",
"metric": "return_on_equity",
"direction": "desc",
"period": { "latest": true }
}
]
}
}
}
}
fetch
fetch はcanonical sf:// URIだけを受け付けます。 任意のHTTP URL、file path、他accountのopaque IDは受け付けません。
{
"id": "sf://companies/cn_example"
}
| Resource | URI |
|---|---|
| Company Card | sf://companies/{company_id} |
| Signals | sf://companies/{company_id}/signals |
| Observations | sf://companies/{company_id}/observations |
| Ownership | sf://companies/{company_id}/ownership |
| Cases | sf://companies/{company_id}/cases |
| Filings | sf://companies/{company_id}/filings |
| Compare | sf://companies/compare?id={company_id}&id={company_id} |
| Timeline | sf://companies/{company_id}/timeline |
| Direction | sf://companies/{company_id}/direction |
| Company exhibitions | sf://companies/{company_id}/exhibitions |
| Exhibition exhibitors | sf://exhibitions/{exhibition_id}/exhibitors |
| Usage | sf://account/usage |
| Credits | sf://account/credits |
レスポンス
search の主なresponse key:
operation: 実行したoperationresults[]: 次のfetchに渡すSearch Cardresults[].uri: canonicalsf://URIdata: operation固有の既存payloadgaps[]: 未対応条件、coverage不足、追加確認meta.internal_operation: server内で実行したoperationmeta.cursor: 同じ条件で続行できる場合だけ返すopaque cursor
fetch の主なresponse key:
id: 取得したcanonical URItype: 実行したtyped resource operationdata: 既存domain serviceが返したfact payloadevidence[]: payloadに含まれるsource / evidencegaps[]: coverage不足や未確認条件links[]: 次にfetchできる関連resourcemeta.internal_operation: server内で実行したoperation
認証、usage、credit
MCPではAPI keyをChatGPT / Claudeに貼りません。 接続画面からOAuthでSignal Foundryにサインインします。
tool名ではなく、実行したdomain operationに対応するaccount scope、permission、quota、rate limit、creditを適用します。 usageは fetch({ "id": "sf://account/usage" })、credit残高は fetch({ "id": "sf://account/credits" }) で確認します。
復旧方法
| 状態 | 復旧 |
|---|---|
| toolが表示されない | 接続URLを確認し、connectorを再接続する |
| 2 tools以外が見える | connectorが古いcatalogをcacheしている。接続を更新する |
| サインインを求められる | OAuth接続を完了する。API keyは貼らない |
mcp_auth_required | ChatGPT / Claude側で再認証する |
invalid_arguments | operation と、そのoperationに対応するfilter key / 型を確認する |
invalid_sf_uri | search.results[].uri または fetch.links[].id をそのまま使う |
| 0件 | 会社が存在しないとは判断しない。社名、証券コード、法人番号、domainへ分解して再検索する |
ambiguous | 候補を保持し、識別子を追加するか人間に確認する |
rate_limit_exceeded | sf://account/usage を取得し、Retry-After まで待つ |
| quota / credit不足 | sf://account/usage と sf://account/credits を取得する |
weak / unsupported / needs_human | silent 0件にしない。制約を回答に残す |
このページで扱わないこと
- Claude Code / CodexでのCLI / Skills運用
- local MCP server
- write action
- batch / bulk automation
- API keyをChatGPT / Claudeへ貼る運用
Claude Code / Codexから実行する場合は Claude Codeで使う を使います。 既存backendへ直接組み込む場合は API概要 からHTTP APIを選びます。