Skip to main content
Glama
HiroakiKatoh

Deep Impact Mapper

by HiroakiKatoh

Deep Impact Mapper (DIM)

社内文書・メールの「業務文脈を整理する頭脳」 — 編集波及の特定に加え、複数文書の名寄せ・矛盾検出・鮮度判定・フィードバック反映を提供する MCP サーバー(Azure MCP SaaS 対応)

Legal Impact Mapper (LIM) の派生版。法律文書の代わりに、社内メール・会議依頼・アジェンダ・資料を対象にします。

概要

このツールがやること:

  • メール・会議依頼・アジェンダ・資料をノードとエッジのグラフに構造化

  • 1箇所の編集を検出し、依存グラフを辿って影響範囲を自動伝播

  • 複数文書の同一人物・案件を名寄せして統合(merge_content_graphs

  • 情報同士の矛盾・新旧関係を検出(detect_conflicts

  • 「この情報はもう古くないか」を判定(assess_freshness

  • 本人の承認・修正・否認をノードのライフサイクルに反映(record_feedback

代表例:

開始時刻 14:00 → 16:00 に変更
  → 参加メンバーが変わる
    → アジェンダの進行が変わる
      → 資料(Q2実績スライド)の内容修正が必要
メール(7/1: 期限は水曜) + アジェンダ(7/8: 期限は金曜)
  → 名寄せで「同一案件の期限」と特定
    → 新旧関係を確定(金曜が最新、水曜は stale)
      → 古い記載箇所のみが編集対象に

このツールがやらないこと:

  • 文書の自動生成・自動修正

  • 要約

  • ポリシー判断・法的助言

Related MCP server: ASR Graph of Thoughts (GoT) MCP Server

インストール

git clone https://github.com/HiroakiKatoh/DeepImpactMapper.git
cd DeepImpactMapper
npm install
npm run build

設定

環境変数

主要なもののみ。全一覧は .env.example を参照。

変数名

必須

説明

ANTHROPIC_API_KEY

Yes*

Anthropic API キー(DIM_LLM_PROVIDER=anthropic 時)

DIM_LLM_PROVIDER

No

anthropic(デフォルト)/ azure-openai(BYOキー対応)

DIM_MODEL

No

使用モデル(デフォルト: claude-sonnet-4-20250514

DIM_STUB_LLM

No

1 でスタブモード(API 不要)

DIM_STORAGE

No

memory(デフォルト)/ file / cosmos

Cursor での設定(ローカル stdio)

.cursor/mcp.json:

{
  "mcpServers": {
    "deep-impact-mapper": {
      "command": "node",
      "args": ["path/to/Deep_Impact_Mapper/dist/server.js"],
      "env": {
        "ANTHROPIC_API_KEY": "sk-ant-xxxxx"
      }
    }
  }
}

リモート接続(Streamable HTTP / SaaS モード)

npm run start:http   # http://localhost:3000/mcp
{
  "mcpServers": {
    "deep-impact-mapper": {
      "url": "https://<host>/mcp",
      "headers": { "Authorization": "Bearer <APIキー>" }
    }
  }
}

Azure へのデプロイ(Container Apps + Cosmos DB)は infra/README.md を参照。

提供ツール

ツール

説明

LLM使用

extract_content_graph

テキストを ContentGraph に構造化(判断経緯・観測日時・根拠付き)

あり

update_content_node

ノードの内容を変更

なし

analyze_impact

変更の影響範囲を分析

あり

merge_content_graphs

複数文書のグラフを名寄せ統合

あり

detect_conflicts

矛盾・新旧関係を検出(supersedes エッジ自動追記)

あり(無効化可)

assess_freshness

情報の鮮度(fresh/stale/unverified)を判定

なし

record_feedback

本人の承認/修正/否認を status に反映

なし

save_graph / load_graph / list_graphs

グラフの永続化と graph_id 参照

なし

使い方の流れ

単一文書の編集波及:
  extract_content_graph → update_content_node → analyze_impact

複数文書の文脈整理(難所B):
  extract_content_graph ×N → merge_content_graphs → detect_conflicts
    → assess_freshness → record_feedback

開発

npm install
npm run build
npm test        # 単体・統合テスト
npm run eval    # golden set 10件の評価ハーネス(スタブモードで無料実行可)
npm run dev

LIM との関係

DIM は Legal Impact Mapper をベースに、社内コミュニケーション向けにドメインモデルとプロンプトを差し替えた派生版です。詳細は MEMO.md を参照。

ライセンス

ISC

Available Tools

3 tools
analyze_impactAnalyze ImpactA

【いつ使う】update_content_nodeで変更したノードの影響範囲を確定するとき。 【入力】graph: 更新済みContentGraph / changed_node_ids 【出力】{ changed_node_ids, affected_node_ids, directly_affected, indirectly_affected, explanations, risk_level, warning? } 【注意】affected_node_ids: []の場合は編集作業は不要。編集対象は changed_node_ids + affected_node_ids に対応する原文箇所のみ。

ParametersJSON Schema
NameRequiredDescriptionDefault
graphYes現在のContentGraph
changed_node_idsYes変更されたノードのIDリスト

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description fully covers behavioral context. It describes the output fields including risk_level and warning, and a critical note about empty affected_node_ids meaning no editing needed. It does not mention auth or side effects, but as an analysis tool, it likely has no destructive behavior. The description adds significant value beyond the schema.

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?

The description is highly structured with clear sections for usage, inputs, outputs, and notes. It is concise (5 lines) with no redundant information, making it easy for an AI agent to parse and understand quickly.

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

Completeness5/5

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

Given the tool's complexity with nested input objects and no output schema, the description provides complete context: when to use, exact input expectations, full output structure, and a critical behavioral note. No gaps remain for correct invocation.

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?

Schema coverage is 100%, so baseline is 3. The description adds meaning by labeling graph as '更新済みContentGraph' (updated ContentGraph) and describing the output structure that clarifies what the parameters lead to. This goes beyond the schema's basic descriptions.

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

Purpose5/5

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

The description starts with a clear usage context: 'update_content_nodeで変更したノードの影響範囲を確定するとき', which precisely states that this tool is used after update_content_node to determine the impact range. This distinguishes it from siblings extract_content_graph and update_content_node, as it focuses on impact analysis after changes.

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 description explicitly states when to use: after update_content_node. It also includes a note about when editing is unnecessary (if affected_node_ids is empty), providing practical guidance. However, it does not explicitly mention when not to use or alternative tools, though siblings are clearly different in purpose.

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

extract_content_graphExtract Content GraphA

【いつ使う】社内メール・会議依頼・アジェンダ・資料のテキストを初めてグラフ化するときのみ呼ぶ。同一文書群に対して2回目以降は不要(内部でLLMを呼ぶため高コスト)。 【入力】text: メール本文、会議依頼、アジェンダ、資料の記述(最大50,000文字) 【出力】ContentGraph: { nodes: ContentNode[], edges: Edge[] }。各ノードはid/type/text/confidenceを持ち、source_docで元文書を示す。競合解釈にはgroup_idが付与される。 【注意】このgraphオブジェクトをそのまま後続の update_content_node と analyze_impact に渡すこと。

ParametersJSON Schema
NameRequiredDescriptionDefault
textYes構造化対象のテキスト(メール、会議依頼、アジェンダ、資料、社内メモなど)

TDQS

A4.8/5.0
Behavior4/5

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

No annotations provided, so description carries full burden. It discloses high cost, character limit, output structure (nodes/edges with fields), and the need to pass the graph to subsequent tools. Lacks details on side effects or error conditions, but otherwise thorough.

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?

Structured with clear labels (【いつ使う】, 【入力】, 【出力】, 【注意】) and front-loaded with usage guidelines. Every sentence is necessary and concise, no wasted words.

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

Completeness5/5

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

Given no output schema, the description describes the output structure (ContentGraph with nodes/edges and fields like group_id) thoroughly. It also provides usage context for subsequent steps, making it complete for the tool's complexity.

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

Parameters5/5

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

The single parameter (text) has 100% schema coverage, but the description adds specific examples of acceptable content and a maximum character length (50,000), adding meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the purpose: to graphify text from internal emails, meeting requests, agendas, etc., for the first time only. It explicitly distinguishes from sibling tools (analyze_impact, update_content_node) by focusing on initial extraction.

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

Usage Guidelines5/5

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

Explicitly states when to use (first time only) and when not to (second time or later for same document group), with reasoning about high cost. It implies alternatives: subsequent tools for later steps.

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

update_content_nodeUpdate Content NodeA

【いつ使う】ユーザーがノードの内容(メール文言、時刻、参加者等)を変更するとき。extract_content_graphの出力graphを受け取って呼ぶ。 【入力】graph / node_id / new_text / new_type(任意)/ mark_verified(デフォルトtrue) 【出力】{ graph, changed_node_ids, diff_summary } 【注意】user_verified=trueのノードは変更を拒否する。

ParametersJSON Schema
NameRequiredDescriptionDefault
graphYes現在のContentGraph(extract_content_graphの出力)
node_idYes変更対象のノードID
new_textYesノードの新しいテキスト
new_typeNoノードの新しい分類タイプ(任意)
mark_verifiedNo変更後にuser_verified=trueとマークするか(デフォルト: true)

TDQS

A4/5.0
Behavior4/5

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

No annotations provided, so description fully handles behavioral disclosure. It states the tool modifies nodes, requires graph input, outputs graph+changed ids+diff summary, and important constraint: nodes with user_verified=true reject changes. Does not cover idempotency or side effects, but sufficient for safe use.

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?

Description is well-structured with clear sections (when to use, input, output, note). Each sentence earns its place—no fluff. Front-loaded with usage context.

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?

Despite no output schema, the description explains return format (graph, changed_node_ids, diff_summary). It provides behavioral note about validation. For a complex tool with nested object input and 5 params, this is adequately complete. Could mention error handling or edge cases, but not critical.

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 100%, so baseline is 3. The description adds little beyond schema: it lists parameters and notes optionality (new_type optional, mark_verified default true). But the schema already describes them. No significant enrichment of parameter meaning.

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 clearly states the tool updates a node's content with specific examples (mail text, time, participants). It distinguishes itself from siblings implicitly by focusing on modification, while extract_content_graph extracts and analyze_impact likely analyzes. However, no explicit distinction from alternatives is given.

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?

Explicit 'when to use' section (ユーザーがノードの内容を変更するとき) and guidance to call after extract_content_graph. Includes a constraint ('user_verified=true rejects changes') but does not specify when NOT to use or compare with sibling tools.

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. Dates show when Glama detected each change.

  1. 3 tool updatesv0.1.0
    • First observedanalyze_impact
    • First observedextract_content_graph
    • First observedupdate_content_node

TDQS

A4.4/5.0
Disambiguation5/5

Each tool has a distinct purpose: extraction, modification, and analysis. No overlap in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in underscore_case (extract_content_graph, update_content_node, analyze_impact).

Tool Count5/5

Three tools cover the essential workflow without redundancy. Each tool serves a clear, necessary function.

Completeness4/5

The workflow from extraction to analysis is complete. A minor gap is the lack of a dedicated tool for viewing the graph, but the graph is accessible via outputs.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/HiroakiKatoh/DeepImpactMapper'

If you have feedback or need assistance with the MCP directory API, please join our Discord server