Skip to main content
Glama

ASFポリシーMCP

Apache Software Foundationのポリシーに関する質問に回答するためのMCPサーバー。

https://www.apache.org/board/policies に記載されているすべてのポリシー(リリース、ライセンス、ブランディング、セキュリティ、インフラストラクチャ、インキュベーターなど)を網羅しています。

ポリシーページは30日間ローカルにキャッシュされます。単一の呼び出しでキャッシュをバイパスするには、読み取りツールで force_refresh=true を使用してください。

インストール

python3 -m venv .venv
. .venv/bin/activate
pip install -e .

Related MCP server: Open Policy Agent (OPA) REST API MCP Server

実行

asf-policy-mcp

ローカル開発用:

python -m asf_policy_mcp.server

テスト

pip install -e ".[dev]"
make check

Claude DesktopまたはCodexでの設定

{
  "mcpServers": {
    "asf-policy": {
      "command": "<path to PolicyMCP>/.venv/bin/python",
      "args": ["-m", "asf_policy_mcp.server"]
    }
  }
}

ツール

  • list_policies — セクションごとに整理された利用可能なすべてのポリシー文書を、キャッシュステータスと共に一覧表示します。

  • get_policy — キー(例: release_policy、branding、incubator)を指定して、ポリシー文書の全文を取得します。

  • search_policies — すべてのポリシー文書をキーワード検索し、コンテキスト付きのランク付けされた抜粋を返します。

  • refresh_cache — ASFウェブサイトから1つまたはすべてのポリシー文書を強制的に再取得します。

質問例

リリース

  • リリースアーティファクトが有効であるためには、どのファイルを含める必要がありますか?

  • PMCからの+1投票が1つだけでリリースを出荷できますか?

  • リリースアーティファクトはどこで公開する必要がありますか?GitHub Releasesを主要なダウンロード先として使用できますか?

インキュベーター

  • ポッドリングが卒業する前に何をする必要がありますか?

  • ポッドリングは卒業前にリリースを作成できますか?また、どのような追加要件が適用されますか?

  • ポッドリングのリリースに誰が投票でき、誰の投票が拘束力を持っていますか?

ライセンス

  • MITライセンスは、リリースにバンドルする場合、Apache 2.0と互換性がありますか?

  • LGPL 2.1でライセンスされたライブラリを含めることはできますか?

  • カテゴリXライセンスとは何ですか?また、なぜそれが重要ですか?

  • すべての貢献者からCLAを取得する必要がありますか?それともコミッターのみですか?

  • ソースファイルにはどのようなライセンスヘッダーが必要ですか?

セキュリティ

  • 誰かが脆弱性を非公開で報告した場合、開示までにどれくらいの期間がありますか?

  • セキュリティの問題は公開のdevメーリングリストで議論すべきですか?

ブランディング

  • 第三者が商用製品の名前に「Apache Foo」を使用できますか?

  • 商標コンプライアンスのために、プロジェクトのウェブサイトに何を表示する必要がありますか?

ポリシー文書

キー

タイトル

セクション

pmc

PMCガイド

コミュニティおよびプロジェクトの監督

project_independence

プロジェクトの独立性

独立性

board_reporting

理事会報告要件

報告

release_policy

リリースポリシー

リリース

voting

Apache投票プロセス

リリース

release_distribution

リリース配布ポリシー

リリース

security

セキュリティチームガイダンス

セキュリティ

security_committers

コミッター向けの脆弱性対応

セキュリティ

licenses

貢献者ライセンス同意書

ライセンス

source_headers

Apacheソースヘッダー

ライセンス

resolved_licenses

承認済み/解決済みのサードパーティライセンス

ライセンス

branding

プロジェクトブランディング要件

ブランディング

trademark_maintenance

商標維持の責任

ブランディング

website_linking

ウェブサイトリンクポリシー

ブランディング

repo_policy

リポジトリポリシー

インフラストラクチャ

website_policy

ウェブサイトポリシー

インフラストラクチャ

press

プレスおよびマーケティングポリシー

プレス

sponsorship

スポンサーシップ要件

資金調達

privacy

プライバシーポリシー

プライバシー

incubator

インキュベーターポッドリングポリシー

インキュベーター

Available Tools

4 tools
get_policyA

Retrieve the full text of a specific ASF policy document.

Use list_policies to discover valid policy keys such as 'release_policy', 'branding', 'resolved_licenses', 'incubator', etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYes
force_refreshNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must fully disclose behavior. It implies a read-only operation but does not explain the force_refresh parameter or any caching behavior. Side effects are not mentioned, but the tool is likely safe.

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?

Two concise sentences with no wasted words. The key point is front-loaded, and the guidance is immediately after.

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 simple retrieval tool, the description covers the main purpose and provides a prerequisite. However, it lacks details on the force_refresh parameter and potential errors. The output schema may compensate, but the description alone is slightly incomplete.

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%. The description does not explain the 'key' parameter's format or valid values beyond the example keys, and 'force_refresh' is not described. This is insufficient for parameter understanding.

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 tool retrieves the full text of a specific ASF policy document. It distinguishes from siblings by referencing list_policies for discovering valid keys.

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 directs users to use list_policies to find valid policy keys, providing a clear prerequisite and alternative. However, it does not mention when to use search_policies or refresh_cache instead.

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

list_policiesA

List all available ASF policy documents organised by section.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It states the tool lists all policies organized by section, which is transparent enough for a simple read operation. However, it does not disclose potential pagination, rate limits, or data volume, which could be relevant for an agent.

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 a single sentence with no filler. Every word adds value: 'list all available' sets scope, 'ASF policy documents' identifies the resource, 'organised by section' provides structure. It is optimally concise.

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 zero parameters and the presence of an output schema, the description is complete. It tells the agent what the tool does (list all policies by section) and nothing more is needed for correct invocation. Sibling tools provide additional context for differentiation.

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?

There are zero parameters, and the input schema coverage is 100% (empty). According to guidelines, the baseline score is 4 when no parameters exist. The description adds no param info because none are needed.

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 'List' and clearly identifies the resource as 'all available ASF policy documents'. It also adds organization detail 'by section', which differentiates it from siblings like 'get_policy' (single document) and 'search_policies' (filtered search).

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?

The description implies when to use the tool (when you need all policies organized by section) but provides no explicit guidance on when not to use it or alternatives. Given sibling names, context is inferred but not stated, so the score is neutral.

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

refresh_cacheA

Re-fetch policy documents from the ASF website in parallel, bypassing the 30-day cache.

Omit keys to refresh all policies.

ParametersJSON Schema
NameRequiredDescriptionDefault
keysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

The description mentions parallel fetching and cache bypass, which are key traits. But without annotations, it should disclose potential costs (external fetches) and safety (non-destructive but mutates cache). Currently lacks these.

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?

Two sentences with no redundancy. The first sentence states the main action, the second explains the parameter behavior. Efficient and well-structured.

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 an output schema and a single optional parameter, the description covers the essential information for invocation. Minor gap: doesn't mention the effect on other tools' data (e.g., get_policy will now show fresh data).

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 only parameter 'keys' has no schema description, but the description clarifies its meaning: omit to refresh all, provide to refresh specific. This adds value 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 action (re-fetch policy documents via parallel) and resource (ASF website), and it distinguishes from sibling tools that read the cached policies.

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 explains when to use the tool (to bypass cache and force refresh) and how to scope the refresh (omit keys for all, provide keys for specific). However, no explicit 'when not to use' or alternatives.

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

search_policiesA

Search across cached ASF policy documents for a query term or phrase.

Returns ranked excerpts with surrounding context. Only searches policies already in the local cache — run refresh_cache first to ensure all policies are available.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
max_resultsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Describes return format (ranked excerpts with context) and cache dependency. Does not disclose read-only nature or other behavioral details like rate limits or error conditions.

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 sentences, each adding value: first states purpose, second specifies return format, third gives prerequisite. No filler. Information is front-loaded and efficient.

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?

Output schema exists, so return details are covered. Description gives a high-level sense of output (ranked excerpts). However, missing parameter details and lack of behavioral nuance about caching status make it slightly less complete than ideal for a search tool.

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 coverage is 0%, meaning no descriptions in schema. Description only mentions 'query term or phrase' for the query parameter, but does not explain the max_results parameter or provide any additional semantics beyond the parameter names.

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?

Description clearly states verb 'search' and resource 'cached ASF policy documents', distinguishing it from siblings get_policy (retrieve specific), list_policies (list all), and refresh_cache (update). It specifies ranking and excerpts.

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?

Explicitly states prerequisite 'run refresh_cache first', advising when the tool is usable. Does not explicitly state when not to use or directly contrast with siblings, but the context is clear enough.

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 observedget_policy
    • First observedlist_policies
    • First observedrefresh_cache
    • First observedsearch_policies

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: listing, retrieving, searching, and caching. No overlap or confusion.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case: get_policy, list_policies, refresh_cache, search_policies.

Tool Count5/5

Four tools are perfectly scoped for managing policy documents: list, get, search, and cache refresh.

Completeness5/5

The set covers all necessary operations for a read-only policy server: discovery, retrieval, search, and cache management.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers