Claude Code plugin (.mcpb) for B-Tech Portal — installs MCP server + companion skills.
Find a file
2026-05-18 14:29:49 +02:00
.claude-plugin feat(plugin): marketplace.json + restructure to plugins/b-tech-portal/ 2026-05-15 13:36:30 +02:00
plugins/b-tech-portal feat(plugin): 0.2.0: switch to OAuth 2.1 auth. Version bump invalidates Claude Code's per-version plugin cache (~/.claude/plugins/cache/.../0.1.0/) so reinstalls pick up the post-OAuth .mcp.json without users manually clearing cache 2026-05-18 14:29:49 +02:00
.gitignore chore(plugin): Initial scaffold: manifest, MCP config, three skills, build script 2026-05-15 01:56:10 +02:00
build.sh feat(plugin): marketplace.json + restructure to plugins/b-tech-portal/ 2026-05-15 13:36:30 +02:00
LICENSE chore(plugin): Initial scaffold: manifest, MCP config, three skills, build script 2026-05-15 01:56:10 +02:00
README.md docs(plugin): README: install URLs need .git suffix on non-GitHub hosts 2026-05-15 22:01:52 +02:00

B-Tech Portal — Claude Code plugin

Read and write the B-Tech Portal from inside Claude Code.

A partner-scoped Streamable HTTP MCP server, plus a few skills for common workflows.

What this plugin does

When installed, this plugin adds:

  • One MCP server (b-tech-portal) wired to https://portal.b-tech.io/mcp/agent, exposing 11 tools across workspaces, documents, files, and tasks.
  • Three skills:
    • /b-tech-portal:portal-setup — first-run token setup walkthrough.
    • /b-tech-portal:portal-overview — summarize your workspaces, open tasks, recent docs.
    • /b-tech-portal:portal-find <query> — search across your workspaces.

All actions go through your bearer token and are attributed to your partner identity in the portal's audit log. The plugin sees only the workspaces you're already a member of.

Install

The repo is a Claude Code plugin marketplace — one catalog (marketplace.json at the root) listing the b-tech-portal plugin in plugins/b-tech-portal/.

Claude Code Desktop (preferred)

  1. Open Customize (left sidebar) → Personal plugins+Create plugin → Add marketplace.
  2. Paste the repo URL: https://git.b-tech.io/prohive/b-tech-portal-plugin.git.
  3. Claude Code clones the repo, reads marketplace.json, and shows the b-tech-portal plugin. Click Install.

The .git suffix matters. Without it, Claude Code tries to fetch the URL as a direct link to marketplace.json, gets HTML back (Forgejo's repo page), and fails with Invalid input: expected object, received string. With .git, it correctly clones the repo. GitHub URLs have a built-in heuristic that handles this; non-GitHub hosts like Forgejo need the explicit suffix.

The repo is public-read on Forgejo — no account or credentials needed to install. (Write access remains restricted to the B-Tech team.)

Claude Code CLI

# Add the marketplace, then install the plugin from it.
/plugin marketplace add https://git.b-tech.io/prohive/b-tech-portal-plugin.git
/plugin install b-tech-portal@b-tech-marketplace

Fallback — upload .mcpb directly

If you can't reach the marketplace repo, install the bundled .mcpb file:

  1. Download dist/b-tech-portal-<version>.mcpb from the repo (or ask the B-Tech team for the file).
  2. Claude Code Desktop → Customize → Personal plugins → + → Create plugin → Upload plugin → pick the file.

The .mcpb is a versioned snapshot. Updates require a fresh download; the marketplace path auto-updates on /plugin marketplace update.

Setup (one time)

The MCP server needs your partner-scoped bearer token. Run:

/b-tech-portal:portal-setup

…and follow the walkthrough. Short version:

  1. Log into https://portal.b-tech.io, open /p/me/agent, pass step-up TOTP, click Issue new token, copy the token.
  2. Store as PORTAL_AGENT_TOKEN env var (shell profile or OS keychain).
  3. Restart Claude Code Desktop.

Verify with /b-tech-portal:portal-overview — if you see workspace data, you're connected.

Tools exposed

Tool Purpose
workspace_list Your memberships + roles
workspace_get One workspace by slug
doc_list Documents in a workspace
doc_read Read a document's content
doc_replace Replace a document's content (write)
file_list Attachments in a workspace
file_upload Upload an attachment (multipart, base64)
file_download Download an attachment
task_list Tasks in a workspace
task_create New task
task_update Mutate a task (status, assignee, priority)

Constraints

  • Workspace-scoped. Your token sees only workspaces you're a member of in the portal. The plugin cannot bypass this — and there is no "elevate" mode.
  • Append-only audit. Every call writes a row to audit.access_log. Tokens are not anonymous; revoke + re-issue if a token leaks.
  • Step-up TOTP for token issuance. New tokens require a fresh TOTP within the last 5 minutes — you'll be prompted at /p/me/agent if it has expired.
  • Token revocation is instant. Portal → /p/me/agentRevoke. No step-up required for revocation.

Updating

Bump version in plugins/b-tech-portal/.claude-plugin/plugin.json and rebuild:

./build.sh

Users on the marketplace path update via Customize → Personal plugins → b-tech-portal → Update, or in the CLI: /plugin marketplace update b-tech-marketplace. Users on the .mcpb upload path need a fresh download.

Repo layout

b-tech-portal-plugin/
├── .claude-plugin/
│   └── marketplace.json          # catalog: lists plugins in this repo
├── plugins/
│   └── b-tech-portal/
│       ├── .claude-plugin/
│       │   └── plugin.json       # plugin manifest (name, version, author)
│       ├── .mcp.json             # MCP server config (HTTP → portal /mcp/agent)
│       └── skills/
│           ├── portal-setup/SKILL.md
│           ├── portal-overview/SKILL.md
│           └── portal-find/SKILL.md
├── dist/
│   └── b-tech-portal-<version>.mcpb   # fallback bundle
├── build.sh
├── README.md
└── LICENSE

License

MIT. See LICENSE.