Skip to main content
Glama

toolbelt

A personal MCP server that hands your everyday tools to any AI coding agent. Point Claude Code, Cursor, or Codex at toolbelt and it can read and search your notes, look up GitHub activity, and fetch URLs — in any session, without you pasting context.

CI License: MIT OR Apache-2.0

Tools

Tool

What it does

github_repos

List a GitHub user's repositories, newest push first

fetch_url

Fetch the text content of a URL

list_notes

List note files in your notes directory

read_note

Read one note by file name

search_notes

Full-text search across your notes (returns file:line matches)

Related MCP server: Git MCP Server

Install

npm install -g toolbelt-mcp     # or: git clone … && npm install && npm run build

Register with your agent

For Claude Code, add to your MCP config:

{
  "mcpServers": {
    "toolbelt": {
      "command": "toolbelt",
      "env": {
        "TOOLBELT_NOTES_DIR": "/Users/you/notes",
        "GITHUB_TOKEN": "ghp_… (optional, raises rate limits)"
      }
    }
  }
}

The agent then sees the five tools above and can call them during any conversation.

Configuration

  • TOOLBELT_NOTES_DIR — directory the note tools read (default: current directory).

  • GITHUB_TOKEN — optional, for higher GitHub API rate limits.

Note reads are restricted to the configured directory (path traversal is stripped).

Develop

npm install
npm run build
npm test        # unit tests for the tool logic
npm run dev     # run the server over stdio

Roadmap

  • More tools: calendar, email (IMAP), filesystem writes behind confirmation, HTTP POST.

  • Resources (expose notes as MCP resources, not just tools).

  • Per-tool allow/deny configuration.

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.

Available Tools

5 tools
fetch_urlFetch URLA

Fetch the text content of a URL (first 10k chars).

NameRequiredDescriptionDefault
urlYes

TDQS

A3.6/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 behavioral burden. It does disclose two useful traits: the return is text (not raw HTML/binary) and content is truncated to the first 10k chars. It says nothing about redirects, network/auth requirements, timeouts, or failure behavior for an inherently network-dependent 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?

A single front-loaded sentence with no filler; the truncation caveat is parenthetically attached to the clause it qualifies. Nothing to cut.

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 one-parameter, no-output-schema utility, stating the return type and the 10k truncation limit covers the essentials an agent needs. The remaining gap (error/redirect behavior) is modest but real for a network fetch.

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 should compensate, but it only restates that the argument is a URL. It doesn't clarify whether http/https only, whether relative or file URLs are accepted, or what formats are supported.

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?

States a specific verb ('Fetch') and resource ('text content of a URL'), which is unambiguous. It doesn't differentiate from siblings, but the siblings (github_repos, list_notes, read_note, search_notes) are unrelated note/GitHub tools, so no differentiation is really needed.

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?

Usage is only implied by the verb 'Fetch' — there's no explicit statement of when to reach for this versus, say, read_note for local content. Given the sibling set is unrelated, the omission is low-cost but still leaves the agent to infer intent.

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

github_reposGitHub reposC

List a GitHub user's repositories, newest push first.

NameRequiredDescriptionDefault
userYes

TDQS

C2.8/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; it does disclose the sort order, which is a useful behavioral detail. However, it says nothing about whether this is a safe/read-only operation, authentication needs, rate limits, pagination, or whether private repositories are included.

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?

A single tight sentence with no waste, and the resource plus ordering are front-loaded. It is efficient given the tool's simplicity.

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 one-parameter read tool with no output schema, the description covers the core action and sort order. Missing pagination and return-shape information leaves a clear but survivable gap.

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?

The single parameter has 0% schema description coverage, so the description must compensate; 'a GitHub user's' implies the value is a GitHub username/login, which is a modest addition. It does not clarify accepted formats (login vs. email vs. ID) or behavior for unknown users.

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 states a specific verb and resource ('List a GitHub user's repositories') and adds the ordering ('newest push first'), which an agent can act on. Sibling tools (notes, fetch_url) are unrelated, so no differentiation is required.

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?

There is no explicit when-to-use or when-not-to-use guidance, and no mention of alternatives or prerequisites. The verb 'List' implies a read operation, but the agent must infer the context for calling this.

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

list_notesList notesA

List note files in the configured notes directory.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior3/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. "List" correctly implies a non-mutating read, and "configured notes directory" tells the agent the scope is server-side config rather than a caller-supplied path. It says nothing about recursion into subdirectories, whether file paths or only names are returned, or ordering, which are the behaviors an agent would want before calling.

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 with no filler. The scope qualifier follows immediately after the action, so the most decision-relevant information comes first.

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?

With no output schema, the description is the only place an agent could learn what a "note file" listing actually contains (names vs. full paths, metadata) and whether the listing is recursive. For a trivial zero-param read tool this is a modest gap, but it is a gap.

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 takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The description correctly makes clear the directory is fixed by configuration, which explains why no path parameter exists.

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?

States a specific verb and resource ("List note files") plus the scope ("in the configured notes directory"), so an agent knows exactly what comes back. It does not explicitly contrast itself with search_notes or read_note, which is the only thing keeping it from a 5.

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?

Usage is only implied: the verb "List" suggests enumeration of all notes rather than targeted retrieval via search_notes or read_note. There is no explicit statement of when to prefer this tool over its siblings or any precondition to check.

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

read_noteRead noteB

Read one note by file name from the notes directory.

NameRequiredDescriptionDefault
nameYes

TDQS

B3.4/5.0
Behavior2/5

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

No annotations exist, so the description carries the full behavioral burden. It conveys that this is a simple read, but says nothing about error behavior when the note is missing, whether contents are returned in full, encoding/path constraints, or permissions.

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 with no filler; the scope and lookup key arrive immediately.

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 one-parameter read with no output schema, the description is minimally viable but omits what a caller needs at the edges: the failure mode for a missing file and any hint about the returned content shape.

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 schema gives zero coverage — just a bare string named 'name'. The description usefully disambiguates that 'name' means the file name (not a note title or ID) and that it is resolved within the notes directory, which is real added meaning.

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?

States a specific verb and resource ('Read one note') plus the lookup key ('by file name') and location ('notes directory'). It is clear what the tool does, though it never names list_notes or search_notes to contrast itself explicitly.

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?

'By file name' implies the precondition that the caller already knows the exact file, which weakly implies that list_notes/search_notes should be used otherwise. No alternative is named and no when-not condition is stated.

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

search_notesSearch notesB

Full-text search across notes; returns file:line matches.

NameRequiredDescriptionDefault
queryYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It does disclose the return shape ('file:line matches'), which is valuable given there is no output schema, but says nothing about result limits, ranking/ordering, case sensitivity, whether it's regex or substring matching, or whether the operation is read-only.

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?

One front-loaded sentence with no filler; the return-format clause earns its place by compensating for the missing output schema.

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 one-parameter search tool with no annotations and no output schema, the definition covers the what and the return shape but omits query semantics, result caps, and ordering — details an agent needs to call it well and interpret results.

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 coverage is 0%, so the description should compensate for the single 'query' parameter, but it doesn't explain query syntax (substring vs regex vs multi-term/boolean). The parameter name is largely self-explanatory, keeping this at minimum-viable rather than failing.

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?

States a specific verb and resource ('full-text search across notes') plus the output shape ('file:line matches'), which distinguishes it from list_notes and read_note by implying content matching rather than enumeration or retrieval. It stops short of explicitly contrasting with those 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 search versus when to list_notes or read_note, and no prerequisites or exclusions. The agent must infer that search is for keyword lookup and list_notes is for enumeration.

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 updatesv0.1.0
    • First observedfetch_url
    • First observedgithub_repos
    • First observedlist_notes
    • First observedread_note
    • First observedsearch_notes

TDQS

B3.4/5.0

Scored across 5 tools

Disambiguation4/5

Each tool targets a clearly different resource: GitHub repos, arbitrary URLs, and notes files. The only mild overlap is between list_notes (enumerate files) and search_notes (content matches with file:line), but the descriptions make the distinction clear.

Naming Consistency4/5

Four of five tools follow a verb_noun pattern (fetch_url, list_notes, read_note, search_notes). github_repos breaks the pattern with a noun-only name and abbreviation, a minor deviation in an otherwise predictable set.

Tool Count5/5

Five tools is well within the sweet spot for a small read-only utility server, and each has a distinct job. Nothing feels padded or redundant.

Completeness3/5

The notes surface is read-only: list, read, and search exist but there is no create_note, update_note, or delete_note, which agents will likely need. Similarly, github_repos exposes only repo listing with no related operations, leaving the toolbelt noticeably one-directional.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to inspect local Git repositories and interact with the GitHub API for reading commits, diffs, files, issues, comments, pull requests, and project boards.
    10
    202 npm
    ISC
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables coding agents to capture, search, and recall persistent knowledge notes with epistemic metadata, automatically injecting relevant context into their sessions.
    1
    MIT