xmcpBLOCK
The TypeScript MCP framework
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Feature PRs that change core package behavior should include a changeset:
pnpm changeset
The core packages (xmcp, @xmcp-dev/compiler, create-xmcp-app, and init-xmcp) version together. UI and plugin packages version independently. Merge the generated Version Packages PR to publish unpublished versions through the stable workflow.
@xmcp-dev/cli is ignored by stable versioning and has a separate manual publish workflow. Before Changesets decides whether to version or publish, the stable workflow removes ignored-only changesets from its disposable checkout. Those changesets remain in git; they must not prevent publishing already-versioned packages. Mixed and empty changesets retain the normal Changesets behavior.
Run the release-decision regression checks with:
node --test scripts/prepare-stable-release.test.cjs
fcaa495ab7b1OBSERVED · 2026-10-12Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add xmcp --env API_KEY=${API_KEY} --env BETTER_AUTH_BASE_URL=${BETTER_AUTH_BASE_URL} --env BETTER_AUTH_SECRET=${BETTER_AUTH_SECRET} --env BILLING_SECRET_KEY=${BILLING_SECRET_KEY} -- npx -y [email protected]{
"mcpServers": {
"xmcp": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"API_KEY": "${API_KEY}",
"BETTER_AUTH_BASE_URL": "${BETTER_AUTH_BASE_URL}",
"BETTER_AUTH_SECRET": "${BETTER_AUTH_SECRET}",
"BILLING_SECRET_KEY": "${BILLING_SECRET_KEY}"
}
}
}
}Exposed tools (75)
72 read · 3 write · 0 destructive.
| Tool | Risk | Description |
|---|---|---|
add | write | Add two numbers |
ai_chat | read | Chat with AI, tracks token consumption per model |
ai_generate | read | Generate content with AI, tracks 1 unit per call |
app-config | read | Application configuration data |
browser-navigate | read | Navigate to a URL |
classify-sentiment | read | Classify sentiment using example exchanges |
client-info | read | Echo request client identity |
completion-members | read | Team member profiles |
confirm | read | Ask for confirmation |
counter | read | Counter React |
create-user | write | Create a new user in the system |
disabled-metadata | read | Disabled UI tool |
echo | read | Echo text |
experimental-greeting | read | A greeting that is not available yet |
export | read | Export data in multiple formats, Pro plan only |
extra-arguments | read | Access extra arguments from a tool call, including repeated HTTP client info headers |
fail | read | Return an application error |
feature-extra | read | Feature fixture tool |
few-shot | read | Classify sentiment |
get-alerts | read | Get the alerts for a state |
get-forecast | read | Get the forecast for a state |
get-library-docs | read | Get the docs for a library |
get-my-memberships | read | Returns the user |
get-pet | read | Read a pet from the local example API |
get-time | read | Get the current time, optionally in a specific timezone |
get-user | read | Get details of a specific user by their ID |
get-user-info | read | Get user details |
get-weather | read | Get current weather for a location |
get_doc | read | Fetch the full Markdown of a docs page. Pass a docs path like |
greet | read | Greet the user |
hash-string | read | Hash a string using SHA-256 |
hello | read | Says hello to a user |
hostThemeDemo | read | Host-Aware Workspace demo for MCP Apps: host context, CSS variables, view modes, safe areas, and size reporting. |
identity | read | Inspect the current request |
info | read | Static fixture data |
internal-dashboard | read | An internal dashboard excluded by the component visibility rules |
list-users | read | List all users in the system |
liveToolDemo | read | Ops Console demo for MCP Apps: tool calling, polling, host connection state, and granted view modes in one operator workflow. |
log | read | |
mcp-app-playbook | read | Small reference document used by the ui showcase resource/composer demo. |
media-content | read | Return mixed media content |
media-preview | read | Return a one-pixel PNG and an embedded description |
metadata-prompt | read | Metadata example |
metadata-tool | read | Metadata example |
navigate | read | Navigate the current browser tab to a same-origin path on the xmcp site, e.g. |
preview-elicitation | read | Preview a basic extra.elicit() flow in MCPJam |
preview-input-required | read | Ask the user to confirm before applying a theme, using a multi round-trip input_required result (protocol 2026-07-28; 2025-era clients are served through the SDK |
preview-sampling | read | Preview a basic extra.sample() flow in MCPJam |
preview_elicitation | read | Demonstrate extra.elicit() flows for screenshots and manual verification |
random-number | read | Generate a random number |
renderJson | read | Render a full @xmcp-dev/ui AppSchema for MCP Apps-compatible clients. Before generating the schema, read the skill://xmcp-ui/schema-reference resource for the full component catalog and schema format. The JSON must include at least title, mcpServerUrl, and a root component object. |
report | read | Generate a demo report. Costs three quota units. |
request-context | read | Read request details from an async helper without passing tool arguments |
request-helpers | read | Exercise local values and request notifications |
request-progress | read | Normalize a list and report progress using request-local values |
resourceComposerDemo | write | Resource and Composer demo for MCP Apps: read a real resource, send a message, and update model context through the host. |
review-code | read | Review code for best practices and potential issues |
schemaAppDemo | read | Schema-driven MCP App demo that runs through host-backed transport and calls tools via declarative actions. |
search | read | Search xmcp documentation. |
search_docs | read | Full-text search across the xmcp documentation. Returns a ranked list of matching pages with their titles and URLs. Use get_doc to read a result. |
serverStats | read | Returns live server metrics. Used by the ui showcase MCP App demos as a backend data source. |
shadcnDemo | read | A local shadcn Card sharing the xmcp UI kit |
show-external-url | read | Creates a UI resource displaying an external URL (example.com). |
show-raw-html | read | Creates a UI resource displaying raw HTML. |
show-remote-dom | read | Creates a UI resource displaying a remote DOM script. |
showcase | read | Landing page for the refreshed ui showcase, organized around real MCP App examples and a smaller component reference set. |
team-greeting | read | Generate a greeting for team members |
uiKitDemo | read | Starter MCP App built with @xmcp-dev/ui components. |
user | read | Templated fixture data |
user-profile | read | User profile information |
validate-email | read | Validate the format of an email address. |
weather | read | Weather App |
whoami | read | Returns the full Auth0 user session and account information |
xmcp-e2e | read | Conformance fixture |
xmcp-ui-schema-reference | read | Component catalog and schema format for generating valid xmcp UI JSON |
Trust audit
BLOCKgrade D · trust 60/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | FAIL |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (1 observation(s))
- Network
- declared (5 observation(s))
- Shell
- declared (3 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (25)
post-payload.ts
const func = new Function(
.env
.eslintrc.js
.prettierignore
.prettierrc.json
.env
.eslintrc.js
README.md
return (yaml.load(input) ?? {}) as object;return new Function(
new Function(
.createHash("md5").createHash("md5")- run: pnpm --filter descope-http-example exec node ../../packages/xmcp/dist/cli.js build
- run: pnpm --filter sentry-http exec node ../../packages/xmcp/dist/cli.js build
- run: pnpm --filter supabase-http exec node ../../packages/xmcp/dist/cli.js build
- run: pnpm --filter billing-http exec node ../../packages/xmcp/dist/cli.js build
- run: pnpm --filter coinbase-http exec node ../../packages/xmcp/dist/cli.js build
baseURL: process.env.BETTER_AUTH_BASE_URL || "http://127.0.0.1:3001",
3. Connect MCPJam to `http://127.0.0.1:3001/mcp`.
3. Connect MCPJam to `http://127.0.0.1:3001/mcp`.
"http://127.0.0.1:3000/callback",
AUDIENCE=http://127.0.0.1:3001/
d="M21 3H20V4H19V5H18V6H17V7H16V8H15V9H14V10H13V11H12V12H11V13H10V14H9V15H8V16H7V17H6V18H5V19H4V18H3V17H4V16H5V15H6V14H7V13H8V12H9V11H10V10H11V9H12V8H13V7H14V6H15V5H16V4H17V3H18V2H19V3H20V4H21V5H22V6H
Gates applied: no_behavioural_pass.
fcaa495ab7b1full audit observations/trust-audit/mcp-server/basementstudio__xmcp.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | fcaa495ab7b1 | BLOCK | D | 60 | first audit |
Questions
What is the xmcp MCP server?
The TypeScript MCP framework
What tools does xmcp expose?
75 in total: 72 read-only, 3 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.
Is xmcp safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (60/100) and found 2 critical or high issues in the source. Each one is listed on this page with the file and line it is on.
What credentials does xmcp need?
It reads API_KEY, BETTER_AUTH_BASE_URL, BETTER_AUTH_SECRET, BILLING_SECRET_KEY, CLERK_SECRET_KEY, CLIENT_SECRET, COMMET_API_KEY, DEMO_API_KEY, DEMO_CUSTOMER_A_KEY, DEMO_CUSTOMER_B_KEY, GITHUB_TOKEN and GOOGLE_CLIENT_SECRET from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does xmcp run?
It speaks streamable-http, so it runs as a service you connect to over the network. It is published on npm as xmcp at 1.7.1.
How current is this page?
The grade is for one exact copy of the source (fcaa495ab7b1), read on 2026-10-12. The repository is watched and re-audited when it changes.