Skip to main content
Glama
benthomasson

expert-mcp-server

by benthomasson

expert-mcp-server

MCP server for expert-service knowledge bases. Lets any MCP-compatible agent query beliefs, search documents, and explore reasoning chains.

Install

uv tool install git+https://github.com/benthomasson/expert-mcp-server

Related MCP server: bedrock-kb-mcp-server

Configure

Create a .expert.toml in your project root:

url = "https://expert.ftl2.com"
project = "your-project-name"
api_key = "your-api-key"

Or set environment variables: EXPERT_URL, EXPERT_API_KEY, EXPERT_PROJECT.

Global config can also go in ~/.config/expert/config.toml under [default].

Usage

Claude Code

claude mcp add expert-service -- expert-mcp-server

Claude Desktop / other MCP clients

Add to your MCP config:

{
  "mcpServers": {
    "expert-service": {
      "command": "expert-mcp-server"
    }
  }
}

Or run from source:

{
  "mcpServers": {
    "expert-service": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/benthomasson/expert-mcp-server", "expert-mcp-server"]
    }
  }
}

Tools

Tool

Description

deep_search

Dual-path retrieval across beliefs and source documents with IDF ranking. Sub-second, no LLM call. Start here.

ask

LLM-synthesized answer grounded in the knowledge base.

search

Full-text search across beliefs, entries, and source documents.

explain_belief

Trace why a belief is IN or OUT through its justification chain.

what_if

Simulate retracting or asserting a belief to see the cascade.

get_belief

Full details for a specific belief including justifications.

list_beliefs

List beliefs filtered by status (IN/OUT).

list_projects

List available expert knowledge bases.

list_entries

List analysis entries (reports, findings).

get_entry

Read the full content of an entry.

All tools accept an optional project parameter. If omitted, the default project from config is used.

License

MIT

Available Tools

10 tools
askA

Ask a question and get an LLM-synthesized answer grounded in the knowledge base.

Uses the server's LLM to synthesize an answer from beliefs and source documents. Slower than deep_search but returns a ready-to-use answer.

Args: question: The question to ask project: Project name or UUID (uses default if empty)

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo
questionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Since annotations are absent, the description carries the full burden. It explains that the tool uses the server's LLM to synthesize an answer from beliefs and source documents, and that it is slower. This provides good insight into behavior, though it does not explicitly state whether the operation is read-only or if any side effects 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 concise, with no unnecessary words. It is front-loaded with the main purpose, then provides behavioral context, and finally lists arguments. Every sentence adds value, making it efficient for an AI agent 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?

Given the tool's simplicity (2 parameters, no nested objects) and the presence of an output schema, the description covers the essential aspects. It explains the tool's function, behavior, and sibling differentiation. However, it could mention any prerequisites like active knowledge base or authentication requirements.

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 adds basic semantics for each parameter: 'question: The question to ask' and 'project: Project name or UUID (uses default if empty)'. This is minimal but adequately clarifies the parameters beyond the schema titles.

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: 'Ask a question and get an LLM-synthesized answer grounded in the knowledge base.' It uses a specific verb (ask) and resource (knowledge base answer), and distinguishes itself from sibling 'deep_search' by noting it is slower but returns a ready-to-use answer.

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 a clear comparison with 'deep_search', stating that 'ask' is slower but returns a ready-to-use answer. This gives implicit guidance on when to use each. However, it does not explicitly mention when not to use 'ask' or compare to other siblings like 'search' or 'get_belief'.

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

explain_beliefA

Explain why a belief is IN or OUT by tracing its justification chain.

Shows what supports this belief, what assumptions it rests on, and what would change if it were retracted.

Args: node_id: The belief ID to explain project: Project name or UUID (uses default if empty)

ParametersJSON Schema
NameRequiredDescriptionDefault
node_idYes
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/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. It explains what the tool returns (supports, assumptions, retraction consequences) but does not disclose if read-only, error conditions, or performance implications. Adequate but not 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?

Very concise: two sentences plus clear Args list. No extraneous information, well-structured, front-loaded.

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 existence of output schema (not shown), description doesn't need to detail return format. It covers main behavior and parameters. Could mention error handling or prerequisites, but complete enough for a simple tool.

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?

Schema description coverage is 0%, so description provides all parameter meaning: 'node_id: The belief ID to explain' and 'project: Project name or UUID, uses default if empty.' This fully compensates for schema's lack of 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 clearly states 'Explain why a belief is IN or OUT by tracing its justification chain,' specifying the verb (explain) and resource (belief justification). It distinguishes from siblings like get_belief (retrieval) and what_if (hypotheticals).

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 implies usage context: understanding belief justification, but does not explicitly state when not to use or compare with alternatives like ask or search. The sibling list provides some context.

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

get_beliefA

Get full details for a specific belief including justifications and dependents.

Args: node_id: The belief ID project: Project name or UUID (uses default if empty)

ParametersJSON Schema
NameRequiredDescriptionDefault
node_idYes
projectNo

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. The description implies a read-only operation ('get'), but does not disclose any side effects, prerequisites, or error conditions. For a retrieval tool, this is adequate but not exhaustive.

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 concise with two sentences and parameter annotations. No unnecessary words, and the structure is front-loaded with the main purpose.

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 that an output schema exists, the description sufficiently covers input parameters and hints at output content ('including justifications and dependents'). For a simple get operation, this is complete.

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?

Schema description coverage is 0%, so the description fully compensates. It explains node_id as 'The belief ID' and project as 'Project name or UUID (uses default if empty)', adding clear meaning beyond the schema's titles.

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 'Get full details for a specific belief' with a specific verb and resource, and mentions including justifications and dependents. It distinguishes from siblings like list_beliefs (listing) and explain_belief (explanation), but does not explicitly compare.

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 guidance on when to use this tool versus alternatives. It does not mention exclusions or context for using get_belief over list_beliefs, explain_belief, or other sibling tools.

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

get_entryA

Read the full content of an analysis entry.

Args: entry_id: The entry ID project: Project name or UUID (uses default if empty)

ParametersJSON Schema
NameRequiredDescriptionDefault
projectNo
entry_idYes

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 for behavioral disclosure. It correctly indicates a read operation ('Read'), but does not disclose any additional behaviors (e.g., authorization requirements, rate limits, or whether the entry must exist). The description is minimal but not misleading.

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 extremely concise, with only two short sentences and a compact Args list. Every element serves a purpose, and the key action is front-loaded. Zero unnecessary content.

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 simplicity (2 parameters, no nested objects) and the presence of an output schema, the description adequately covers purpose and parameter semantics. However, it omits contextual details like what constitutes an 'analysis entry' or how this differs from 'list_entries' in terms of data returned.

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?

Parameter documentation coverage is 0%, meaning the description must compensate. The 'Args' section adds context beyond the schema (e.g., 'Project name or UUID' and default behavior), but only marginally. The schema already shows defaults and types, so the added value is limited.

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 explicitly states 'Read the full content of an analysis entry,' using a specific verb and resource. It clearly distinguishes from sibling tools like 'list_entries' (which lists entries) and 'get_belief' (which retrieves beliefs).

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 use when the full content of an entry is needed, but provides no explicit guidance on when to use this tool versus alternatives (e.g., when to use 'list_entries' instead). No exclusions or prerequisites are mentioned.

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

list_beliefsB

List beliefs in the knowledge base.

Args: status: Filter by truth value -- "IN", "OUT", or empty for all project: Project name or UUID (uses default if empty)

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description must carry the behavioral disclosure burden. It only states 'List beliefs' with filters, but does not mention if the operation is read-only, has pagination, ordering, or any side effects. The output format is not described despite output schema existing.

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 short and front-loaded with the main purpose. The argument list is clearly formatted. No extraneous text, but could be slightly more structured with a brief note on return value.

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?

Lacks information about return format, ordering, or limits. With siblings like deep_search and search, an agent needs more context to choose correctly. Output schema exists but is not referenced.

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 0%, so description adds needed meaning. It explains status filter values ('IN', 'OUT', empty) and project fallback to default. However, it does not clarify what 'IN' and 'OUT' represent in terms of truth values.

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 'List beliefs in the knowledge base', using a specific verb and resource. It distinguishes from siblings like get_belief (single) and search (query-based).

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 explicit when-to-use or when-not-to-use guidance. The description implies listing all beliefs with optional filters, but does not compare with alternatives like search or list_entries.

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

list_entriesB

List analysis entries (reports, findings, assessments).

Args: topic: Filter by topic slug, or empty for all entries project: Project name or UUID (uses default if empty)

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNo
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavior. It implies a read-only list operation but lacks details on pagination, limits, ordering, or access constraints. The term 'list' suggests non-destructive, but no explicit safety guarantees.

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 concise, front-loads the purpose, and uses a clear argument list structure with two bullet points. No extraneous information.

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 format is covered. The description covers core purpose and parameter usage. However, it lacks guidance on result ordering, empty results, or when to use this over similarly-named siblings like 'search' or 'list_beliefs'.

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, the description compensates by explaining both parameters ('topic' for filtering by slug, 'project' for name/UUID). This adds meaning beyond the bare schema, though examples or format constraints would strengthen it.

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 that the tool lists analysis entries, specifying types (reports, findings, assessments). It distinguishes itself from the sibling 'get_entry' by implying a list operation, but does not explicitly contrast with siblings.

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 guidance on when to use this tool vs alternatives like 'search' or 'get_entry'. The description only states what it does without context for selection.

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

list_projectsA

List all available expert knowledge bases with belief, entry, and source counts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries full behavioral burden. It correctly indicates a read-only listing operation. The tool has no parameters, so the behavior is straightforward and no ambiguities 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 a single sentence that precisely conveys the tool's function and outputs. No extraneous information.

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?

The description is complete given the tool has no parameters and an output schema exists. It explains what the tool returns (lists of knowledge bases with counts) and is sufficient for an AI agent to understand its purpose.

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?

No parameters are defined, so the baseline score is 4. The description adds no parameter details, but 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 clearly states the tool lists all available expert knowledge bases and includes belief, entry, and source counts. It is specific and distinct from sibling tools like list_beliefs and list_entries.

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 implies usage when an overview of knowledge bases is needed. No alternatives or when-not-to-use are provided, but the tool is simple enough that explicit guidelines are not critical.

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

what_ifA

Simulate retracting or asserting a belief without modifying the database.

Shows the cascade: which beliefs would go OUT (retract) or come back IN (assert). Use this to understand the impact of changing a belief.

Args: node_id: The belief ID to simulate action: "retract" or "assert" project: Project name or UUID (uses default if empty)

ParametersJSON Schema
NameRequiredDescriptionDefault
actionNoretract
node_idYes
projectNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

No annotations provided, so the description carries full burden. It states the tool is a simulation ('without modifying the database') and describes the output (cascade of beliefs). This gives good insight into behavior, though it could mention permissions 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?

The description is concise with no wasted words: a header line explaining the simulation, a paragraph on what it shows, and a clear Args list. It is well-structured and front-loaded.

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?

Although the output schema exists but its content is not provided, the description explains the output (cascade of beliefs) adequately. It covers purpose, parameters, and behavior, making it complete for the tool's functionality.

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?

Schema description coverage is 0%, but the description adds full meaning for all three parameters in the Args section: node_id (the belief ID), action ('retract' or 'assert'), and project (name or UUID, default if empty). This compensates completely for the missing schema 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 clearly states the tool simulates retracting or asserting a belief without modifying the database, and explains what it shows (cascade of beliefs going out or coming in). This distinguishes it from sibling tools like get_belief and list_beliefs which are read-only operations.

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 says 'Use this to understand the impact of changing a belief', providing clear usage context. It does not explicitly mention when not to use or list alternatives, but the guidance is sufficient for correct invocation.

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

TDQS

A3.8/5.0
Disambiguation4/5

Most tools are clearly distinct, but 'ask' and 'deep_search' both involve answering questions, though their descriptions clarify different use cases. Slight overlap is mitigated by clear purpose statements.

Naming Consistency4/5

Names predominantly follow verb_noun pattern with underscores (e.g., explain_belief, list_entries). Exceptions like 'ask' and 'what_if' are idiomatic but not disruptive.

Tool Count5/5

10 tools cover the core operations for a knowledge base server: searching, retrieving, listing, explaining, and simulating. The count is well-scoped without redundancy.

Completeness4/5

The tool surface covers querying and simulation comprehensively, but lacks tools for creating or updating beliefs/entries. This may be intentional for a read-only expert server, hence a minor gap.

Maintenance

ActivityInactive
ResponsivenessNo issues

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

  • F
    license
    Not graded
    quality
    F
    maintenance
    Enables searching and researching document collections through hybrid semantic search and agentic research queries with grounded, cited answers. It allows users to list collections, scan document sections, and retrieve full Markdown content via MCP-compatible agents.
    81
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to query documents in a Bedrock Knowledge Base through the MCP protocol, with tools for semantic search and agentic retrieval.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to query and manage a document knowledge base via MCP, with RAG-powered search and grounded answers with citations.
    MIT

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/benthomasson/expert-mcp-server'

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