sor-mcp-server
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., "@sor-mcp-serverfind the tool to create a new user account"
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.
SOR MCP Server - Context Efficiency Testing
A sample MCP server designed to test context efficiency with LLM clients. Contains 174 backend SOR (System of Record) CRUD tools but exposes only 3 meta-tools to clients.
The Problem
When you expose many tools to an LLM, each tool's name, description, and schema consumes context tokens. With 174 tools and complex schemas, this could easily be 50,000+ tokens just for tool definitions.
Related MCP server: MCPLens
The Solution
Instead of exposing all 174 tools directly, this server exposes only 3 meta-tools:
Tool | Purpose |
| Search through tools, returns only relevant ones with filtered schemas |
| Execute any tool by name with parameters |
| Get detailed schema for a specific tool |
Result: ~98% context reduction (~1,000 tokens vs ~50,000 tokens)
Quick Start
1. Install dependencies
npm install2. Add to Claude Desktop
macOS: Edit ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: Edit %APPDATA%\Claude\claude_desktop_config.json
Add this to the mcpServers object:
{
"mcpServers": {
"sor-mcp-server": {
"command": "node",
"args": ["/FULL/PATH/TO/mcp-test/src/index.js"]
}
}
}Important: Replace
/FULL/PATH/TO/with the actual absolute path to this repo.
3. Restart Claude Desktop
Quit Claude completely (Cmd+Q / Alt+F4)
Reopen Claude Desktop
You should see the MCP server connected with 3 tools
How It Works
Search Algorithm
Pre-built Index: Each tool has searchable text combining name + description + tags
Keyword Scoring: Query terms are matched against the index
+1.0 for partial match
+0.5 bonus for exact word boundary match
Schema Filtering: Only schema fields relevant to your query are returned
Example:
Query: "assign ticket user"
Results:
1. ticket_assign (score: 4.5) ← matches all 3 terms
2. ticket_add_watcher (score: 3.0)
3. user_create (score: 1.5)Schema Filtering
Instead of returning a 60-field ticket schema, it returns only fields matching your query:
Query: "create ticket with priority"
Returns only: id, title, type, status, priority, description
(not: sla, environment, watchers, attachments, etc.)The 3 Exposed Tools
1. search_tools
Search through 174 backend tools with natural language.
{
"query": "create user with email",
"limit": 5,
"include_schema": true,
"category": "user",
"operation": "create"
}Parameters:
Param | Type | Required | Description |
| string | Yes | Natural language search |
| number | No | Max results (default: 5) |
| boolean | No | Include filtered schemas (default: true) |
| string | No | Filter by entity type |
| string | No | Filter by: create, read, update, delete, auth, execute |
2. execute_tool
Execute any backend tool by name.
{
"tool_name": "user_create",
"params": {
"email": "john@example.com",
"first_name": "John",
"last_name": "Doe"
}
}Parameters:
Param | Type | Required | Description |
| string | Yes | Exact tool name |
| object | Yes | Tool parameters |
3. get_tool_schema
Get complete or filtered schema for a specific tool.
{
"tool_name": "ticket_create",
"query": "priority status"
}Parameters:
Param | Type | Required | Description |
| string | Yes | Exact tool name |
| string | No | Filter to relevant fields only |
Backend Tools (174 total)
CRUD Operations (8 per entity × 18 entities = 144 tools)
Operation | Description |
| Create a new record |
| Get by ID |
| List/search with pagination |
| Update a record |
| Delete (soft by default) |
| Bulk create |
| Bulk update |
| Bulk delete |
Entities (18)
Category | Entities |
Core | User, Organization, Project |
Work | Ticket, Comment, Sprint |
Config | Workflow, Webhook, SLA Policy |
System | Notification, Audit Log, API Key |
Extensions | Integration, Custom Field, Tag |
Content | Attachment, Report, Time Entry |
Special Tools (30 additional)
Category | Tools |
Auth |
|
Org |
|
Project |
|
Ticket |
|
Sprint |
|
Reports |
|
Webhook |
|
Notification |
|
Schema Complexity
Intentionally complex schemas for realistic testing:
Entity | Fields | Nested Objects |
User | 24+ | preferences, metadata, billing_info |
Organization | 18+ | settings, compliance, billing, limits |
Ticket | 40+ | customer, environment, sla, attachments, linked_issues |
Workflow | 15+ | statuses[], transitions[], automations[] |
Context Efficiency Comparison
Approach | Est. Tokens | Tools Available |
All 174 tools exposed | ~50,000+ | 174 |
3 meta-tools | ~1,000 | 174 (via search) |
Savings | ~98% | Same functionality |
Testing
Run the server directly
npm startTest search locally
node -e "
import { allTools, toolIndex, toolCount } from './src/tools.js';
console.log('Total tools:', toolCount);
"File Structure
mcp-test/
├── src/
│ ├── index.js # MCP server, exposes 3 tools
│ ├── tools.js # 174 backend tool definitions
│ └── schemas.js # Complex entity schemas
├── package.json
└── README.mdLicense
MIT
Available Tools
3 toolsexecute_toolA
Execute a specific tool by name with the provided parameters. Use search_tools first to find the right tool and understand its schema.
| Name | Required | Description | Default |
|---|---|---|---|
| params | Yes | Parameters to pass to the tool, matching its input schema | |
| tool_name | Yes | The exact name of the tool to execute (e.g., "user_create", "ticket_list") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the basic behavior (executes a named tool with parameters), but does not disclose that executing arbitrary tools may have side effects, require permissions, or fail. No details are given about error handling, output, or consequential actions, leaving the agent without critical safety context.
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 two sentences: the first precisely states the tool's function, the second provides essential workflow guidance. Every sentence earns its place, and the core purpose is front-loaded.
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?
The description covers the essential use case—execute a named tool with params—and mentions the need to discover tools via search_tools. However, it omits guidance on using get_tool_schema to validate parameters, what happens on invalid tool names or schemas, and whether execution results are returned. Given the tool's role as a generic dispatcher, these are meaningful gaps.
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%, so the schema already documents both parameters meaningfully. The description adds no extra semantic detail beyond reinforcing that parameters are passed to the named tool. According to the baseline for high schema coverage, a 3 is appropriate because the description does not need to compensate.
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 states a specific verb ('execute'), a resource ('a specific tool by name'), and the action taken with params. It clearly distinguishes the tool from siblings by instructing the agent to use search_tools first for discovery, positioning execute_tool as the execution step in the workflow.
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 explicitly directs the agent to use search_tools first, establishing a clear precondition and workflow. It does not explicitly mention get_tool_schema or state when not to use execute_tool, but the 'search first' guidance provides clear context for the intended usage sequence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tool_schemaA
Get the complete or filtered schema for a specific tool. Use this when you need detailed schema information for a known tool.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | Optional query to filter schema fields (returns only relevant fields) | |
| tool_name | Yes | The exact name of the tool |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. 'Get' implies a read-only operation, and 'complete or filtered' adds some scoping detail. However, it does not explicitly state that the tool does not execute anything, does not require special auth, or describe the return format, leaving some room for ambiguity.
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 only two sentences, front-loaded with the core action first and the usage condition second. There is no fluff or redundant detail, making it easy for an agent to parse quickly.
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 simple schema-retrieval tool with fully documented parameters, the description is largely sufficient. It does not describe the exact return structure, but the tool's name and purpose make the return type fairly predictable. It also does not mention using search_tools for unknown tools, though the sibling context partially covers this.
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%, so the input schema already documents both tool_name and query. The description adds the 'complete or filtered' concept, which loosely maps to the query parameter, but does not provide new parameter-level meaning beyond what the schema already offers.
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 gets a complete or filtered schema for a specific tool, which is a specific verb plus resource. It does not explicitly name or contrast with siblings like search_tools or execute_tool, though the 'known tool' phrasing hints at differentiation.
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 a clear usage condition: 'Use this when you need detailed schema information for a known tool.' It does not explicitly mention alternatives or exclusions, but the context of a known tool implies this is not for discovery or execution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_toolsA
Search through 174 available SOR CRUD tools. Returns matching tools with their relevant schema fields based on your query. Use this to discover which tool to use for your task.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return | |
| query | Yes | Natural language search query (e.g., "create user", "list tickets by status", "update organization billing") | |
| category | No | Filter by category (user, organization, project, ticket, etc.) | |
| operation | No | Filter by operation type | |
| include_schema | No | Include relevant schema fields in results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It does state that the tool returns matching tools and relevant schema fields based on the query, which is the core behavior. However, it does not explain relevance ranking, result limits, or behavior when no matches are found—though these are partially inferable from the schema.
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?
Two concise sentences with no filler. The first sentence states scope and return value, and the second provides the intended use case. Every word contributes to the agent's understanding.
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?
The tool is a relatively simple meta-search utility with no output schema, so the description must convey what results look like; it does so by saying it returns matching tools with relevant schema fields. It also communicates the size of the searchable space (174 tools) and the intended workflow. A small gap is that it does not describe the shape of the returned tool objects, but the core invocation context is sufficiently complete.
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%, so the schema already documents all five parameters thoroughly. The description adds only a high-level statement that results are based on the query, which is useful but not necessary. Baseline 3 is appropriate since the schema does the heavy lifting.
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 uses a specific verb ('Search through') and a specific resource ('174 available SOR CRUD tools'), then states the output: matching tools with relevant schema fields. It clearly distinguishes itself from siblings by positioning itself as the discovery tool, while execute_tool and get_tool_schema serve execution and schema retrieval.
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 explicitly says 'Use this to discover which tool to use for your task,' which gives the agent a clear trigger condition. It does not explicitly name alternatives or say when not to use it, but the discovery framing is sufficient context given the sibling tool names.
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.
3 tool updates
v1.0.0- First observed
execute_tool - First observed
get_tool_schema - First observed
search_tools
TDQS
Each tool has a clearly distinct role: search_tools is for discovery, get_tool_schema is for inspecting a known tool's schema, and execute_tool is for running the selected tool. The overlap between search_tools returning schema fields and get_tool_schema providing full schema is managed well by the descriptions.
All tool names follow a consistent lowercase verb_noun pattern: search_tools, execute_tool, get_tool_schema. This makes the tool set predictable and easy to navigate.
Although only 3 tools are exposed, this is appropriate for a meta-server that dynamically accesses 174 underlying CRUD tools. Each tool earns its place in the discover-schema-execute workflow, so the count is well-scoped rather than thin.
The set covers the full meta-workflow: discover tools, inspect schemas, and execute operations. A minor gap is the lack of an explicit list-all-tools operation, though search_tools likely covers discovery if used with a broad query.
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
SaaS intelligence for AI agents. 5 unified tools cover 1,000+ services with 91-96% token savings.
Reduces AI Agent token usage by 40% via three-stage SOP workflow.
Codebase intelligence for agents: 152 structured artifacts across 21 programs, one call.
Find best-fit tools for any problem, vetted for prompt-injection risk before your agent trusts them
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA meta-server that aggregates multiple MCP servers into a single interface, reducing token usage by 98%+ through progressive tool discovery and direct code execution that processes data between tools without consuming context window space.1610Apache 2.0
- FlicenseNot gradedqualityDmaintenanceA context-efficient proxy that replaces individual tool schemas with three meta-tools for semantic search, schema retrieval, and tool routing. It enables agents to manage hundreds of backend tools while maintaining a constant context footprint of approximately 500 tokens.1-
- AlicenseNot gradedqualityNot gradedmaintenanceA drop-in MCP proxy that aggregates multiple backend servers into two meta-tools for efficient tool discovery and execution. It enables AI clients to access hundreds of tools while minimizing context window usage through searchable indexing.1-
- AlicenseNot gradedqualityFmaintenanceToken-efficient GitLab MCP server that delivers 167 tools through 3 meta-tools with progressive disclosure, field projection, server-side file trimming, and keyset pagination for agent context budgets.2213MIT
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/shashankcube/sor-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server