MCP Template
Provides repository access via GitHub for cloning the MCP template codebase.
Leverages Node.js as the runtime environment for the MCP server, enabling data service implementations and API functionality.
Uses npm for package management and running scripts to build and start the MCP server.
Utilizes TypeScript for type-safe implementation of MCP server components, resources, and tools.
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 Templateshow me all products in the electronics category"
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 Template - Build Your Own AI Server
A practical template for creating Model Context Protocol (MCP) servers that enable AI assistants to interact with your data and services.
Overview
This template provides a foundation for building MCP servers - specialized services that AI assistants can connect to for accessing external data, performing operations, and extending their capabilities beyond their training data.
Key Capabilities:
Expose data as queryable resources
Provide custom tools for AI assistants to execute
Handle real-time data operations (CRUD)
Connect multiple data sources and services
Related MCP server: MCP Server Boilerplate
Prerequisites
Node.js 18+ and npm
TypeScript knowledge
Understanding of REST APIs or similar concepts
Quick Start
git clone https://github.com/rhit-bhuwalk/MCP_TEMPLATE.git
cd MCP_TEMPLATE
npm install
npm run build
npm startThis launches a server with sample user data that demonstrates core MCP functionality.
Core Concepts
Resources
Resources represent data collections that AI assistants can query. Think of them as API endpoints that return structured data.
// Register a resource
dataService.registerResource('users', 'User account information');
// AI can now query: "Show me all users" or "Find user with ID 123"Tools
Tools are functions that AI assistants can execute to perform specific operations on your data.
// Register a tool
server.registerTool(
'create_user',
'Create a new user account',
z.object({
name: z.string(),
email: z.string().email()
}),
async (args) => {
return await dataService.create('mcp://users', args);
}
);Implementation Guide
1. Define Your Data Structure
Start by defining the shape of your data:
interface Product {
id: string;
name: string;
price: number;
category: string;
inStock: boolean;
}2. Register Resources
Make your data discoverable to AI assistants:
// In your server setup
dataService.registerResource('products', 'Product inventory data');
// Seed with sample data
const sampleProducts: Product[] = [
{ id: '1', name: 'Laptop', price: 999, category: 'Electronics', inStock: true },
{ id: '2', name: 'Coffee Mug', price: 15, category: 'Kitchen', inStock: false }
];
dataService.seedData('mcp://products', sampleProducts);3. Add Custom Tools
Create specific operations for your use case:
// Inventory management tool
server.registerTool(
'update_stock_status',
'Update product stock availability',
z.object({
productId: z.string(),
inStock: z.boolean()
}),
async (args) => {
const result = await dataService.update(
'mcp://products',
args.productId,
{ inStock: args.inStock }
);
return { success: true, product: result };
}
);
// Analytics tool
server.registerTool(
'get_category_summary',
'Get inventory summary by category',
z.object({
category: z.string().optional()
}),
async (args) => {
const products = await dataService.queryResource('mcp://products', {
filter: args.category ? { category: args.category } : undefined
});
return {
totalProducts: products.length,
inStock: products.filter(p => p.inStock).length,
outOfStock: products.filter(p => !p.inStock).length,
averagePrice: products.reduce((sum, p) => sum + p.price, 0) / products.length
};
}
);4. Connect Real Data Sources
Replace in-memory storage with your actual data:
// Example: Connect to a database
class DatabaseDataService extends DataService {
async queryResource(uri: string, query?: any) {
const resourceType = uri.split('://')[1];
switch (resourceType) {
case 'products':
return await this.db.products.findMany({
where: query?.filter || {}
});
case 'orders':
return await this.db.orders.findMany({
include: { items: true }
});
default:
throw new Error(`Unknown resource: ${resourceType}`);
}
}
}Project Structure
src/
├── core/ # Core MCP server functionality
├── services/ # Data service implementations
├── examples/ # Example implementations
│ └── server.ts # Complete working example
└── index.ts # Main entry pointStart here: src/examples/server.ts contains a complete implementation showing all concepts in practice.
Advanced Patterns
Multi-Resource Operations
server.registerTool(
'process_order',
'Process customer order and update inventory',
z.object({
customerId: z.string(),
productIds: z.array(z.string())
}),
async (args) => {
// Check inventory
const products = await dataService.queryByIds('mcp://products', args.productIds);
// Create order
const order = await dataService.create('mcp://orders', {
customerId: args.customerId,
items: products,
total: products.reduce((sum, p) => sum + p.price, 0)
});
// Update inventory
for (const product of products) {
await dataService.update('mcp://products', product.id, {
inStock: false
});
}
return { orderId: order.id, total: order.total };
}
);Error Handling and Validation
server.registerTool(
'safe_user_operation',
'Safely perform user operations with validation',
schema,
async (args) => {
try {
// Validate business rules
if (args.email && !isValidEmail(args.email)) {
throw new Error('Invalid email format');
}
const result = await dataService.performOperation(args);
return { success: true, data: result };
} catch (error) {
return {
success: false,
error: error.message,
code: 'VALIDATION_ERROR'
};
}
}
);Testing Your Server
# Run tests
npm test
# Test with a real AI assistant
npm start
# Connect Claude Desktop or other MCP-compatible clientDeployment Considerations
Authentication: Add API keys or OAuth for production use
Rate Limiting: Implement request throttling for high-traffic scenarios
Data Validation: Always validate inputs from AI assistants
Logging: Add comprehensive logging for debugging and monitoring
Error Handling: Provide clear error messages that help AI assistants understand what went wrong
Next Steps
Examine the examples - Understand the patterns by studying
src/examples/server.tsAdapt the data models - Replace sample data with your domain objects
Add domain-specific tools - Create operations that match your business logic
Connect real data sources - Integrate with databases, APIs, or file systems
Test with AI assistants - Verify functionality with Claude, ChatGPT, or other MCP clients
This template provides the scaffolding - your domain expertise and data make it valuable.
Available Tools
6 toolscreate_recordC
Create a new record in a resource
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Record data to create | |
| resourceUri | Yes | URI of the resource |
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 tool creates a record but fails to mention critical aspects like whether this is a mutating operation, what permissions are needed, error handling, or response format. This leaves significant gaps in understanding the tool's 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?
The description is a single, direct sentence with zero wasted words, making it highly concise and front-loaded. It efficiently communicates the core purpose without unnecessary elaboration.
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 complexity of a creation tool with no annotations and no output schema, the description is insufficient. It lacks details on behavioral traits, error cases, and what the tool returns, leaving the agent with incomplete context for safe and 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?
Schema description coverage is 100%, so the input schema already documents both parameters ('resourceUri' and 'data') adequately. The description adds no additional semantic context beyond implying these parameters are used for creation, which is minimal value over the 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 the action ('Create') and target ('new record in a resource'), which is specific and unambiguous. However, it doesn't differentiate from sibling tools like 'update_record' or 'delete_record' beyond the basic verb, missing explicit scope distinctions.
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 like 'update_record' or 'delete_record'. The description lacks context about prerequisites, such as whether the resource must exist or if authentication is required, leaving the agent without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_recordC
Delete a record from a resource
| Name | Required | Description | Default |
|---|---|---|---|
| recordId | Yes | ID of the record to delete | |
| resourceUri | Yes | URI of the resource |
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 'Delete' implies a destructive mutation, but fails to mention critical aspects like permissions required, whether deletion is permanent or reversible, side effects on related data, or error handling. This leaves significant gaps for a destructive operation.
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, efficient sentence with zero waste—it directly states the action and resource without unnecessary words. It is appropriately sized and front-loaded, 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?
Given the tool's complexity (a destructive mutation with no annotations and no output schema), the description is inadequate. It lacks details on behavioral traits, error cases, return values, or how it fits with siblings, leaving the agent under-informed for safe and 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?
Schema description coverage is 100%, with clear descriptions for both parameters ('recordId' and 'resourceUri'). The description adds no additional meaning beyond what the schema provides, such as format examples or interdependencies, so it meets the baseline for high schema coverage without enhancing parameter understanding.
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 verb ('Delete') and resource ('record from a resource'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'update_record' or 'create_record' beyond the obvious action difference, missing specific scope or constraints that would warrant a 5.
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 like 'update_record' or 'create_record', nor any prerequisites or exclusions. The description merely states what it does without context, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recordC
Get a specific record by ID
| Name | Required | Description | Default |
|---|---|---|---|
| recordId | Yes | ID of the record to retrieve | |
| resourceUri | Yes | URI of the resource |
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 it's a read operation ('Get'), implying safety, but doesn't mention error handling (e.g., what happens if the ID is invalid), permissions required, rate limits, or return format. This leaves significant gaps for a tool with two required parameters.
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, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place without redundancy.
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 tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., record data or error), behavioral traits like idempotency, or how it differs from siblings. Given the complexity of retrieval operations and lack of structured data, more context is needed.
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%, with clear parameter descriptions in the schema (e.g., 'ID of the record to retrieve'). The description adds no additional meaning beyond implying 'recordId' is used for retrieval, which is already covered. Baseline 3 is appropriate as 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 clearly states the verb ('Get') and resource ('record') with the specific mechanism ('by ID'), making the purpose unambiguous. However, it doesn't differentiate from sibling tools like 'list_records' or 'search_records' which also retrieve records but with different mechanisms.
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 like 'list_records' or 'search_records'. It mentions retrieving by ID but doesn't specify prerequisites (e.g., needing the ID) or exclusions (e.g., not for bulk retrieval).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recordsC
List records from a resource
| Name | Required | Description | Default |
|---|---|---|---|
| filter | No | Filter criteria | |
| maxRecords | No | Maximum number of records to return. Defaults to 100. | |
| resourceUri | Yes | URI of the resource to query | |
| sort | No | Specifies how to sort the records |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'List records' implies a read operation, but the description doesn't mention pagination behavior (though maxRecords parameter hints at it), authentication requirements, rate limits, error conditions, or what format the records are returned in. It provides minimal behavioral context beyond the basic operation.
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 extremely concise at just 5 words with no wasted language. It's front-loaded with the core purpose. While it may be too brief for completeness, as a standalone statement it's efficiently structured.
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 tool with 4 parameters, no annotations, no output schema, and multiple sibling alternatives, the description is inadequate. It doesn't explain the relationship between this listing operation and other record operations, doesn't describe return format, and provides minimal context for when this specific listing approach is appropriate.
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 parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain how 'resourceUri' relates to the listing, what filtering capabilities exist, or sorting behavior. Baseline 3 is appropriate when 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 'List records from a resource' clearly states the action (list) and target (records from a resource), but it's vague about scope and doesn't distinguish from sibling tools like 'search_records' or 'get_record'. It provides basic purpose but lacks specificity about what kind of listing operation this performs.
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 about when to use this tool versus alternatives like 'search_records' or 'get_record'. The description gives no indication of prerequisites, appropriate contexts, or exclusions. Users must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_recordsC
Search for records containing specific text
| Name | Required | Description | Default |
|---|---|---|---|
| fields | No | Specific fields to search in. If not provided, searches all text fields. | |
| maxRecords | No | Maximum number of records to return. Defaults to 100. | |
| resourceUri | Yes | URI of the resource | |
| searchTerm | Yes | Text to search for in records |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action. It doesn't disclose behavioral traits like whether this is a read-only operation (implied but not explicit), performance characteristics, pagination behavior, error conditions, or authentication requirements. The description is minimal and lacks operational 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 a single, efficient sentence with zero wasted words. It's appropriately sized for a simple search tool and front-loads the core purpose without unnecessary elaboration.
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 no annotations and no output schema, the description is incomplete for a search tool with 4 parameters. It doesn't explain what 'records' are, the search scope, result format, or limitations. For a tool that likely returns complex data, more context is needed to guide 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?
Schema description coverage is 100%, so the schema already fully documents all 4 parameters. The description adds no additional meaning beyond what's in the schema—it doesn't explain parameter interactions, default behaviors beyond schema defaults, or search semantics. Baseline 3 is appropriate when schema does all the work.
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 'Search for records containing specific text' clearly states the verb ('search') and resource ('records'), but it's vague about scope and doesn't distinguish from sibling tools like 'list_records' or 'get_record'. It doesn't specify what type of records or system is involved.
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 like 'list_records' or 'get_record'. The description implies text-based searching but doesn't clarify if this is for full-text search versus metadata filtering or when to prefer one sibling tool over another.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_recordC
Update a record in a resource
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | New record data | |
| recordId | Yes | ID of the record to update | |
| resourceUri | Yes | URI of the resource |
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 tool updates a record but does not cover critical aspects like required permissions, whether the update is idempotent, error handling, or what happens on success/failure. This is a significant gap for a mutation tool.
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, efficient sentence with zero waste. It is front-loaded and directly states the tool's purpose without unnecessary elaboration, making it easy 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?
Given the tool's complexity (a mutation with three required parameters), lack of annotations, and no output schema, the description is incomplete. It fails to address behavioral traits, usage context, or return values, leaving the agent with insufficient information for reliable invocation.
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 schema description coverage is 100%, with clear descriptions for all three parameters (resourceUri, recordId, data). The description adds no additional meaning beyond what the schema provides, such as format examples or constraints, so it meets the baseline for high schema coverage.
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 ('Update') and the target ('a record in a resource'), distinguishing it from siblings like create_record or delete_record. However, it lacks specificity about what 'update' entails beyond the basic verb, such as whether it's a full or partial update, which could help differentiate it further.
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 like create_record or delete_record. The description does not mention prerequisites (e.g., needing an existing record) or exclusions, leaving the agent to infer usage from the tool name alone.
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.
6 tool updates
v1.0.0- First observed
create_record - First observed
delete_record - First observed
get_record - First observed
list_records - First observed
search_records - First observed
update_record
TDQS
Every tool has a clearly distinct purpose targeting specific CRUD operations: create, delete, get, list, search, and update. There is no overlap in functionality, making it easy for an agent to select the correct tool for each action without confusion.
All tool names follow a consistent verb_noun pattern with 'record' as the noun, using snake_case uniformly. The naming is predictable and readable, with no deviations in style or convention across the set.
With 6 tools, this server is well-scoped for basic CRUD operations with added search functionality. Each tool earns its place, providing a complete and manageable set without being overly sparse or bloated for the domain.
The tool surface offers complete CRUD coverage (create, read, update, delete) plus list and search operations, covering the full lifecycle for a generic record resource. There are no obvious gaps, and agents can perform all essential operations without dead ends.
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
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
The Telnyx MCP server is an official implementation of the Model Context Protocol that enables AI clients (like Claude Desktop, Cursor, and OpenAI Agents) to interact with Telnyx's telephony, messaging, and AI assistant APIs. It provides comprehensive capabilities including making and managing phone calls, sending SMS/MMS messages, purchasing and configuring phone numbers, creating AI assistants with custom instructions, managing cloud storage buckets, scraping and embedding website content, and handling integration secrets. The server exists as both a local implementation and a remotely hosted version, allowing developers to integrate real-world communication infrastructure directly into AI applications.
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
Related MCP Servers
- AlicenseCqualityDmaintenanceA starter template for building Model Context Protocol servers that can be integrated with Cursor or Claude Desktop, allowing developers to create custom tools and extensions for AI assistants.12714MIT
- FlicenseBqualityDmaintenanceA starter template for building Model Context Protocol servers that can integrate AI assistants with custom tools, resource providers, and prompt templates.18141-
- FlicenseCqualityDmaintenanceA starter template for building Model Context Protocol servers that integrate with AI assistants like Claude and Cursor, providing custom tools, resource providers, and prompt templates.20-
- FlicenseCqualityDmaintenanceA starter template for building Model Context Protocol servers that integrate with AI assistants like Claude and Cursor, providing custom tools, resource providers, and prompt templates.20-
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/kbhuw/MCP_TEMPLATE'
If you have feedback or need assistance with the MCP directory API, please join our Discord server