Skip to main content
Glama
shenda-ai

mcp-user-system

by shenda-ai

mcp-user-system

MCP server for token-user-system — Console 前台全量查询接口 via Model Context Protocol.

Provides AI agents with authenticated access to the Console (前台) query APIs, covering user info, dashboard statistics, wallet, team management, token usage, invoices, and miscellaneous lookups.

Supports: user profiles, dashboard stats & trends, wallet overview, team & member management, token consumption, invoice queries, and more.

Prerequisites

  • Node.js >= 18

  • TUS_BASE_URL and TUS_ACCESS_TOKEN environment variables

Related MCP server: jazzcash-mcp

Installation

1. Install globally

npm install -g mcp-user-system

Or clone & build manually:

git clone https://github.com/shenda-ai/mcp-user-system.git
cd mcp-user-system
npm install
npm run build

2. Configure Environment

export TUS_BASE_URL=https://api.example.com
export TUS_ACCESS_TOKEN=your-jwt-access-token

Or create a .env file (add to .gitignore):

TUS_BASE_URL=https://api.example.com
TUS_ACCESS_TOKEN=your-jwt-access-token

Access Token is a JWT Bearer Token obtained after user login. Include it as Authorization: Bearer <token> in upstream requests.

3. Test Run

npm start

MCP Client Configuration

Claude Desktop (macOS)

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "user-system": {
      "command": "node",
      "args": ["/path/to/mcp-user-system/dist/index.js"],
      "env": {
        "TUS_BASE_URL": "https://api.example.com",
        "TUS_ACCESS_TOKEN": "your-jwt-access-token"
      }
    }
  }
}

Cursor / VS Code

Add to settings (Cursor: ~/.cursor/mcp.json, VS Code: settings.json):

{
  "mcpServers": {
    "user-system": {
      "command": "node",
      "args": ["/path/to/mcp-user-system/dist/index.js"],
      "env": {
        "TUS_BASE_URL": "https://api.example.com",
        "TUS_ACCESS_TOKEN": "your-jwt-access-token"
      }
    }
  }
}

Claude Code (CLI)

Add to ~/.claude/mcp.json:

{
  "mcpServers": {
    "user-system": {
      "command": "node",
      "args": ["/path/to/mcp-user-system/dist/index.js"],
      "env": {
        "TUS_BASE_URL": "https://api.example.com",
        "TUS_ACCESS_TOKEN": "your-jwt-access-token"
      }
    }
  }
}

Available Tools

62 tools organized by domain:

Domain

Count

Description

user

6

User profile, preferences, and account info

dashboard

10

Dashboard statistics, trends, rankings, model usage, member usage

wallet

8

Wallet overview, transactions, balance history, recharge records

team

14

Team/department management, member CRUD, role & permission queries

tokens

6

Token consumption details, usage aggregation, billing records

invoice

4

Invoice list, invoice detail, red-punch status queries

misc

14

Refund management, resource rules, alert settings, message center

Authentication

This MCP server uses Access Token (JWT Bearer Token) authentication. The token is obtained after user login and passed via the TUS_ACCESS_TOKEN environment variable. All upstream API requests include it as Authorization: Bearer <token>.

Development

npm run dev      # Watch mode
npm run build    # Compile TypeScript
npm start        # Run compiled server

License

MIT

mcp-user-system

MCP server for token-user-system — Console 前台全量查询接口 via Model Context Protocol.

Provides AI agents with authenticated access to the Console (前台) query APIs, covering user info, dashboard statistics, wallet, team management, token usage, invoices, and miscellaneous lookups.

Supports: user profiles, dashboard stats & trends, wallet overview, team & member management, token consumption, invoice queries, and more.

Prerequisites

  • Node.js >= 18

  • TUS_BASE_URL and TUS_ACCESS_TOKEN environment variables

Installation

1. Install globally

npm install -g mcp-user-system

Or clone & build manually:

git clone https://github.com/shenda-ai/mcp-user-system.git
cd mcp-user-system
npm install
npm run build

2. Configure Environment

export TUS_BASE_URL=https://api.example.com
export TUS_ACCESS_TOKEN=your-jwt-access-token

Or create a .env file (add to .gitignore):

TUS_BASE_URL=https://api.example.com
TUS_ACCESS_TOKEN=your-jwt-access-token

Access Token is a JWT Bearer Token obtained after user login. Include it as Authorization: Bearer <token> in upstream requests.

3. Test Run

npm start

MCP Client Configuration

Claude Desktop (macOS)

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "user-system": {
      "command": "node",
      "args": ["/path/to/mcp-user-system/dist/index.js"],
      "env": {
        "TUS_BASE_URL": "https://api.example.com",
        "TUS_ACCESS_TOKEN": "your-jwt-access-token"
      }
    }
  }
}

Cursor / VS Code

Add to settings (Cursor: ~/.cursor/mcp.json, VS Code: settings.json):

{
  "mcpServers": {
    "user-system": {
      "command": "node",
      "args": ["/path/to/mcp-user-system/dist/index.js"],
      "env": {
        "TUS_BASE_URL": "https://api.example.com",
        "TUS_ACCESS_TOKEN": "your-jwt-access-token"
      }
    }
  }
}

Claude Code (CLI)

Add to ~/.claude/mcp.json:

{
  "mcpServers": {
    "user-system": {
      "command": "node",
      "args": ["/path/to/mcp-user-system/dist/index.js"],
      "env": {
        "TUS_BASE_URL": "https://api.example.com",
        "TUS_ACCESS_TOKEN": "your-jwt-access-token"
      }
    }
  }
}

Available Tools

62 tools organized by domain:

Domain

Count

Description

user

6

User profile, preferences, and account info

dashboard

10

Dashboard statistics, trends, rankings, model usage, member usage

wallet

8

Wallet overview, transactions, balance history, recharge records

team

14

Team/department management, member CRUD, role & permission queries

tokens

6

Token consumption details, usage aggregation, billing records

invoice

4

Invoice list, invoice detail, red-punch status queries

misc

14

Model list, announcements, notifications, system config, and other lookups

Authentication

This MCP server uses Access Token (JWT Bearer Token) authentication. The token is obtained after user login and passed via the TUS_ACCESS_TOKEN environment variable. All upstream API requests include it as Authorization: Bearer <token>.

Development

npm run dev      # Watch mode
npm run build    # Compile TypeScript
npm start        # Run compiled server

License

MIT

Available Tools

5 tools
wallet_balanceA

Get account wallet overview (balance, usable balance, voucher, credit limit, pending amount)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It states a read operation but lacks disclosure of authentication needs, rate limits, or error behavior. The basic read intention is clear, but important behavioral details are missing.

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?

Single, efficient sentence with no wasted words. Front-loaded with the core action and includes a parenthetical list of returned fields.

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?

Adequately covers the tool's output for a simple no-parameter tool with no output schema. Lists key fields, though additional detail on data format or representation would improve completeness.

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?

With zero parameters and 100% schema coverage, the description adds no param info, but baseline for 0 params is 4. The description does not need to add meaning beyond an empty schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves an account wallet overview with specific fields (balance, usable balance, voucher, credit limit, pending amount), distinguishing it from siblings like wallet_corporate_info or wallet_transactions.

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?

No explicit when-to-use or alternative guidance. The sibling names suggest related tools, but the description does not clarify when to choose this tool over others; usage context is implied by the listed fields.

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

wallet_corporate_infoA

Get corporate transfer bank account info for recharge

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/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. The verb 'Get' implies a read-only safe operation, but no behavioral traits such as permissions, rate limits, or data freshness are disclosed. The description is minimally transparent.

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?

The description is a single, clear sentence with no wasted words. It is front-loaded and efficiently communicates the tool's purpose.

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 zero-parameter tool without output schema, the description adequately states the tool's purpose but does not describe the structure or content of the returned bank account info. It is sufficient for basic understanding but lacks completeness.

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?

The input schema has no parameters (100% coverage), so the description adds no additional meaning beyond what the schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the verb 'Get' and the resource 'corporate transfer bank account info for recharge', distinguishing it from sibling tools like wallet_balance (balance) and wallet_transactions (list transactions). It unambiguously states what the tool returns.

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 is provided on when to use this tool versus alternatives such as wallet_balance or wallet_transactions. There is no mention of prerequisites, exclusions, or typical use cases.

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

wallet_couponsB

List my cash coupons

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided, so description must disclose behavioral traits. It only says 'List' but does not state read-only nature, authentication needs, or output behavior.

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?

One sentence, no waste. Could add more context but remains concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, no annotations; description does not explain return format or scope, leaving agent underinformed.

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?

No parameters, schema coverage 100%, baseline is 3. Description adds no param info but none needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses clear verb+resource: 'List my cash coupons'. It distinguishes from sibling tools that deal with balance, transactions, etc.

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?

No explicit guidance on when to use or alternatives, but the function is self-explanatory and siblings are different domains.

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

wallet_transactionsC

List wallet transaction records with optional filters

ParametersJSON Schema
NameRequiredDescriptionDefault
endDateNoEnd date (YYYY-MM-DD)
startDateNoStart date (YYYY-MM-DD)
recordTypeNoFilter by record type

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full responsibility. It only states 'List wallet transaction records' without disclosing read-only nature, pagination, limits, or any side effects.

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?

The description is a single concise sentence. It is front-loaded and efficient, though it could benefit from slight expansion without harming conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the lack of output schema and 3 parameters, the description is too brief. It fails to specify return format, pagination, default behavior, or any contextual hints for effective use.

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?

The input schema covers all 3 parameters with descriptions, so the description's mention of 'optional filters' adds no new meaning. The schema already provides full parameter semantics.

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 clearly states the action 'List' and the resource 'wallet transaction records', and mentions optional filters. This sufficiently differentiates it from sibling tools like wallet_balance and wallet_trend.

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?

The description provides no guidance on when to use this tool versus alternatives. It does not mention when not to use it or any specific use cases.

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

wallet_trendA

Get consumption trend for a given number of days

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to query (default: 30)

TDQS

A3.5/5.0
Behavior3/5

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

Without annotations, the description carries the burden of disclosing behavioral traits. It implies a read operation (getting a trend) but does not explicitly state safety, authorization needs, or side effects. The description is minimally adequate but not detailed.

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?

The description is a single sentence that efficiently conveys the tool's purpose. It is front-loaded with the action and resource, containing no superfluous words.

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?

Given the tool's simplicity (one parameter, no output schema), the description covers the basic purpose but omits what the trend output looks like. Since there is no output schema, the description should ideally explain return values, which it does not. Thus, completeness is adequate but not thorough.

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 100% since the only parameter 'days' has a description with default. The tool description adds no additional meaning beyond what the schema provides, earning the baseline score of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a 'consumption trend' for a given number of days. The verb 'Get' and resource 'consumption trend' are specific and distinct from sibling tools like wallet_balance, wallet_corporate_info, wallet_coupons, and wallet_transactions, which each target different data aspects.

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?

The description lacks any guidance on when to use this tool instead of alternatives. It does not specify prerequisites, context, or scenarios where this tool is preferred, leaving the agent without decision support for tool selection.

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. Dates show when Glama detected each change.

  1. 5 tool updatesv1.0.0
    • First observedwallet_balance
    • First observedwallet_corporate_info
    • First observedwallet_coupons
    • First observedwallet_transactions
    • First observedwallet_trend

TDQS

A3.7/5.0
Disambiguation5/5

Each tool targets a distinct wallet aspect: balance overview, corporate recharge info, coupons, transaction history, and consumption trend. No overlap.

Naming Consistency5/5

All tools follow the consistent pattern 'wallet_<noun>' (e.g., wallet_balance, wallet_transactions). Perfectly uniform.

Tool Count5/5

5 tools is well-scoped for a wallet subsystem, covering essential operations without bloat.

Completeness4/5

Covers core wallet needs but lacks direct recharge/deposit or withdrawal tools, though corporate info hints at external recharge.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive Bitcoin Cash (BCH) MCP server that enables wallet management, transaction utilities, and full CashToken operations including genesis, minting, and burning. It also provides advanced features such as escrow contracts, smart contract documentation, and real-time currency conversion.
    -
  • A
    license
    A
    quality
    A
    maintenance
    MCP server for JazzCash mobile wallet and payments (Pakistan). Supports wallet payments, mobile account payments, vouchers, refunds, and balance inquiries.
    5
    13
    1
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    MCP server for querying Towngas account data, including bills, readings, and bound accounts. Supports automatic token refresh via refresh token.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for the BudgetBakers Wallet REST API, enabling management of transactions, accounts, categories, budgets, labels, and more through natural language.
    15
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/shenda-ai/mcp-user-system'

If you have feedback or need assistance with the MCP directory API, please join our Discord server