Skip to main content
Glama

agentflow-mcp

エンタープライズアーキテクチャの知識を提供する、agentflow デモパイプライン向けの MCP サーバーです。FastMCP + TypeScript で構築され、GCP Cloud Run にデプロイされています。

このサーバーは、Architect エージェントと Risk Checker エージェントを、一般的な LLM の推論ではなく厳選されたエンタープライズパターンに基づかせるための4つのツールを公開します。

ツール

呼び出し元

戻り値

arch_pattern_lookup

Architect エージェント

参照アーキテクチャパターン、コンポーネント、図データ

tool_selection_lookup

Architect エージェント

制約を考慮した推論によるプラットフォーム推奨

risk_policy_lookup

Risk Checker エージェント

必要なコントロール、リスクフラグ、HITL トリガー

brand_context_lookup

Architect エージェント

企業のアイデンティティ、ポジショニング、ロゴ(Brandfetch と logo.dev 経由)

位置づけ

agentflow pipeline                          agentflow-mcp
┌──────────────────────┐                   ┌───────────────────────┐
│  Qualifier Agent     │                   │  arch_pattern_lookup   │
│  - clarifies the ask │                   │  tool_selection_lookup │
└──────┬───────────────┘                   │  risk_policy_lookup    │
       │ handoff                          │  brand_context_lookup  │
┌──────▼───────────────┐                   │                        │
│  Architect Agent     │──── MCP calls ───▶│  Source pack (data/)   │
│  - pattern selection │                   │  102 markdown files    │
│  - tool selection    │◀── JSON response ─│  with YAML frontmatter  │
│  - diagram rendering │                   │                        │
└──────┬───────────────┘                   │  Brandfetch + logo.dev │
       │ handoff                          │  (cached, additive)    │
┌──────▼───────────────┐                   └───────────────────────┘
│  Risk Checker Agent  │──── risk_policy_lookup ──▶
│  - HITL gate trigger  │◀── risk_flags, HITL ──
└──────────────────────┘

この MCP は ツールプロバイダー であり、エージェントオーケストレーターではありません。エージェントのプロンプトとアーキテクチャ図スキルは agentflow プロジェクト側にあります。MCP は構造化データを提供し、エージェントがそれを解釈して行動します。

Related MCP server: MCP Architect

クイックスタート

前提条件

  • Node.js >= 20

  • (任意)brand_context_lookup 用の Brandfetch API キーと logo.dev キー

インストールと実行

npm install
npm run dev          # stdio transport (local dev + MCP Inspector)

HTTP トランスポート(Cloud Run)

MCP_TRANSPORT=http-stream PORT=8080 npm run dev
# agentflow-mcp listening on http://0.0.0.0:8080/mcp

テストの実行

npm test             # 31 unit + integration tests
npm run typecheck    # tsc --noEmit
npm run check        # biome lint + format

環境変数

.env.example を .env にコピーしてキーを設定してください。外部 API キーが必要なのは brand_context_lookup だけです。残りの3つのツールはソースパックからオフラインで動作します。

変数

必要とするもの

目的

BRANDFETCH_API_KEY

brand_context_lookup

Brandfetch Brand Context API の Bearer トークン

LOGO_DEV_SECRET_KEY

brand_context_lookup

logo.dev Brand API の Bearer トークン

LOGO_DEV_PUBLISHABLE_KEY

brand_context_lookup

logo.dev CDN URL 用の公開可能キー

MCP_TRANSPORT

サーバー

stdio(デフォルト)または http-stream

PORT

サーバー

HTTP ポート(デフォルト 8080。トランスポートが http-stream の場合に使用)

API キーが設定されていない場合、brand_context_lookup はキャッシュ済みドメインにはキャッシュされたレスポンスを、未取得のドメインには利用できないことを伝えるフォールバックレスポンスを返します。他の3つのツールは通常どおり動作します。

ツール

arch_pattern_lookup

エンタープライズの依頼を、厳選された参照アーキテクチャパターンにマッチングします。

入力:

{
  "industry": "media_agency",
  "data_stack": ["BigQuery", "Snowflake"],
  "cloud": "GCP",
  "constraints": ["SAML SSO", "EU data residency", "cross-client governance"],
  "latency": "batch"
}

出力:

{
  "pattern_id": "media_agency_audience_measurement",
  "architecture_summary": "...",
  "recommended_components": ["BigQuery", "Snowflake", "SAML SSO", "GCP EU Region"],
  "data_zones": ["bronze", "silver", "gold"],
  "integration_notes": ["..."],
  "confidence": 0.87,
  "diagram_data": {
    "components": [{ "name": "BigQuery", "type": "database", "sublabel": "...", "zone": "gold" }],
    "connections": [{ "from": "Users", "to": "SAML SSO", "label": "OAuth 2.0", "style": "dashed" }],
    "boundaries": [{ "label": "GCP EU Region", "type": "region" }]
  },
  "source_references": [{ "path": "data/patterns/...", "title": "...", "source_url": "..." }]
}

マッチングロジック: 決定論的なルールベース方式です。業界の一致(40%)+データスタックの重複(30%)+制約条件のカバー率(30%)で算出します。厳選されたマッチ(信頼度 >= 0.85)には diagram_data とソースの参照が含まれます。弱いマッチは、信頼度 < 0.5 の汎用エンタープライズ AI POC パターンにフォールバックします。

tool_selection_lookup

ワークロード、データスタック、制約条件、レイテンシーに基づいてプラットフォームを推奨します。

入力:

{
  "use_case": "AI-powered patient insights",
  "data_stack": ["Databricks"],
  "constraints": ["HIPAA", "PHI", "US data residency"],
  "latency": "batch"
}

出力:

{
  "recommended_platform": "Databricks",
  "cloud_fit": "Azure or AWS",
  "reasoning": "Strong lakehouse fit for healthcare AI with HIPAA-compliant governance...",
  "alternatives": [{ "platform": "Snowflake", "rationale": "..." }, { "platform": "BigQuery", "rationale": "..." }]
}

risk_policy_lookup

業界固有のリスクチェックとガバナンスチェックを返します。規制対象データに関する HITL トリガーも含まれます。

入力:

{
  "industry": "healthcare",
  "data_classification": ["PHI", "PII"],
  "region": "US",
  "deployment": "cloud",
  "constraints": ["HIPAA"]
}

出力:

{
  "required_controls": ["RBAC", "audit logs", "data lineage", "SAML SSO"],
  "risk_flags": ["prompt leakage", "overbroad analyst access"],
  "hitl_required": true,
  "review_reason": "PHI access requires human approval before final architecture signoff"
}

HITL は、規制対象データ(PHI、PII、規制対象金融データ)に対して、人間が読める review_reason とともにトリガーされます。

brand_context_lookup

Brandfetch と logo.dev から企業ブランド情報とロゴを取得します。多層キャッシュを備えています。

入力:

{
  "domain": "havas.com"
}

出力:

{
  "company_name": "Havas",
  "domain": "havas.com",
  "industry_hint": "media_agency",
  "description": "...",
  "tags": ["advertising", "marketing", "media"],
  "positioning": { "value_proposition": "...", "target_audience": "...", "products_and_services": "..." },
  "brand": { "voice": "...", "style": "..." },
  "logo_url": "https://...",
  "confidence": 0.85
}

キャッシュ層: (1)Brandfetch の cachedOnly=true によるキャッシュのみの即時ルックアップ、(2)TTL 付きローカルファイルキャッシュ。繰り返しのルックアップでは API クォータを消費せずキャッシュ済みデータを返します。API が到達不能な場合はグレースフルなフォールバックを行います。

ソースパック

data/ ディレクトリには、構造化された YAML frontmatter を持つ102個の Markdown ファイルが含まれており、次のカテゴリに整理されています:

data/
├── industry/      # Industry-specific architecture notes
├── vendors/        # Vendor documentation (GCP, AWS, Azure, Snowflake, Databricks)
└── patterns/       # Curated reference architecture patterns (4 demo scenarios)

frontmatter のフィールド: type, title, source_url, vendor, industry, data_stack, cloud, constraints, compliance, region, data_zones, latency, pattern_id, architecture_summary, recommended_components, integration_notes, confidence_baseline, diagram_data。

ソースパックはサーバー起動時に、業界、データスタック、制約条件、pattern_id をキーとするインメモリーインデックスとして読み込まれます。

デモシナリオ

シナリオ

業界

パターン ID

メディアエージェンシーのオーディエンス計測

media_agency

media_agency_audience_measurement

ヘルスケアの患者インサイト

healthcare

healthcare_patient_insights

小売レイクハウスのパーソナライゼーション

retail

retail_lakehouse_personalization

FSI ガバナンスコパイロット

financial_services

fsi_governance_copilot

デプロイ

Docker

docker build -t agentflow-mcp .
docker run -p 8080:8080 agentflow-mcp

GCP Cloud Run

gcloud run deploy agentflow-mcp \
  --source . \
  --region run.googleapis.com \
  --port 8080 \
  --set-env-vars "MCP_TRANSPORT=http-stream" \
  --set-secrets "BRANDFETCH_API_KEY=brandfetch-api-key:latest,LOGO_DEV_SECRET_KEY=logo-dev-secret-key:latest,LOGO_DEV_PUBLISHABLE_KEY=logo-dev-publishable-key:latest"

完全なサービス構成は cloud-run.yaml を参照してください。

Google App Engine

App Engine Standard はビルドステップを実行しないため、最初にローカルでコンパイルしてからデプロイします:

npm run build          # compile src/ -> dist/

# (Optional) Warm brand cache for demo domains before deploy
npx tsx scripts/brand-cache-warm.ts

gcloud app deploy      # deploys with dist/ and data/ included

app.yaml は MCP_TRANSPORT=http-stream を設定し、アイドル時にはゼロへスケールします(デモにはコストが低く抑えられます)。App Engine は PORT を自動設定するため、サーバーはそれをそのまま読み取ります。

シークレットには Secret Manager を使用します:

# Create secrets
gcloud secrets create brandfetch-api-key --data-file=<(echo -n "$BRANDFETCH_API_KEY")
gcloud secrets create logo-dev-secret-key --data-file=<(echo -n "$LOGO_DEV_SECRET_KEY")
gcloud secrets create logo-dev-publishable-key --data-file=<(echo -n "$LOGO_DEV_PUBLISHABLE_KEY")

# Reference them in app.yaml (uncomment the includes: section)

完全な構成は app.yaml と .gcloudignore を参照してください。

スクリプト

スクリプト

その用途

scripts/validate-source-pack.ts

data/ 内のすべての Markdown ファイルが有効な YAML frontmatter を持つことを検証する

scripts/generate-frontmatter.mjs

ソースパックファイルの frontmatter を生成する

scripts/mcp-list-check.ts

4つのツールがすべて MCP ツール一覧から検出可能であることを確認する

scripts/brand-cache-warm.ts

4つのデモドメインのブランドキャッシュを事前投入する

npx tsx scripts/validate-source-pack.ts   # validate source pack
npx tsx scripts/mcp-list-check.ts          # verify tool discovery
npx tsx scripts/brand-cache-warm.ts        # warm brand cache

MCP Inspector でのテスト

npx @modelcontextprotocol/inspector npm run dev

これにより MCP Inspector の UI が起動し、ツールを対話的に実行してレスポンスを確認できます。

プロジェクト構成

agentflow-mcp/
├── src/
│   ├── index.ts                    # MCP server entry point (stdio + http-stream)
│   ├── tools/
│   │   ├── archPatternLookup.ts    # Pattern matching + confidence scoring
│   │   ├── toolSelectionLookup.ts  # Platform recommendation
│   │   ├── riskPolicyLookup.ts     # Risk/governance checks + HITL
│   │   └── brandContextLookup.ts   # Brandfetch + logo.dev with caching
│   ├── data/
│   │   ├── loader.ts                # Source pack parser + in-memory index
│   │   ├── brandfetchClient.ts     # Brandfetch Brand Context API client
│   │   ├── logoDevClient.ts         # logo.dev Brand API client
│   │   └── brandCache.ts            # Local file cache with TTL
│   └── types/
│       ├── source.ts                # Source pack entry types
│       ├── arch-pattern.ts          # arch_pattern_lookup types
│       ├── tool-selection.ts        # tool_selection_lookup types
│       ├── risk-policy.ts           # risk_policy_lookup types
│       └── brand-context.ts        # brand_context_lookup types
├── data/                            # Source pack (102 markdown files)
│   ├── industry/
│   ├── vendors/
│   └── patterns/
├── tests/                           # Unit + integration tests
├── docs/                            # PRD, MCP overview
├── scripts/                         # Validation + cache warming scripts
├── openspec/                        # OpenSpec specs (4 capabilities)
│   ├── specs/                       # Main specs (synced from archived change)
│   └── changes/archive/            # Archived change proposals
├── Dockerfile                       # Multi-stage build for Cloud Run
├── cloud-run.yaml                  # Cloud Run service config
└── package.json

技術スタック

  • ランタイム: Node.js >= 20

  • MCP フレームワーク: FastMCP v4

  • 言語: TypeScript(strict)

  • 検証: Zod v4

  • Lint・フォーマット: Biome

  • テスト: Node.js 組み込みテストランナー

  • デプロイ: Docker + GCP Cloud Run

OpenSpec

このプロジェクトはスペック駆動開発に OpenSpec を使用しています。4つのツール機能は openspec/specs/ の下で規定されています:

  • arch-pattern-lookup(要件7件)

  • brand-context-lookup(要件6件)

  • risk-policy-lookup(要件4件)

  • tool-selection-lookup(要件5件)

スペックの検証は次のコマンドで行います:

openspec validate --specs
openspec doctor

ライセンス

MIT

Available Tools

4 tools
arch_pattern_lookupA

Match an enterprise ask (industry, data stack, cloud, constraints) to a curated reference architecture pattern with components, data zones, integration notes, confidence, and diagram-ready data.

NameRequiredDescriptionDefault
cloudNoCloud preference, e.g. GCP, AWS, Azure
latencyNoLatency expectation: batch or real-time
industryYesIndustry code, e.g. media_agency, healthcare, retail, financial_services
data_stackYesCandidate platforms/tools, e.g. ["BigQuery", "Snowflake"]
constraintsYesGovernance/compliance constraints, e.g. ["SAML SSO", "EU data residency"]

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden of explaining behavior. It discloses that the result is a curated, confidence-scored pattern rather than an unranked list. It does not detail no-match behaviors or side-effect safety, but the lookup-oriented naming and output-focused description make behavior reasonably transparent.

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?

The description is one information-dense sentence with no filler. It front-loads the core matching behavior, then lists the key outputs. It is compact and scannable, though the full list of outputs makes the sentence slightly long.

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?

For a lookup-oriented tool with no output schema and no annotations, the description adequately explains what inputs shape the match and what the caller receives. It does not cover edge cases like no matching pattern, confidence representation, or return structure, preventing a 5.

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?

All five parameters are already described in the schema with 100% coverage, so a baseline 2 is appropriate. The description only lightly reinforces the input dimensions and does not add material relationships or format details 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 uses a specific verb, 'Match', and a resource, 'reference architecture pattern', and identifies the output categories it returns. This clearly distinguishes it from sibling lookup tools like brand_context_lookup and tool_selection_lookup, which target different lookups.

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 clearly frames the use case: matching an enterprise ask with industry, data stack, cloud, and constraints to a reference architecture. It does not explicitly exclude or compare against sibling tools, but the intended context is clear enough for an agent to select it appropriately.

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

brand_context_lookupA

Retrieve company brand context (name, description, tags, positioning, brand voice/style, logo URL) for a resolved domain, from Brandfetch plus logo.dev. Serves cached data when the sources are unavailable. Resolve partial company names to a domain before calling.

NameRequiredDescriptionDefault
domainYesResolved company domain, e.g. "havas.com"

TDQS

A4.4/5.0
Behavior4/5

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

No annotations are present, so the description carries the burden. It adds useful behavioral context: the tool sources from Brandfetch plus logo.dev, and serves cached data when sources are unavailable. It could say more about return behavior or failure handling, but this is solid disclosure for a simple retrieval tool.

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?

Three short sentences with no wasted words. The main purpose is front-loaded, parameters/sources/usage-prerequisite are each given their own concise sentence.

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?

The description is sufficient for a simple one-parameter read tool. It names the output fields, the source, the fallback cache behavior, and the required input format. A minor gap is the lack of any statement about what happens when no brand context exists for the domain.

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 emphasizing that the domain must be a resolved company domain rather than a partial name, which goes beyond the schema's simple 'string' definition.

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 uses a specific verb ('Retrieve'), a clear resource ('company brand context'), and enumerates the exact fields returned. It also specifies the source and input requirement ('resolved domain'), which clearly separates it from the sibling tools by topic.

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?

It gives a clear prerequisite: resolve partial company names to a domain before calling. It does not explicitly name alternatives or state when not to use it, but the domain-required condition provides sufficiently clear usage context.

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

risk_policy_lookupA

Return required controls, risk flags, and human-in-the-loop triggers for an architecture based on industry, data classification (PHI, PII, regulated financial data), region, deployment model, and governance constraints.

NameRequiredDescriptionDefault
regionYesData region, e.g. US or EU
industryYesIndustry, e.g. healthcare, financial_services, media_agency, retail
deploymentYesDeployment model: cloud, on-prem, or hybrid
constraintsNoGovernance constraints from the architecture brief, e.g. ["cross-client governance", "EU data residency"]
data_classificationYesData classifications in scope, e.g. ["PHI", "PII"], ["regulated financial data"], ["non-sensitive"]

TDQS

A3.9/5.0
Behavior3/5

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

There are no annotations, so the description carries the full burden. It surfaces that the tool computes/returns policy-derived values and maps inputs to outputs, which is genuinely informative, but it doesn't say whether the data is static, whether lookups can return empty/no-match results, or whether governance constraints are validated at runtime. 3 is fair.

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?

One dense sentence with a heavy enumerative tail, but every phrase contributes. Front-loads the return value ('required controls, risk flags...') before diving into the lookup axes. Slightly long but not bloated; the enumeration is useful.

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?

For a lookup tool with 5 params, 100% schema coverage, and no output schema, the description covers the key decision context (what it returns and on what basis). It doesn't state the output shape, but with no output schema that gap is mostly acceptable, though adding 'returns a list of policy items' would make it complete.

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?

The input schema already documents every parameter with 100% coverage, so the baseline is 3 per the rubric. The description clarifies the semantic intent behind the parameters as a group (industry/classification/region/deployment drive policy), but adds no individual parameter details 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?

States a specific verb ('Return') and a specific resource ('required controls, risk flags, and human-in-the-loop triggers for an architecture') and enumerates the dimensions the lookup is based on, clearly distinguishing it from sibling lookup tools such as brand_context_lookup or arch_pattern_lookup. The scope is explicit enough that an agent can tell when to reach for this tool instead of the others.

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 clearly implies this tool is for policy/risk-oriented lookups and lists the exact inputs that drive the lookup, which gives strong context on when to use it. The only thing missing is an explicit 'use this instead of X when...' statement, but the sibling names (brand_context_lookup, arch_pattern_lookup) are distinguishable from the plain wording.

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

tool_selection_lookupA

Recommend a data platform based on use case, data stack, constraints (HIPAA, PII, data residency, SSO/SAML), and latency needs — with cloud fit, reasoning, and alternatives.

NameRequiredDescriptionDefault
latencyNoLatency need: batch or real-time
use_caseYesWhat the enterprise wants to build, e.g. "AI-powered patient insights"
data_stackYesPlatforms/tools in play or under consideration
constraintsYesGovernance/compliance constraints

TDQS

A4.2/5.0
Behavior3/5

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

No annotations exist, so the description carries the burden. It discloses that the tool will return 'cloud fit, reasoning, and alternatives,' which gives some behavioral shape, but it does not clarify whether it performs external calls, returns mock versus curated answers, or has any side effects. It describes inputs/outputs but not deeper behavior.

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, dense sentence lists all inputs and outputs without waste. It front-loads the verb and target, and every phrase earns its place. The semi-colon-separated output list is clear to parse.

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?

The description is sufficient for an agent to prepare the required fields and know what kind of response to expect (recommendation with cloud fit, reasoning, alternatives). Since there is no output schema, describing the response at this level helps. It could add the expected result shape or a mention of staleness provenance, but this is minor.

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 description coverage is 100%, so the baseline is 3. The description adds meaning by expanding 'constraints' with examples (HIPAA, PII, data residency, SSO/SAML) and by flagging latency as an additional decision factor. This goes beyond the literal schema descriptions and helps an agent populate parameters accurately.

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 names a concrete verb, 'Recommend', and a specific resource, 'data platform', and enumerates the decision inputs and outputs (cloud fit, reasoning, alternatives). This clearly differentiates the tool from siblings like arch_pattern_lookup and risk_policy_lookup, which concern different domains.

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 frames when to use this tool: when the agent needs a data platform recommendation given use case, data stack, and constraints. It doesn't explicitly mention alternative tools or exclusions, but the context is clear enough. Sibling names also make the separation obvious.

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. 4 tool updatesv0.1.0
    • First observedarch_pattern_lookup
    • First observedbrand_context_lookup
    • First observedrisk_policy_lookup
    • First observedtool_selection_lookup

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation4/5

Each tool targets a distinct outcome: architecture pattern, brand info, platform recommendation, and risk controls. There is some conceptual overlap between architecture patterns and tool/risk recommendations, but the descriptions make their outputs clear enough to avoid major misselection.

Naming Consistency5/5

All tool names follow the same clear `entity_lookup` pattern in lowercase snake_case: arch_pattern_lookup, brand_context_lookup, tool_selection_lookup, risk_policy_lookup. This makes the server feel uniform and predictable.

Tool Count5/5

With only 4 focused lookup tools, the server is tightly scoped and does not introduce redundancy. Each tool serves a distinct functional need, making this an appropriate small toolset.

Completeness4/5

The server covers the major lookup categories it appears designed for: architecture, brand, platform, and policy. It is slightly limited by the lack of any listing or browsing endpoint for available patterns/platforms, but for a retrieval-oriented tool set the core coverage is strong.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Provides a persistent memory and governance layer that allows AI coding agents to query documented architecture rules and validate code against team standards. It enables agents to verify compliance across categories like security and testing before suggesting changes to ensure consistency across development sessions.
    3
    17
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides comprehensive architectural expertise through specialized agents, resources, and tools for generating, evaluating, and modifying architectural designs.
    777 npm
    ISC
  • A
    license
    Not graded
    quality
    A
    maintenance
    Provides AI coding agents with an embedded knowledge graph and architecture governance tools, enabling blast radius analysis, compliance checks, and smart context extraction from codebases.
    Apache 2.0