toolbelt
# toolbelt
**A personal [MCP](https://modelcontextprotocol.io) 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.
[](https://github.com/niklasmarderx/toolbelt/actions/workflows/ci.yml)
[](#license)
## 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) |
## Install
```sh
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:
```json
{
"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
```sh
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](LICENSE-APACHE) or
[MIT license](LICENSE-MIT) at your option.
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.