Build Awesome MCPs with Awesome Best Practices for MCP Servers and MCP Clients
{
"mcpServers": {
"awesome-mcp-best-practices": {
"command": "<see-readme>",
"args": []
}
}
}No install config available. Check the server's README for setup instructions.
Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Build Awesome MCPs with Awesome Best Practices for MCP Servers and MCP Clients
Is it safe?
No package registry to scan.
No authentication — any process on your machine can connect.
Apache-2.0. View license →
Is it maintained?
Last commit 235 days ago. 70 stars.
Will it work with my client?
Transport: stdio. Works with Claude Desktop, Cursor, Claude Code, and most MCP clients.
No automated test available for this server. Check the GitHub README for setup instructions.
No known vulnerabilities.
This server is missing a description. Tools and install config are also missing.If you've used it, help the community.
Add informationHave you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Persistent memory using a knowledge graph
Privacy-first. MCP is the protocol for tool access. We're the virtualization layer for context.
Pre-build reality check. Scans GitHub, HN, npm, PyPI, Product Hunt — returns 0-100 signal.
Monitor browser logs directly from Cursor and other MCP compatible IDEs.
MCP Security Weekly
Get CVE alerts and security updates for Awesome Mcp Best Practices and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
A curated and opinionated list of awesome Model Context Protocol (MCP) best practices as they pertain to building MCP Servers and MCP Clients.
// TBD
Use consistent, compatible naming conventions for your MCP Server Tools to ensure they can be properly discovered and invoked by MCP Clients.
get Npm Package Infoget.Npm.Package.Infoget(Npm)PackageInfogetNpmPackageInfoget-npm-package-infoget_npm_package_infoserver.tool(
"getNpmPackageInfo",
"Get information about an npm package",
{
packageName: z.string()
},
async ({ packageName }) => {
// Implementation details...
return {
content: [{ type: "text", text: output }],
};
}
);
Using non-standard naming conventions can prevent or disrupt MCP Clients from properly discovering and surfacing your tools to end users. GPT-4o tokenization works best with camelCase naming conventions.
When the Tool name can be intereted and accessed using different naming conventions, call out aliases in the Tool's description.
For example, a postMesage tool name might be too specific:
server.tool(
"postMessage",
"Post a message under your account",
() => {}
)
The LLM might not invoke the tool if the users ask for "share a social post on Twitter", or "upload this picture to Instagram".
Specify aliases and elaborate description for LLMs to better understand when it is required to invoke your tool.
server.tool(
"postMessage",
"Upload, share, and post messages on social media",
() => {}
)
Even with large content windows, choosing the right tool to call, especially when many tools are exposed, will be a difficult task for an LLM. Providing as much context as possible within the description of tools is necessary and helpful.
Short description such as "Call this function to execute an SQL query"
server.tool(
"runSqlQuery",
`<use_case>Use this tool to execute a single SQL query against a Postgres database.</use_case>
<important_notes>
If you have a temporary branch from a prior step, you MUST:
1. Pass the branch ID to this tool unless explicitly told otherwise
2. Tell the user that you ar eusing
... [View full README on GitHub](https://github.com/lirantal/awesome-mcp-best-practices#readme)