toolbelt
Provides a tool to list a GitHub user's repositories, ordered by most recent push, with optional GitHub token support for higher API rate limits.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@toolbeltsearch my notes for anything I wrote about rate limiting"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.
Tools
Tool | What it does |
| List a GitHub user's repositories, newest push first |
| Fetch the text content of a URL |
| List note files in your notes directory |
| Read one note by file name |
| Full-text search across your notes (returns |
Related MCP server: Git MCP Server
Install
npm install -g toolbelt-mcp # or: git clone … && npm install && npm run buildRegister 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 stdioRoadmap
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 toolsfetch_urlFetch URLA
Fetch the text content of a URL (first 10k chars).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| user | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
TDQS
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.
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.
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.
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.
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.
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.
5 tool updates
v0.1.0- First observed
fetch_url - First observed
github_repos - First observed
list_notes - First observed
read_note - First observed
search_notes
TDQS
Scored across 5 tools
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.
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.
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.
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
Related MCP Connectors
Persistent memory and knowledge management for AI agents with semantic search and 50+ tools.
Give your agent live data from Twitter, Reddit, the web and GitHub. No API keys, no scraping stack.
- MyMemoryOAuthdev.mymemory
Long-term memory for AI assistants: search, read and save your notes, links and documents.
Private memory for AI agents: save and recall facts across Claude Code, Codex, Cursor and ChatGPT.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables infinite searchable memory for coding agents across sessions, allowing them to recall past decisions and context.31 npm16MIT
- AlicenseBqualityDmaintenanceEnables 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.10202 npmISC
- FlicenseNot gradedqualityCmaintenanceEnables autonomous coding agents to inspect Git commits, create pull requests, parse issue threads, and post reviews on GitHub repositories.-
- AlicenseNot gradedqualityBmaintenanceEnables coding agents to capture, search, and recall persistent knowledge notes with epistemic metadata, automatically injecting relevant context into their sessions.1MIT