Skip to main content
Glama
Instagram Story MCP

Instagram Story MCP

Instagram Story MCP

YouTube・TikTok・Instagram投稿をInstagramストーリーズへ共有するための、ローカルstdio MCPです。アカウント確認、プレビュー、親しい友達への公開、既存ハイライトへの追加、処理結果の照会を提供します。

URLの取得・動画変換・MCPをこのパッケージにまとめています。Instagramへの通信、認証、公開の検証と投稿台帳には、別に配置した Instagram HTTP Relay を使います。普段の操作でブラウザーは起動しません。

必要な環境

  • Python 3.11以降

  • Node.js 24、pnpm 11.5.0

  • ffmpeg と ffprobe がPATHから実行できること

  • HTTPモードで設定・ビルド済みのRelay

Python用のMCP SDK、yt-dlp、curl-cffi、Pillowはインストール時に導入します。MCP SDKは検証済みの1.26.0へ固定しています。

Related MCP server: insta-mcp

導入

git clone https://github.com/shirafukayayoi/instagram-story-mcp.git
cd instagram-story-mcp
python -m venv .venv
.venv\Scripts\python.exe -m pip install .

Linuxでは .venv/Scripts/python.exe を .venv/bin/python に読み替えてください。開発時は pip install -e . を使えます。

Relayは feat/account-switching ブランチの e2c4b9c 以降を利用してください。この版には文面なし動画のモバイル形式での公開と、投稿時の本人コメントの照合が含まれます。

git clone --branch feat/account-switching https://github.com/shirafukayayoi/instagram_api_safe_relay.git
cd instagram_api_safe_relay
pnpm install --frozen-lockfile
pnpm build

Relayの settings.json、.env、専用のセッションをローカルで設定します。HTTPモードの導入手順を参照してください。

  • 全プロファイルの browser.type を http にする。

  • stories.enabled を有効にし、Relayの work/story-smoke を素材許可ディレクトリへ含める。

  • Instagram投稿のカード共有を使う場合は stories.feedPostSharingEnabled も有効にする。

  • HTTPモードではDMとメンション受付を無効にする。

  • Relayの .env へ INSTAGRAM_RELAY_API_TOKEN を保存する。

初回ログイン・追加認証は手動で行います。既存のセッションや台帳を削除しません。認証ファイルはこのMCPリポジトリへコピーせず、Relay側のGit管理外に保持します。

Codexへの登録

MCPリポジトリのルートから、配置先を実環境の絶対パスに置き換えて実行します。

$mcpPython = (Resolve-Path '.venv\Scripts\python.exe').Path
codex mcp add instagram --env 'INSTAGRAM_RELAY_REPOSITORY=C:\path\instagram_api_safe_relay' --env PYTHONUTF8=1 -- $mcpPython -m instagram_story_mcp

~/.codex/config.toml の登録にタイムアウトを指定します。BearerやCookieはここへ書きません。

[mcp_servers.instagram]
command = 'C:\path\instagram-story-mcp\.venv\Scripts\python.exe'
args = ["-m", "instagram_story_mcp"]
startup_timeout_sec = 30
tool_timeout_sec = 600
env = { INSTAGRAM_RELAY_REPOSITORY = 'C:\path\instagram_api_safe_relay', PYTHONUTF8 = "1" }

MCPクライアントを再接続し、instagram_status で ready: true、選択中のアカウントを確認します。停止中のRelayは必要時に起動し、稼働中ならそのまま利用します。配置先の環境変数が未設定でもツール一覧は取得でき、実際の操作は設定を求めて停止します。

ツール

ツール

処理

instagram_status

接続・必要なツール・選択中アカウントの診断

instagram_accounts

登録済みアカウントと状態の一覧

instagram_select_account

実ログイン先を照合して今後の投稿先を選択

instagram_preview_url

URLの素材を準備し、投稿先・公開範囲をプレビュー

instagram_publish_operation

プレビュー済みの同じ操作を公開

instagram_operation_status

投稿とハイライト処理の状態を照会

instagram_highlights

既存ハイライトを一覧取得

instagram_resume_highlight

初回指定済みの動画のハイライト登録を再開

投稿の流れ

  1. 接続と選択中のアカウントを確認する。

  2. instagram_preview_url へURLと公開範囲を渡す。親しい友達は close_friends、通常公開は all。コメント、動画の切り出し、ハイライトは初回から指定する。

  3. プレビューの投稿先、公開範囲、素材を確認する。プレビューではInstagramへアップロード・公開しない。

  4. ユーザーの明示的な投稿依頼がある場合に、返された operationId、preview.account.id、preview.audience を instagram_publish_operation へ渡す。

  5. 投稿は result.state: published とメディアID、アカウント、公開範囲を確認する。ハイライトは別に highlightResult.state: completed を確認する。

楽曲紹介のコメントは、確認できた「曲名 / アーティスト名」を基本にします。投稿者名からアーティストを推定しません。会話動画などへのコメントは任意です。文面は投稿時の本人コメントとして送り、画像・動画へ文字を焼き込みません。

動画はH.264/AACまたは音声なしのMP4、1〜60秒、100MiB以下が対象です。横動画は縦のキャンバスへ変換し、原本を保存します。勝手な音声差し替えや自動分割は行いません。60秒を超える動画は、ユーザーが指定した範囲を切り出します。

再開と結果不明

操作IDを省略した初回プレビューではUUIDを作ります。再開時は同じIDと引数を指定します。プレビューの有効期限は10分で、期限切れは同じ操作IDで更新します。

公開要求は確認済みプレビューのIDで1回だけ送り、送信前に台帳へ記録します。受理済み・公開済み・結果不明の操作で公開ツールを再び呼んだ場合は状態照会だけを行います。接続が切れても、新しいIDで自動再投稿しません。

ハイライトの unknown も再追加しません。対象の動画がハイライトに存在しても、登録前後の既存一覧の維持を確認できなければ、厳密な完了状態は unknown のまま保持します。投稿とハイライトの成否を分けて報告してください。

子プロセスの標準入力・出力・エラーをMCPの通信パイプから分離しています。Windowsで子Pythonが起動時に停止する問題の回帰テストを含みます。子プロセスの生出力や、署名付き素材URLをMCPへ返しません。

テスト

インストール後、ネットワークや実アカウントを使わないテストを実行できます。

.venv\Scripts\python.exe tests/test_server.py
.venv\Scripts\python.exe -m pip wheel --no-deps . --wheel-dir dist

設定済みRelayの接続確認だけを行う場合:

$env:INSTAGRAM_RELAY_REPOSITORY = 'C:\path\instagram_api_safe_relay'
.venv\Scripts\python.exe tests/test_server.py --live

--live でも投稿やハイライト追加は行いません。CIはLinuxのPython 3.11/3.14とWindowsのPython 3.14で、境界テスト、stdio接続、wheelビルドを実行します。

ライセンスと元の実装

MIT License。元の実装と変更点は NOTICE.md を参照してください。

Available Tools

8 tools
instagram_accountsA
Read-onlyIdempotent

登録済みのアカウント・状態・選択中の投稿先を取得する。

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered by structured data. The description contributes the content scope (accounts + state + selected destination), which is mild added value, but says nothing about freshness, caching, or whether the 'selected' value reflects server or client state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence listing the three returned facets with no filler or redundancy. Nothing could be removed without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters, an output schema present, and annotations covering the safety profile, the description only needed to say what the tool surfaces, which it does. The one residual gap is the relationship to the sibling account/status tools, which would help an agent choose correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters and schema coverage is 100%, so there is nothing for the description to disambiguate. Baseline 4 applies, and nothing in the text misleads about inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description has a specific verb (取得する) and names concrete resources: registered accounts, their state, and the currently selected posting destination. An agent can tell what data comes back without opening the schema, though it does not explicitly distinguish itself from the sibling `instagram_status`, which plausibly overlaps on the 'state' portion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit statement of when to call this versus `instagram_status` or `instagram_select_account`, and no preconditions or exclusions are given. Usage is only inferable from the resource names, which leaves the agent to guess at the boundary between this tool and its closest sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_highlightsC
Read-onlyIdempotent

既存ハイライトの一覧と実アカウントを照合して返す。

NameRequiredDescriptionDefault
profileNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds one real behavioral signal — that results are matched against the live account, consistent with openWorldHint — but says nothing about ordering, pagination, or what happens when the account has no highlights.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence with no waste, but the brevity comes at the cost of under-specification rather than efficiency. The key qualifier ('照合') is the least clear part, so the sentence is not front-loaded with actionable meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. However, for a tool whose only parameter is undocumented and whose core semantics ('照合') are undefined, the description leaves essential behavior — what the reconciliation means and how 'profile' changes results — entirely to inference.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter ('profile') with 0% schema description coverage, and the description does not mention it at all — not its meaning, its null default, or what omitting it does (likely defaults to the authenticated account). With coverage at 0%, the description is expected to compensate and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb+resource is present ('returns a list of existing highlights'), but the phrase '照合して' (cross-reference/match against the actual account) is ambiguous — it is unclear whether this reconciles highlights against the live profile, filters them, or enriches them. It does not distinguish itself from siblings such as instagram_accounts or instagram_resume_highlight.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance is given, no exclusions, and no mention of alternatives among the seven siblings. The agent must infer from the name alone whether to call this or instagram_resume_highlight.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_operation_statusB
Read-onlyIdempotent

保存した操作と既存ジョブの最新状態を取得する。公開やハイライト登録は開始しない。

NameRequiredDescriptionDefault
operation_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is largely covered. The description adds a concrete negative guarantee (no publish, no highlight registration), which is useful but partly redundant with readOnlyHint. It says nothing about how a pending vs finished job is represented or whether repeated calls are the intended polling pattern.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler; the read purpose is front-loaded ahead of the negative scope. It is arguably too terse — a single clause about the operation_id would have cost little and closed the largest gap.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be described, and annotations handle the safety profile. Still, for a single-parameter tool whose only parameter is undocumented and whose nearest sibling (instagram_status) is never addressed, the definition leaves real ambiguity about when and with what input to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single required parameter operation_id is never mentioned in the description. The phrase 保存した操作 (saved operation) weakly implies the ID refers to a persisted operation, but format, origin (from a prior publish/preview call?) and behavior for unknown IDs are all undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb + resource: retrieve the latest status of a saved operation / existing job (保存した操作と既存ジョブの最新状態を取得する). This is clearly a read-status operation, not a mutation. It does not, however, distinguish itself from the sibling instagram_status, which an agent could plausibly confuse it with.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence gives an explicit exclusion: it does not start publishing or highlight registration, which steers agents toward instagram_publish_operation / instagram_highlights for those actions. There is no positive guidance on when to pick this over instagram_status, nor mention of polling or terminal states.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_preview_urlA
Idempotent

URL素材を準備し投稿先・公開範囲をプレビューする。Instagramへアップロード・公開しない。

コメント・切り出し・指定ハイライトは初回から指定する。再開は同じ操作IDと同じ引数を使う。

NameRequiredDescriptionDefault
urlYes
commentNo
profileNo
audienceNoall
clip_endNo
highlightNo
clip_startNo
highlight_idNo
operation_idNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false; the description goes beyond them by disclosing that first-call arguments are binding for comment/clip/highlight and that resumption is idempotent on the operation ID plus identical arguments. It does not explain what state the preview creates or where the operation ID comes from, but the constraint that matters most for correct invocation is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Very short and front-loaded: purpose and the crucial 'does not publish' caveat come first, with the operational rules after. Nothing is padded, though 'URL素材を準備し' is slightly vague and the resume rule could have been folded more tightly into a single clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, but with 9 largely undocumented parameters the description should resolve more: clip units, profile semantics, highlight vs highlight_id, and how the operation ID is obtained for later resume. It covers the workflow shape adequately and leaves meaningful gaps for a tool of this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 9 parameters, so the description carries the full burden. It does conceptually touch most of them (comment, clipping via 切り出し, highlight, destination/profile and visibility/audience, operation ID for resume), but it adds no syntax: no units for clip_start/clip_end, no meaning for the audience enum values, no distinction between highlight and highlight_id, and no indication of what profile accepts.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first two sentences give a concrete verb pair (prepare URL material, preview destination and visibility) and an explicit negative boundary: it does not upload or publish to Instagram. That negative boundary implicitly separates it from the publish/status siblings without naming them, so an agent can tell it is the pre-publish step, but the exact relationship to instagram_publish_operation and instagram_resume_highlight is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives real procedural guidance: comment, clipping and highlight must be supplied on the first call, and a resume must reuse the same operation ID and identical arguments. What it never states is when to prefer this preview over publishing directly, or what to do when the preview result changes the user's intent — usage is implied rather than routed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_publish_operationA
Idempotent

ユーザーの明示的な投稿依頼に基づき、プレビュー済みの同じ操作を公開する。

プレビューのaccount.idとaudienceを指定する。成功済み・結果不明・処理中は再投稿しない。

NameRequiredDescriptionDefault
operation_idYes
expected_audienceYes
expected_account_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is supplied structurally. The description adds the genuinely useful part: this tool makes a previously previewed operation public, and it must be skipped when the prior attempt succeeded, has an unknown result, or is still processing. That guardrail context goes beyond the flags, though the concrete side effects on the live account are not spelled out.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short lines, with the core action stated first and the do-not-repost guardrail immediately after. There is no filler, though the extreme terseness leaves the most critical parameter unexplained.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the description covers the safety and idempotency preconditions that matter most for a publishing tool. The main remaining gap is what the expected_* parameters protect against and what operation_id refers to.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the burden and it only partly delivers: it explains that the preview's account.id and audience are supplied, which gives expected_account_id and expected_audience a guard/consistency-check meaning the bare schema does not convey. The required operation_id is never described, and the audience enum values are left to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a concrete action and its target: publishing the same operation that was already previewed, driven by the user's explicit post request. This clearly separates it from status/listing siblings such as instagram_operation_status and instagram_accounts. It stops short of naming a sibling directly, but the verb+resource is unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the precondition that the user must have explicitly asked to post and that the operation must already be previewed, and it warns not to re-publish when the prior state was success, unknown result, or in-progress. Those are useful when/when-not signals, but the routing to instagram_operation_status for the pre-check is only implied, never named as an alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_resume_highlightC
Idempotent

初回から登録先を指定した公開済み動画を同じハイライトへ登録・再開する。再投稿しない。

NameRequiredDescriptionDefault
operation_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=true, openWorldHint=true, destructiveHint=false. The description adds real value by clarifying that the video is not reposted and that the operation can be resumed into the same highlight, which reinforces the idempotent semantics. However, it says nothing about permissions, what happens to the highlight state on failure, or what '初回から' concretely means.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the key constraint (no repost) placed last for emphasis; no filler. The phrasing is compressed to the point of ambiguity, but structurally it is efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be explained, but the definition still leaves the only required parameter undocumented and gives no routing guidance among seven sibling instagram tools. For a state-mutating highlight operation, this is under-specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single required parameter operation_id has no description. The description's phrase '登録先を指定した' hints at a destination argument that does not exist in the schema, adding confusion rather than meaning. Nothing tells the agent that operation_id refers to a prior publish operation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names an action (register/resume a published video into the same highlight) and a negative constraint (does not repost), but it is vague about what is actually being operated on. It never mentions operation_id or how this differs from siblings like instagram_highlights or instagram_publish_operation, so an agent cannot cleanly discriminate the tool's scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is an implicit usage hint ('再投稿しない' implies reusing an already-published video rather than publishing again), but no explicit statement of when to choose this over instagram_highlights or instagram_publish_operation. No prerequisites or failure conditions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_select_accountB
Idempotent

@ユーザー名またはプロファイル名で今後の投稿先を選択する。投稿はしない。

NameRequiredDescriptionDefault
targetYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=true and destructiveHint=false, so the agent knows this mutates state safely and repeatably. The description usefully adds that it does not publish anything, but omits whether the selection persists across sessions, whether auth is required, and what happens if the name is ambiguous or unknown.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the action front-loaded and the non-posting caveat immediately after. Nothing is padded, though the brevity comes at the cost of the missing details noted elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and the tool has only one required parameter. Still, for a state-changing selection tool the description says nothing about persistence of the selection or failure modes on unresolvable targets, leaving a gap an agent would likely hit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single 'target' property has no title beyond 'Target', so the description carries the full burden. It does specify the accepted formats (@username or profile name), which is real added meaning, but leaves unresolved whether the leading '@' is required or whether a display name is equally valid.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: select the destination account for subsequent posts, keyed by @username or profile name. The closing clause '投稿はしない' (does not post) separates it from the publish-oriented siblings, though it never names instagram_accounts or instagram_publish_operation explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'今後の投稿先' implies this is a setup step to run before posting, which gives an implicit ordering cue. However, there is no explicit when-to-use/when-not guidance and no mention of which sibling to call instead for listing accounts or actually publishing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

instagram_statusA
Read-onlyIdempotent

HTTP Relayを必要時だけ起動し、依存ツール・接続・選択中の投稿先を診断する。

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

アノテーションは読み取り専用・冪等・非破壊であることを既に示していますが、説明文はさらに HTTP Relay を必要に応じて遅延起動するという副作用の可能性と、診断対象(依存ツール、接続、選択中の投稿先)を開示しており、構造化データを超えた価値を追加しています。

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

一文で無駄がなく、起動条件が先頭に置かれています。ただし「依存ツール・接続・選択中の投稿先を診断する」という列挙はやや密で、診断結果の形式に触れる余地はあります。

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

0パラメータ、出力スキーマあり、読み取り専用アノテーションありという比較的単純なツールに対して、診断対象と起動条件を説明しており十分です。出力スキーマがあるため戻り値の説明は不要です。

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

パラメータが0個のためベースラインは4です。スキーマに記述すべき引数は存在せず、説明文がパラメータ理解を補う必要はありません。

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

特定の動詞(診断する・起動する)と対象(依存ツール、接続、選択中の投稿先)を明確に述べており、エージェントはこれが診断ツールであると即座に判断できます。ただし、instagram_operation_status のような類似のステータス系兄弟ツールとの違いは明示していません。

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

「必要時だけ」という起動条件と、公開前の健全性チェックという暗黙の用途は読み取れますが、いつ instagram_operation_status や instagram_accounts ではなくこちらを使うべきかについて明示的な指針はありません。

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updatesv0.1.0
    • First observedinstagram_accounts
    • First observedinstagram_highlights
    • First observedinstagram_operation_status
    • First observedinstagram_preview_url
    • First observedinstagram_publish_operation
    • First observedinstagram_resume_highlight
    • First observedinstagram_select_account
    • First observedinstagram_status

TDQS

B3.4/5.0

Scored across 8 tools

Disambiguation4/5

The preview/publish/status workflow is clearly separated, and select_account vs. accounts vs. highlights vs. resume_highlight are mostly distinct. The main overlap is among instagram_status, instagram_accounts, and instagram_operation_status, all of which report some kind of status or selected destination, though their descriptions clarify different scopes.

Naming Consistency4/5

All tools use a consistent instagram_ prefix and snake_case formatting, with a mostly coherent split between noun-style read tools and verb_noun action tools. The naming is not a strict single verb_noun pattern throughout, but it is predictable and readable.

Tool Count5/5

Eight tools is well-scoped for an Instagram story publishing workflow: account selection, preview, publish, status tracking, diagnostics, and highlight handling each have a clear role. There is no excessive tool sprawl.

Completeness4/5

The core lifecycle is covered: diagnose, list/select account, preview URL material, publish previewed operations, check operation status, and list/resume highlights. Minor gaps remain around cancellation, editing a previewed operation, or creating/managing new highlights beyond resuming an existing one.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables retrieval and analysis of content from YouTube, TikTok, Instagram, and Threads, including metadata, captions, comments, feeds, search results, transcripts, and on-screen text from videos or slides. Supports local stdio and remote HTTP/SSE deployment with optional API keys, Whisper transcription, and Tesseract OCR.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables a single professional Instagram account to be managed through Claude, including reading and replying to comments and direct messages, and viewing account and media statistics. It runs as a remote streamable HTTP server with OAuth-protected access and automatic renewal of the Instagram token.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables Claude Desktop and Cursor to orchestrate a zero-API Facebook and Instagram studio, covering persistent-browser login, saved-Reel scraping and yt-dlp downloads, FFmpeg music mixing, Reel/post publishing, and humanized AI comment replies. All AI captioning and reply generation runs locally through Ollama, with no Meta Graph API or paid SaaS required.
    MIT