ParseStream について
ParseStreamは、Reddit、X、LinkedIn、Quora、Hacker Newsでのブランド言及を監視するチーム向けリモートMCPサーバーです。関連性と購買意向を評価し、詳細を取得して返信案を作成しますが、投稿や連絡は行いません。
主な機能
- 015つのサービスでブランド言及を監視
- 02関連性と購買意向を評価
- 03言及の詳細を取得
- 04人の確認用に返信案を作成
- 05APIキーでブランド単位のアクセス
活用シーン
- 01週ごとのブランド言及を確認
- 02購買意向を示す言及を特定
- 03選んだ投稿への返信案を準備
MCP 対応
ステートレスなStreamable HTTPで、ブランド言及の検索、詳細取得、返信案作成のツールをMCPクライアントに公開します。投稿や相手への連絡を行うツールはありません。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.parsestream.com/mcpclaude mcp add --transport http com-parsestream-parsestream https://mcp.parsestream.com/mcp{"mcpServers":{"com-parsestream-parsestream":{"type":"http","url":"https://mcp.parsestream.com/mcp"}}}Cursor で開く{"servers":{"com-parsestream-parsestream":{"type":"http","url":"https://mcp.parsestream.com/mcp"}}}VS Code で開く{"mcpServers":{"com-parsestream-parsestream":{"type":"http","url":"https://mcp.parsestream.com/mcp"}}}{"mcpServers":{"com-parsestream-parsestream":{"serverUrl":"https://mcp.parsestream.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://mcp.parsestream.com/mcp認証が必要ツール
詳細
ParseStream MCP サーバー
ParseStream は Reddit、X、LinkedIn、Quora、Hacker News を監視し、ブランドへの言及を検出して、それぞれの関連性と購買意欲を評価し、返信の下書きを作成します。このサーバーを使うと、AI アシスタントからそれらを利用できます。今週あなたについてどんなことが話題になったか、どの投稿がツールを探している人のものらしいかを尋ねたり、投稿の全文を表示したり、編集して自分で送信するための下書きを受け取ったりできます。
ここから投稿することはできません。このサーバーには、Reddit、X、LinkedIn、Quora、Hacker News に投稿したり、誰かに連絡したりするツールはありません。
リモートサーバーなので、インストールやローカルでの実行は不要です。URL と API キーだけで利用できます。
| エンドポイント | https://mcp.parsestream.com/mcp(https://parsestream.com/api/mcp からもアクセスできます) |
| トランスポート | ストリーミング可能な HTTP、ステートレス — 維持するセッションはありません |
| 認証 | Authorization: Bearer ps_live_... |
| スコープ | キー自体から特定される、1 キーにつき 1 ブランド |
| レート制限 | キーあたり毎分 100 リクエスト |
| 履歴 | 直近 30 日間 |
まず API キーを取得する
ParseStream で ブランド設定 → API キー に移動し、キーを作成します。キーは
ps_live_ で始まり、一度しか表示されないため、そのままクライアントの設定にコピーしてください。
キーのスコープは単一のブランドです。サーバーは、取得するデータを決めるために引数を読み取るのではなく、キーだけを使います。2 つ目のブランドを接続するには、別のキーを発行し、別の名前で 2 つ目の MCP サーバーとして追加します。ブランド設定でキーを無効にすると、MCP アクセスは直ちに停止します。
これは Mentions REST API で使うものと同じキーで、どちらも 1 つの利用枠を共有します。キーあたり毎分 100 リクエストです。クライアントが接続時に取得する tools/list を含め、すべての JSON-RPC 呼び出しがカウントされます。上限を超えると、Retry-After ヘッダー付きの 429 が返されます。
インストール
ps_live_xxxxxxxxxxxxxxxx を自分のキーに置き換えて、使用するツールに対応するブロックを設定し、クライアントを再起動してください。これらのクライアントはすべて、キーをファイルに保存せず、環境変数から読み込むこともできます。キーを公開せずに接続するを参照してください。これらのファイルがリポジトリ内にある場合は、先に必ず確認してください。
Claude Code
claude mcp add --transport http parsestream https://mcp.parsestream.com/mcp \
--header "Authorization: Bearer ps_live_xxxxxxxxxxxxxxxx" \
-s local
警告
-s localのままにしてください。-s projectスコープでは、リポジトリのルートにある.mcp.jsonにキーが平文で書き込まれます。このファイルはチームとの共有やコミットを前提としたものです。有効なParseStreamキーがGitの履歴に残り、リポジトリが公開されている場合は、クローンした人なら誰でもそのキーを取得できます。-s local(デフォルト)は、このプロジェクトに限定して、リポジトリ外のユーザー設定にキーを保存します。-s userも同様に保存しますが、すべてのプロジェクトでサーバーを使えるようにします。どちらも作業ツリーに何も追加しません。チームで共有する.mcp.jsonが本当に必要な場合は、キーではなく変数を記載してください — 下記をご覧ください。
claude mcp listで確認するか、アシスタントに「どのParseStreamブランドに接続されていますか?」と尋ねてください。ブランド名が表示され、追跡中のキーワードが一覧表示されます。
Claude Codeでは、このリポジトリをプラグインとしてインストールすることもできます。サーバーが設定され、設定ファイルではなく環境変数からキーが読み込まれます。
/plugin marketplace add parsestream/parsestream-mcp
/plugin install parsestream@parsestream
次に、シェルプロファイルでPARSESTREAM_API_KEY=ps_live_...をエクスポートします。
Cursor
~/.cursor/mcp.json(またはプロジェクト内の.cursor/mcp.json — 注意点は上記と同じです。コミットしないでください):
{
"mcpServers": {
"parsestream": {
"url": "https://mcp.parsestream.com/mcp",
"headers": {
"Authorization": "Bearer ps_live_xxxxxxxxxxxxxxxx"
}
}
}
}
上部のCursorに追加バッジをクリックすると、プレースホルダーキーを含むこのファイルが作成されます。その後、CursorのMCP設定で該当エントリーを開き、本物のキーを貼り付けてください。
VS Code(GitHub Copilot)
.vscode/mcp.json — 最上位のキーはmcpServersではなくserversです。ここではVS Codeだけが例外です。
{
"servers": {
"parsestream": {
"type": "http",
"url": "https://mcp.parsestream.com/mcp",
"headers": {
"Authorization": "Bearer ps_live_xxxxxxxxxxxxxxxx"
}
}
}
}
.vscode/mcp.jsonは通常コミットされるため、追跡対象のファイルに有効なキーを貼り付けるのではなく、VS Codeのinputsの仕組みか、ユーザーレベルのmcp.json(コマンドパレットのMCP: ユーザー設定を開く)を使ってください。
Codex CLI
~/.codex/config.toml。Codexは環境変数からキーを読み込めるため、キーを設定ファイルに一切記載せずに済みます。
[mcp_servers.parsestream]
url = "https://mcp.parsestream.com/mcp"
bearer_token_env_var = "PARSESTREAM_API_KEY"
次に、シェルプロファイルでexport PARSESTREAM_API_KEY="ps_live_xxxxxxxxxxxxxxxx"を実行します。キーを直接記載する場合は、http_headersを使ってください。キー名はheadersではなくhttp_headersです。
[mcp_servers.parsestream]
url = "https://mcp.parsestream.com/mcp"
http_headers = { Authorization = "Bearer ps_live_xxxxxxxxxxxxxxxx" }
Grok
Grokには登録用のコネクターディレクトリはありませんが、独自のMCPサーバーを追加できます。grok.com/connectorsでカスタムコネクターを追加し、URLにhttps://mcp.parsestream.com/mcpを指定して、AuthorizationヘッダーにBearer ps_live_...を設定してください。
GrokのターミナルエージェントはClaude CodeのMCP設定を読み込みます。上記のclaude mcp addコマンドをすでに実行していれば、Grokにも接続済みです。
Claude Desktopとclaude.ai
まだ対応していません。Anthropicのコネクターディレクトリへの掲載は予定されていますが、執筆時点ではまだ利用できないため、Claudeアプリからワンクリックでインストールする方法はありません。現時点ではClaude Codeが使え、これを試すのが最も手早い方法です。
キーを公開せずに接続する
ルールはひとつです。キーは環境変数かホームディレクトリ内のファイルに保存し、コミットするファイルには絶対に保存しないでください。 ~/.claude.json、~/.cursor/mcp.json、~/.codex/config.tomlはすべてのリポジトリの外にあり、そこにキーを保存しても問題ありません。.mcp.json、.cursor/mcp.json、.vscode/mcp.jsonは、これらのファイルのプロジェクト単位の設定ファイルで、どれもチームとの共有を前提としています。Claude CodeとVS Codeのドキュメントでは、これらをそのままコミットするよう案内されています。キーが漏洩するのはこのためです。
以下のクライアントはすべて、環境変数からキーを読み込めます。クライアントごとに構文が異なるため、このセクションではひとつではなく4つのコード例を掲載しています。まず一度だけエクスポートします。
export PARSESTREAM_API_KEY="ps_live_xxxxxxxxxxxxxxxx"
Codex CLI
4つのうち、変数の値ではなく名前を保存するのはCodexだけです。そのため、キーに相当する情報がファイルに書き込まれることはありません。
[mcp_servers.parsestream]
url = "https://mcp.parsestream.com/mcp"
bearer_token_env_var = "PARSESTREAM_API_KEY"
ファイルを編集せずに設定することもできます。
codex mcp add parsestream --url https://mcp.parsestream.com/mcp \
--bearer-token-env-var PARSESTREAM_API_KEY
設定ファイルには変数名とURLしか含まれないため、そのままコミットしても安全です。これが望ましい設計であり、他の3つの方法は比較すると回避策です。
Claude Code
-s local(デフォルト)と-s userは、どちらもホームディレクトリの~/.claude.jsonに書き込みます。作業ツリーには何も残らないため、追加の作業は必要ありません。上記のインストールセクションにあるclaude mcp addコマンドは、そのまま安全に使えます。
エントリーをプロジェクト単位にして共有する必要がある場合は、変数を使います。Claude Codeはcommand、args、env、url、headers内の${VAR}および${VAR:-default}を展開するため、コミットする.mcp.jsonにはその参照を記述できます。
{
"mcpServers": {
"parsestream": {
"type": "http",
"url": "https://mcp.parsestream.com/mcp",
"headers": {
"Authorization": "Bearer ${PARSESTREAM_API_KEY}"
}
}
}
}
これはプラグインに同梱されている設定そのものであり、プラグイン用の設定ファイルを自分で用意する必要がない理由でもあります。
重要
変数が未設定でも、Claude Codeはエラーにならず、文字列をそのまま送信します。 サーバーはこれを認識してその旨を伝え、401の
error_descriptionで変数名を示します。展開されていない変数であり、不正なキーではありません。MCP クライアントは、 値の代わりに参照文字列 `${PARSESTREAM_API_KEY}` を送信しました。 これは、クライアントの実行環境で PARSESTREAM_API_KEY が設定されていないことを 意味します。シェルプロファイルで PARSESTREAM_API_KEY=ps_live_... をエクスポートし、 クライアントがその値を引き継げるよう、完全に再起動してください。対話型シェルでのみ実行されるエクスポートや、ターミナルではなくデスクトップから起動したクライアントでは、まさにこの状況が発生します。
${input:...}プロンプトはVS Codeの機能です。Claude Codeではサポートされていないため、これを使った設定ではその文字列もそのまま送信されます。
Cursor
考え方は同じですが、表記が異なります。Cursorでは${NAME}ではなく${env:NAME}を使います。ファイルは似ていますが互換性はなく、Claude Codeの設定をここに貼り付けると、プレースホルダーがそのまま送信されます。
{
"mcpServers": {
"parsestream": {
"url": "https://mcp.parsestream.com/mcp",
"headers": {
"Authorization": "Bearer ${env:PARSESTREAM_API_KEY}"
}
}
}
}
Cursorはcommand、args、env、url、headers内でこれを展開します。自分だけで使う設定なら~/.cursor/mcp.jsonに記述してください。${env:...}形式を使うことで、プロジェクトレベルの.cursor/mcp.jsonを安全にコミットできます。
VS Code(GitHub Copilot)
.vscode/mcp.jsonはコミットすることを想定しているため、ここにキーを直接記述するのは-s projectと同じ間違いです。${env:VAR}を使うか、gitignore対象の.envをenvFileで指定してください。
{
"servers": {
"parsestream": {
"type": "http",
"url": "https://mcp.parsestream.com/mcp",
"headers": {
"Authorization": "Bearer ${env:PARSESTREAM_API_KEY}"
}
}
}
}
VS Codeにはinputsという仕組みもあり、一度だけ入力を求めて回答を記憶できます。トップレベルに{"type": "promptString", "id": "parsestream-key", "password": true}と記述し、${input:parsestream-key}で参照します。ドキュメントに掲載されている例ではenvブロック内で使用されていますが、HTTPのheadersブロック内で${input:}を使う例はありません。そのため、この組み合わせは未検証として扱い、このサーバーでは${env:...}またはenvFileを使うことをおすすめします。VS Codeは保存方法を「安全に保存」とのみ説明しており、OSのキーチェーンを使うとは保証していません。
シークレットマネージャー
以下のどちらも、上記の設定と組み合わせられます。環境変数を設定し、クライアントがそれを読み取るだけで、ファイルは変更されません。
- 1Password CLI —
PARSESTREAM_API_KEYをop://参照として保持し、op run -- claudeのようにクライアントを起動します。シークレットはそのプロセスの実行中だけ存在します。Claude Code自身の設定内からop://を解決する方法は要望として挙がっていますが、現時点では利用できません。 - direnv — gitignore対象の
.envrcにexport PARSESTREAM_API_KEY=ps_live_...を記述し、direnv allowを実行します。このキーはそのディレクトリにいる間だけ環境変数として設定され、ほかの場所には残りません。
すでにキーをコミットしてしまった場合
キーを失効させてください。ブランド設定 → APIキーでそのキーを削除し、新しいキーを発行して、環境変数を更新します。何よりも先にこれを行ってください。Gitの履歴を書き換えても、漏えいしたシークレットは取り消せず、自分のリポジトリ内で見つけにくくなるだけです。パブリックリモートにプッシュしたものは、数分以内に取得されたと考えてください。
キーの失効は簡単にできるよう設計されています。キーはブランドごとにスコープが設定され、ブランドごとに最大10個のキーを有効にできます。また、失効するとMCPとRESTの両方へのアクセスがただちに遮断されます。侵害されたキーを使い続ける理由はありません。
予定:OAuth
本当の解決策は、キーを持たなくて済むことです。OAuth 対応はロードマップに含まれています。クライアントはブラウザーの同意画面を通じてスコープ付きトークンを取得し、長期間有効な情報がどこにも保存されなくなるため、このセクションは不要になります。まだリリースされていないため、それまでは環境変数を使用してください。
ツール
ツールは7つです。費用がかかるのは draft_reply だけです。
| ツール | 機能 | アクセス | 費用 |
|---|---|---|---|
get_brand_context | ワークスペース全体の情報:ブランドプロフィールと競合他社、IDと監視対象プラットフォームを含む追跡中のすべてのキーワード、クレジット残高、下書き作成が可能かどうか | 読み取り | 無料 |
search_mentions | 5つすべてのプラットフォームでメンションを検索します。期間、プラットフォーム、意図、関連度スコア、キーワード、サブレディット、メンションの種類、ステータスで絞り込めます。1ページあたり最大30件です | 読み取り | 無料 |
get_mention | 1件のメンションの全情報:省略されていない本文、親投稿のタイトル、賛成票数、サブレディットの規模、すでに下書きが待機しているかどうか | 読み取り | 無料 |
draft_reply | 1件のメンションへの返信の下書きを生成し、「下書き」キューに保存します。口調と長さを選ぶか、ブランドに保存されているデフォルトを使用します | 下書きを保存 | 5クレジット |
mark_mention_replied | 1件のメンションの返信済みフラグを設定または解除します。ウェブアプリに表示されるものと同じ切り替えです | フラグを書き込み | 無料 |
highlight_mention | 1件のメンションにスターを付ける、または外します。チャット終了後も候補リストを残せます | フラグを書き込み | 無料 |
get_brand_details | ブランド名、説明、ウェブサイトのみ。インデックス化された1行を数ミリ秒で返します | 読み取り | 無料 |
この表について、2点補足します。
get_brand_details は get_brand_context の隣にあるように見えますが、実際には最後に記載されています。これは意図的です。tools/list は固定の順序で提供されるため、リクエストごとのレスポンスがバイト単位で同一になり、クライアントはツールのブロックをキャッシュできます。新しいツールは必ず末尾に追加し、途中には挿入しません。挿入すると、その位置以降のすべてのクライアントのキャッシュが無効になるためです。
フラグを書き込む2つのツールは、ParseStream が独自に管理するメンションの記録だけを編集します。プラットフォーム上の投稿やコメントには触れず、誰かに通知することもありません。
連携の流れ
実際のセッションは次のようになります。使用するツールはアシスタントが選び、あなたはいつもどおりに話しかけます。
あなた: 今週、返信する価値のあるものはありますか?
get_brand_details— どのブランドのために作業しているかを確認します。名前、説明、ウェブサイトが数ミリ秒で返ります。search_mentionsにtimeframe: "7d"、intents: ["BUY_INTENT", "PRODUCT_QUESTION"]、relevanceMin: 4、statuses: ["new"]を指定します。解決策を積極的に探していることを示す2つの意図タグ、自信度の高いキーワード一致のみ、未対応のものだけを検索します。get_mentionで、特に良さそうな2件を確認します。検索結果だけで優先順位を判断できますが、賛成票数、エンゲージメント機会フラグ、「すでに下書きがあるかどうか」はここでのみ取得できます。draft_replyにapproach: "value_first"とreplyLength: "short"を指定します。5クレジットがかかり、5~20秒でテキストが返ります。- あなたが parsestream.com/replies を開き、下書きを読んで編集し、自分で投稿します。
mark_mention_repliedを実行すると、そのスレッドはstatuses: ["new"]の検索結果に表示されなくなります。
下書きをまとめて作成する前に get_brand_context を呼び出すと、アシスタントが正確な残高、リセット日、アカウントで下書き作成が可能かどうかを伝えます。
つまずきやすい点
- 2つの時刻があります。
timeframe/from/toはウィンドウを検出時刻で区切りますが、結果は公開時刻順に並びます。1週間前に投稿され、1時間前に検出されたメンションは、1dのウィンドウに含まれ、最後のページに表示されます。そのため、fromカーソルを安全に使うには、ウィンドウ内のページをすべて取得し(pagination.hasNextが false になるまで)、その後で次に進める必要があります。 - 空の場合は「すべて」を意味します。
platforms、intents、statuses、keywordIds、subreddits、mentionTypesの各リストフィルターは、省略または空の場合、「対象なし」ではなく「絞り込みなし」を意味します。 intentsはタグのないメンションを除外します。 6つのタグはBUY_INTENT、PRODUCT_QUESTION、COMPETITOR_COMPLAINT、PAIN_POINT、TESTIMONIAL、PROMOTIONALです。インテントのタグ付けはアカウントごとにオプトインするため、空でないintentsリストを指定すると、タグ付け機能が分類しなかったメンションは除外されます。6つすべてを指定したリストも同様で、「いずれかのタグが付いたもの」を意味し、「フィルターなし」ではありません。statuses: ["new"]は未対応を意味します。 ハイライト済みのメンションも返信済みのメンションと同様に除外されるため、メンションにスターを付けると新着キューから外れます。keywordIdsのエラーは表示されません。 認識されない ID は拒否されず、フィルターから除外されるため、入力ミスがエラーにならず、検索対象がひそかに絞り込まれます。- 履歴は30日、1ページあたり30件です。 履歴は30日までに制限されています。それより古い期間を指定すると、空の結果ではなく、明確なエラーが返されます。
perPageに30より大きな値を指定しても拒否されず、30に切り詰められます。
このサーバーにできないこと
アシスタントがそうでないと主張することがあるため、明確にしておきます。
- 投稿はしません。 Reddit、X、LinkedIn、Quora、Hacker News に投稿するツールはありません。できるのは、下書きを「下書き」キューに追加することまでです。
- 誰にも連絡しません。 DM、メール、メンションの投稿者への通知は行いません。
- 自社ブランドのレコードのみを扱います。 ブランドは API キーによって決まり、ツールの引数から指定することはないため、設計上、テナントをまたいだアクセスは不可能です。他社ブランドのメンションは、存在しない ID とまったく同じように、見つからないものとして報告されます。
- 削除は一切行いません。 書き込み操作は、返信の下書き1件と、自社のメンション行にある2つのブール値フラグの変更のみです。
draft_replyが返すのは下書きであり、返信ではありません。 人間が parsestream.com/replies を開き、内容を確認して編集し、送信します。アシスタントが何かを投稿したと言っても、実際には投稿していません。
読み取りはどのプランでも利用できます。draft_reply の利用には、有効なサブスクリプションまたはトライアルと、少なくとも5クレジットが必要です。これはアプリの返信候補ボタンと同じ条件です。
トラブルシューティング
ツールが表示されません。 ほとんどの場合、ヘッダーが原因です。Authorization: Bearer ps_live_... の形式で、「Bearer」という語も含めて正確に指定する必要があります。
401 Unauthorized。 error_description を確認してください。設定で、置換されていない環境変数を参照している場合、サーバーはその旨と変数名を示します。変数を設定してクライアントを再起動してください。詳しくはキーを公開せずに接続するをご覧ください。それ以外の401は、キーの入力ミスか失効を意味します。Brand Settings → API Keys で新しいキーを発行してください。
検索結果が空です。 まずブランドのコンテキストを尋ねてください。キーワードが一時停止中であるか、指定したプラットフォームでモニタリングされていない可能性があります。get_brand_context は一時停止中のキーワードも隠さずに返すため、この点を確認できます。
下書きの作成が拒否されます。 有効なサブスクリプションがないか、残高が5クレジット未満です。get_brand_context の plan.canDraftReplies フィールドで確認できます。どちらの場合も、読み取りは引き続き利用できます。
429 Too Many Requests。 1キーあたり毎分100回までです。REST APIと共有され、JSON-RPCの呼び出しはすべてカウントされます。Retry-After の時間が経過するまで待つか、クライアントごとに別のキーを使用してください。
クライアントの影響を完全に取り除くには、サーバーを直接呼び出してください。Streamable HTTPでは、Accept に両方のコンテンツタイプを指定する必要があります。
curl -sS -X POST https://mcp.parsestream.com/mcp \
-H "Authorization: Bearer ps_live_xxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Authorization ヘッダーを削除すると、サーバーが何を要求しているかを正確に示す error_description とともに401が返されます。これにより、プロキシではなくParseStreamに接続できていることを手早く確認できます。
リンク
ライセンス
MIT — LICENSEをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。