mcp-user-system
This server provides tools for managing user wallets, tracking consumption trends, and accessing dashboard statistics for API usage.
Wallet Management:
Wallet Overview (
wallet_balance): Retrieve balance, usable balance, vouchers, credit limits, and pending amounts.Consumption Trends (
wallet_trend): View consumption trend data over a configurable number of days (default: 30 days).Transaction Records (
wallet_transactions): List wallet transactions with optional filters for date range and record type.Cash Coupons (
wallet_coupons): List all available cash coupons on the account.Corporate Bank Info (
wallet_corporate_info): Retrieve corporate transfer bank account info for recharging.
Dashboard & Statistics:
Dashboard Stats: View overall usage metrics — used quota, total consumption, request count, and active users.
API Call Records: List detailed API call records with optional filtering.
User Dropdown Options: Get user options for filtering dashboard data.
Model Statistics: Access per-model usage stats including call count, token consumption, and cost.
Click on "Install 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., "@mcp-user-systemshow my wallet balance"
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.
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_URLandTUS_ACCESS_TOKENenvironment variables
Related MCP server: jazzcash-mcp
Installation
1. Install globally
npm install -g mcp-user-systemOr clone & build manually:
git clone https://github.com/shenda-ai/mcp-user-system.git
cd mcp-user-system
npm install
npm run build2. Configure Environment
export TUS_BASE_URL=https://api.example.com
export TUS_ACCESS_TOKEN=your-jwt-access-tokenOr create a .env file (add to .gitignore):
TUS_BASE_URL=https://api.example.com
TUS_ACCESS_TOKEN=your-jwt-access-tokenAccess Token is a JWT Bearer Token obtained after user login. Include it as
Authorization: Bearer <token>in upstream requests.
3. Test Run
npm startMCP 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 serverLicense
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_URLandTUS_ACCESS_TOKENenvironment variables
Installation
1. Install globally
npm install -g mcp-user-systemOr clone & build manually:
git clone https://github.com/shenda-ai/mcp-user-system.git
cd mcp-user-system
npm install
npm run build2. Configure Environment
export TUS_BASE_URL=https://api.example.com
export TUS_ACCESS_TOKEN=your-jwt-access-tokenOr create a .env file (add to .gitignore):
TUS_BASE_URL=https://api.example.com
TUS_ACCESS_TOKEN=your-jwt-access-tokenAccess Token is a JWT Bearer Token obtained after user login. Include it as
Authorization: Bearer <token>in upstream requests.
3. Test Run
npm startMCP 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 serverLicense
MIT
Available Tools
5 toolswallet_balanceA
Get account wallet overview (balance, usable balance, voucher, credit limit, pending amount)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| endDate | No | End date (YYYY-MM-DD) | |
| startDate | No | Start date (YYYY-MM-DD) | |
| recordType | No | Filter by record type |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days to query (default: 30) |
TDQS
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.
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.
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.
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.
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.
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.
5 tool updates
v1.0.0- First observed
wallet_balance - First observed
wallet_corporate_info - First observed
wallet_coupons - First observed
wallet_transactions - First observed
wallet_trend
TDQS
Each tool targets a distinct wallet aspect: balance overview, corporate recharge info, coupons, transaction history, and consumption trend. No overlap.
All tools follow the consistent pattern 'wallet_<noun>' (e.g., wallet_balance, wallet_transactions). Perfectly uniform.
5 tools is well-scoped for a wallet subsystem, covering essential operations without bloat.
Covers core wallet needs but lacks direct recharge/deposit or withdrawal tools, though corporate info hints at external recharge.
Maintenance
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
Tenzro Network MCP server: wallet, identity, payments, inference, staking, bridges, verification.
MCP server for Modern Treasury — payment orders, transactions, counterparties and ledgers.
MCP server with quote and live cryptocurrency price tools, local and cloud-deployed transports.
MCP server for stocksense-ai documentation, generated by doc2mcp.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA 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.-
- AlicenseAqualityAmaintenanceMCP server for JazzCash mobile wallet and payments (Pakistan). Supports wallet payments, mobile account payments, vouchers, refunds, and balance inquiries.5131MIT
- FlicenseNot gradedqualityAmaintenanceMCP server for querying Towngas account data, including bills, readings, and bound accounts. Supports automatic token refresh via refresh token.-
- AlicenseNot gradedqualityCmaintenanceMCP server for the BudgetBakers Wallet REST API, enabling management of transactions, accounts, categories, budgets, labels, and more through natural language.15MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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