Skip to main content
Glama

molsen.ca-mcp

MCP server for accessing molsen.ca essay content. Exposes Mike Olsen's essays on AI governance, professional accountability, and the future of technical work to LLMs via the Model Context Protocol.

Installation

Standalone Binary (no Node required)

Download the latest binary for your platform from GitHub Releases:

  • Windows: molsen-mcp-vX.X.X-win.exe

  • macOS: molsen-mcp-vX.X.X-macos

  • Linux: molsen-mcp-vX.X.X-linux

Via npm

npm install -g @molsen.ca/mcp

Or run directly with npx:

npx @molsen.ca/mcp

Related MCP server: MCP Server (fac_mcp_hub)

Usage with Claude Desktop

With standalone binary (Windows example)

Add to your Claude Desktop configuration (%APPDATA%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "molsen-essays": {
      "command": "C:\\path\\to\\molsen-mcp.exe"
    }
  }
}

With npx

Add to your Claude Desktop configuration:

{
  "mcpServers": {
    "molsen-essays": {
      "command": "npx",
      "args": ["-y", "@molsen.ca/mcp"]
    }
  }
}

Usage with Claude Code

Add to your Claude Code MCP settings or use the included skill.

Available Tools

list_essays

List essays from molsen.ca with optional filtering.

Parameters:

  • type (optional): Filter by type - hub, foundational, core, theoretical, applied, empirical, practice, or all

  • tags (optional): Filter by tags array

  • frameworkOnly (optional): Return only framework essays in reading order

  • includeContent (optional): Include full essay content

get_essay

Retrieve a specific essay by slug.

Parameters:

  • slug (required): Essay slug (e.g., "executable-knowledge-architecture")

  • format (optional): full, summary, or markdown

search_essays

Search essays by keyword.

Parameters:

  • query (required): Search query

  • tags (optional): Filter by tags

  • type (optional): Filter by type

  • limit (optional): Max results (default 10)

get_framework_overview

Get an overview of the "Making AI Make Sense" framework.

Parameters:

  • depth (optional): overview, detailed, or full

get_knowledge_graph

Get relationships between essays.

Parameters:

  • essay (optional): Get connections for a specific essay (use short ID like "eka")

  • connectionType (optional): core, soft, or all

Development

# Install dependencies
npm install

# Run in development mode
npm run dev

# Build
npm run build

# Run built version
npm start

License

MIT

Available Tools

5 tools
get_essayA

Retrieve a specific essay by its slug. Returns full content, summary, or markdown format.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesEssay slug (e.g., "executable-knowledge-architecture")
formatNoResponse format: full (plain text), summary (metadata only), markdown (raw)full

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing behavior. 'Retrieve' signals a read-only operation and the sentence states the main output formats. It does not cover error handling, missing slugs, or auth requirements, but for a simple fetch tool the core behavior is transparent.

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, front-loaded sentence conveys purpose and output options with no filler. Every word earns its place and key information appears immediately.

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 two-parameter retrieval tool, the description plus schema covers the essential call pattern and return formats. It lacks explicit exclusions and error behavior, but that is a minor gap for this simple operation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents slug and format. The description adds no new semantic detail beyond restating that it returns full, summary, or markdown content, matching the schema enum. Baseline 3 is appropriate.

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 clear verb ('Retrieve'), a specific resource ('a specific essay'), and the key identifier ('slug'). This clearly differentiates it from siblings like list_essays and search_essays, which operate at collection level.

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 phrase 'by its slug' implies this is the tool to use when the caller already knows which essay is wanted, as opposed to list_essays or search_essays. However, it never explicitly states when not to use it or names an alternative, so guidance is only implied.

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

get_framework_overviewB

Get an overview of the "Making AI Make Sense" framework with its essays and structure.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNoLevel of detail: overview (titles/descriptions), detailed (includes structure), full (includes all content)overview

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full behavioral burden. It states the operation is to 'get' an overview, implying a read-only action, but it does not explicitly confirm non-mutating behavior, nor does it describe the response format or any side effects. For a read tool this is acceptable but minimal.

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, efficient sentence that states the tool's purpose without any fluff. It is front-loaded with the key action and resource, and there is zero wasted wording.

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?

For a simple read-only tool with one optional parameter and no output schema, the description is adequate but not exhaustive. It mentions the framework and its essays/structure, but does not elaborate on the exact nature of the response or how the depth parameter affects output. Given the schema covers the parameter, this is sufficient but leaves room for more detail.

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 single parameter 'depth' is fully documented in the schema with enum values and a description explaining each level. The description does not add any additional meaning or examples beyond the schema, so it meets the baseline for high schema coverage.

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

Purpose4/5

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

The description clearly states the tool returns an overview of the 'Making AI Make Sense' framework, including essays and structure. It uses a specific verb ('Get') and resource, and while it doesn't explicitly name sibling tools, the focus on framework-level overview distinguishes it from essay-level tools like list_essays and get_essay.

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 alternatives. It does not mention alternatives or provide conditions for choosing it over list_essays, get_essay, or search_essays. The intended usage is only implied by the name.

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

get_knowledge_graphB

Get the knowledge graph showing relationships between essays. Optionally filter by essay or connection type.

ParametersJSON Schema
NameRequiredDescriptionDefault
essayNoOptional: Get connections for a specific essay
connectionTypeNoFilter by connection typeall

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 carries the full burden of behavioral disclosure, but it only states that the tool 'gets' a graph and can be filtered. It does not describe the output shape (e.g., nodes/edges), what the default behavior is aside from the connectionType default in the schema, or how connection types 'core' and 'soft' behave.

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 concise sentence that front-loads the main purpose and then states the optional filters. Every word contributes value, with no redundancy or filler.

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?

For a simple read-only tool with two optional parameters, the description covers the core usage adequately. However, there is no output schema and no annotations, so the lack of any description of the returned graph structure or the semantics of 'core' vs 'soft' connections leaves meaningful gaps for an agent trying to interpret results or choose filters.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters and the enum values. The description adds little beyond restating that filtering is optional, and it does not clarify the meaning of 'core' or 'soft' connection types, but the baseline is acceptable because the schema captures the parameter details.

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 uses a specific verb ('Get') and resource ('knowledge graph') and clarifies that it shows relationships between essays, which distinguishes it from sibling tools like list_essays or get_essay. It does not explicitly name alternatives, but the resource and relationship framing make the purpose clear.

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 a knowledge graph of essay relationships is needed, with optional filtering by essay or connection type. However, it provides no explicit guidance about when not to use it or how it compares to siblings such as search_essays or get_framework_overview.

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

list_essaysB

List essays from molsen.ca. Can filter by type, tags, or get framework essays in reading order.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoFilter by tags (e.g., ["AI Governance", "Professional Practice"])
typeNoFilter by essay typeall
frameworkOnlyNoReturn only framework essays in reading order
includeContentNoInclude full essay content in response

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 carries the full burden of behavioral disclosure. It mentions 'reading order' for framework essays but does not state whether the operation is read-only, how results are ordered by default, whether pagination applies, or what the response shape is. Basic safety/behavioral context is absent.

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 two short sentences, front-loading the core action ('List essays from molsen.ca') before the optional behaviors. There is no filler or repetition, and every phrase earns its place.

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?

The description covers purpose and key filter options, which is adequate for a simple listing tool. However, with no output schema or annotations, it omits important context like default return behavior, ordering, pagination, and whether full content is included by default, leaving several gaps for an agent to resolve.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already well documented. The description loosely aligns with tags, type, and frameworkOnly but adds no meaning beyond the schema; includeContent is not mentioned. This matches the baseline for full schema coverage.

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 ('List') and resource ('essays from molsen.ca'), and it enumerates the main filtering modes (type, tags, framework reading order). However, it does not explicitly distinguish itself from the sibling search_essays or get_essay tools, leaving that differentiation implied rather than stated.

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 ('list essays', 'filter by type, tags, or get framework essays'), which gives a reasonable sense of purpose. But it offers no explicit when-not-to-use guidance or named alternatives, so an agent must infer the boundary against search_essays and get_essay.

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

search_essaysA

Search essays by keyword. Searches title, description, and content.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoFilter results by tags
typeNoFilter results by essay type
limitNoMaximum number of results
queryYesSearch query to match against title, description, and content

TDQS

A3.9/5.0
Behavior3/5

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

No annotations exist, so the description must carry behavioral disclosure; it does state the scope of the search (title, description, content), which is useful. However, it omits matching semantics, how the optional filters combine with the keyword, and any result-shape details, though 'search' does imply a read-only operation.

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 short sentences, front-loaded with the action and the scope of search. No filler or redundant parameter listing.

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?

The core behavior is captured for a simple search tool and the schema covers all parameters. But with no output schema, no annotations, and sibling tools present, the description could have explained what is returned and when to prefer list_essays or get_essay.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters. The description adds no parameter detail beyond repeating the query field's scope, meeting the baseline but not exceeding it.

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 and resource: 'Search essays by keyword' and exactly which fields are searched. This differentiates it from list_essays (no keyword) and get_essay (single retrieval) without needing to inspect the schema.

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 the tool is for keyword-driven lookup across title, description, and content, giving a clear context. It does not explicitly name alternatives or exclusions, but the contrast with list_essays/get_essay is evident from the wording.

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. 5 tool updatesv1.0.0
    • First observedget_essay
    • First observedget_framework_overview
    • First observedget_knowledge_graph
    • First observedlist_essays
    • First observedsearch_essays

TDQS

A3.8/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a distinct use case: listing, retrieving single items, searching, framework overview, and knowledge graph exploration. There is no overlap in purpose or ambiguous boundaries.

Naming Consistency5/5

All tool names follow a clean verb_noun pattern using snake_case (list_, get_, search_). The naming is uniform and predictable.

Tool Count5/5

Five tools is well-scoped for a content server. Each tool serves a clear function without redundancy or bloat.

Completeness5/5

The domain is read-only retrieval of essays and their relationships. Coverage is complete for this purpose, including listing, fetching, searching, and structural overviews.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers