Skip to main content
Glama

antientropy-mcp

MCP server for searching and reading articles from the AntiEntropy Resource Portal. Gives Claude Code (or any MCP client) access to 140+ articles on nonprofit governance, compliance, HR policies, and fiscal sponsorship.

Tools

  • antientropy_glob — find articles by title/category path (*policy*, Governance*/**)

  • antientropy_grep — regex search across article content, ripgrep-style output

  • antientropy_read — read an article by slug with line numbers

  • antientropy_categories — browse the full category tree

Related MCP server: mcp-moncompte

Usage

Remote (hosted on Fly.io)

claude mcp add --transport http antientropy https://antientropy-mcp.fly.dev/mcp

Local (stdio)

claude mcp add antientropy -- uv run --directory /path/to/antientropy-mcp python -m antientropy_mcp

Populate the cache on first use:

uv run antientropy-sync

Articles are cached locally (~~/.antientropy-mcp). The remote server syncs daily via cron.

Development

uv sync
uv run pytest

Deploy

flyctl deploy

Requires a Fly.io volume named data mounted at /data. See fly.toml for config.

Available Tools

4 tools
antientropy_categoriesB

List the category tree of the AntiEntropy Resource Portal.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool lists a category tree, implying a read-only operation, but does not cover aspects like rate limits, authentication needs, error handling, or the structure of the output. This leaves significant gaps in understanding the tool's 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?

The description is a single, clear sentence that efficiently conveys the tool's purpose without unnecessary words. It is front-loaded and wastes no space, making it highly concise and well-structured.

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?

Given the tool has 0 parameters, 100% schema coverage, and an output schema exists, the description is minimally adequate. However, it lacks behavioral context (e.g., how the category tree is structured or any usage constraints), which is important for a tool with no annotations. This results in a baseline score of 3, indicating clear gaps in completeness.

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 has 0 parameters, and the schema description coverage is 100%, so there is no need for parameter details in the description. The baseline for this scenario is 4, as the description appropriately avoids redundant information and focuses on the tool's purpose.

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 action ('List') and the resource ('category tree of the AntiEntropy Resource Portal'), making the purpose understandable. However, it does not explicitly differentiate this tool from its siblings (antientropy_glob, antientropy_grep, antientropy_read), which would be needed for a score of 5.

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?

The description provides no guidance on when to use this tool versus its siblings or any alternatives. It lacks context about specific scenarios or exclusions, leaving the agent without usage direction beyond the basic purpose.

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

antientropy_globA

Find articles matching a glob pattern.

Pattern matches against the virtual path: {category_path}/{slug} Examples: '/gdpr', 'policy', 'Governance/*', '**' (all) Returns matching articles with titles and category paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternNo**

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?

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly describes what the tool does (returns matching articles with titles and category paths) and provides examples of pattern usage, but doesn't mention performance characteristics, rate limits, authentication requirements, or what happens with invalid patterns. The description doesn't contradict any annotations since none exist.

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 perfectly structured and front-loaded with the core purpose in the first sentence, followed by essential details about pattern matching, concrete examples, and return values. Every sentence earns its place with no wasted words, making it highly efficient and readable.

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?

Given the tool's moderate complexity (pattern matching with glob syntax), no annotations, and the presence of an output schema (which handles return value documentation), the description is quite complete. It covers purpose, usage, parameter semantics, and examples well. The main gap is lack of behavioral details like error handling or performance limits, but the output schema reduces the need for return value explanation.

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?

With 0% schema description coverage and only one parameter, the description adds significant value beyond the schema. It explains what the pattern matches against ('virtual path: {category_path}/{slug}'), provides concrete examples of valid patterns, and clarifies the default pattern '**' means 'all'. This fully compensates for the lack of schema documentation.

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's purpose with specific verb ('Find articles') and resource ('matching a glob pattern'), and distinguishes it from siblings by focusing on pattern-based matching rather than category listing (antientropy_categories), content searching (antientropy_grep), or direct article reading (antientropy_read).

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 provides clear context for when to use this tool (finding articles by glob pattern against virtual paths) and includes helpful examples, but doesn't explicitly state when not to use it or name specific alternatives among the sibling tools, though the pattern focus implicitly suggests it's for path-based matching rather than content searching.

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

antientropy_grepA

Search article content with a regex pattern.

Returns matches formatted like ripgrep: slug:line_number:matching_line

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYes
case_insensitiveNo
context_linesNo
head_limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds some context by describing the return format ('Returns matches formatted like ripgrep: slug:line_number:matching_line'), which is useful. However, it doesn't cover other behavioral aspects like error handling, performance implications, or any constraints beyond the output format, leaving gaps in transparency.

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 front-loaded with the core purpose in the first sentence and adds necessary output format details in the second. Every sentence earns its place without redundancy, making it efficient and well-structured for quick understanding.

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?

Given the tool's complexity (4 parameters, 0% schema coverage, no annotations) and the presence of an output schema, the description is reasonably complete. It explains the purpose and output format, but could improve by addressing parameter semantics and usage guidelines to better compensate for the lack of annotations and low schema coverage.

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 must compensate, but it provides no information about parameters beyond implying a regex pattern. The description mentions 'regex pattern' which aligns with the 'pattern' parameter, but doesn't explain the semantics of 'case_insensitive', 'context_lines', or 'head_limit'. This partial compensation results in a baseline score due to the lack of detailed parameter guidance.

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 specific action ('Search article content') and the method ('with a regex pattern'), distinguishing it from siblings like antientropy_categories, antientropy_glob, and antientropy_read. It provides a verb+resource combination that is precise and unambiguous.

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?

The description offers no guidance on when to use this tool versus its siblings, such as antientropy_glob or antientropy_read. It lacks explicit context, exclusions, or alternatives, leaving the agent to infer usage based on tool names alone without any direction.

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

antientropy_readA

Read an article's content by slug.

Returns content with line numbers (cat -n format). Use antientropy_glob or antientropy_grep to discover slugs.

ParametersJSON Schema
NameRequiredDescriptionDefault
article_slugYes
offsetNo
limitNo

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?

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: it returns content with line numbers (cat -n format), which adds useful context beyond basic reading. However, it doesn't cover other aspects like error handling, permissions, or rate limits, leaving gaps for a tool with no annotation coverage.

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 appropriately sized and front-loaded, with three concise sentences that each serve a clear purpose: stating the action, specifying the return format, and providing usage guidance. There is zero waste, making it highly efficient.

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?

Given the complexity (a read operation with parameters), no annotations, and an output schema present, the description is reasonably complete. It explains the return format and usage context, but since the output schema exists, it doesn't need to detail return values. However, with 0% schema coverage and no annotations, it could benefit from more parameter guidance.

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 must compensate. It mentions 'article_slug' and implies usage with offset and limit through 'Returns content with line numbers,' but doesn't explicitly explain the parameters' roles or semantics. This adds minimal value beyond the schema, resulting in a baseline score due to incomplete compensation.

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 verb ('Read') and resource ('article's content by slug'), making the purpose specific and understandable. It distinguishes from siblings by mentioning antientropy_glob and antientropy_grep as discovery tools, but doesn't explicitly differentiate from antientropy_categories, which might be a related but distinct operation.

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 provides clear context by stating 'Use antientropy_glob or antientropy_grep to discover slugs,' which guides when to use this tool (after slug discovery) and mentions alternatives for that purpose. However, it lacks explicit exclusions or comparisons to all siblings like antientropy_categories, leaving some ambiguity.

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 observedantientropy_categories
    • First observedantientropy_glob
    • First observedantientropy_grep
    • First observedantientropy_read

TDQS

A3.8/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: antientropy_categories lists the category tree, antientropy_glob finds articles by path pattern, antientropy_grep searches article content with regex, and antientropy_read retrieves article content by slug. There is no overlap or ambiguity between these functions.

Naming Consistency5/5

All tool names follow a consistent 'antientropy_' prefix with descriptive suffixes (categories, glob, grep, read) in snake_case. This pattern is uniform throughout the set, making the tools easily identifiable and predictable.

Tool Count4/5

With 4 tools, the count is reasonable for a resource portal server, covering browsing (categories, glob), searching (grep), and reading (read). It is slightly lean but well-scoped, as each tool serves a distinct and necessary function without redundancy.

Completeness4/5

The tool set provides a complete workflow for discovering and accessing articles: listing categories, finding articles by path or content, and reading content. Minor gaps might include operations like creating or updating articles, but for a read-only portal, the coverage is sufficient for typical agent tasks.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A Model Context Protocol (MCP) server that provides access to ProPublica's Nonprofit Explorer API, enabling AI models to search and analyze nonprofit organizations' Form 990 data for CRM integration and prospect research.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Read-only MCP server exposing the catalog of articles from moncompte.org. Enables AI agents to search and retrieve article content via tools.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Delivers on-demand knowledge from a built-in library of 728 agents, skills, patterns, and examples across 26 domains to any MCP-compatible AI tool.
    6
    12 npm
    1
    MIT