Production-ready MCP (Model Context Protocol) servers for Claude and other AI assistants
Servers • Install • Usage • Add Your Own • Contributing
mcp-toolkit is a collection of production-ready MCP servers that give Claude (and other AI assistants) powerful capabilities through standardized tool interfaces.
MCP (Model Context Protocol) is Anthropic's open standard that lets AI models connect to external tools and data sources. Think of MCP servers as plugins for AI assistants.
| Server | Description | No API Key? |
|---|---|---|
system-info |
CPU, memory, disk, processes, network | ✅ |
web-search |
DuckDuckGo search + URL fetcher | ✅ |
git-ops |
Git log, status, diff, branches | ✅ |
file-ops |
Read files, list directories, search | ✅ |
All current servers require no external API keys. Just Python.
pip install mcp-toolkitOr install servers individually:
# Clone the repo
git clone https://github.com/mimonimo/mcp-toolkit
cd mcp-toolkit
# Install with all dependencies
pip install -e ".[all]"Add servers to your claude_desktop_config.json (usually at ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"system-info": {
"command": "python3",
"args": ["/path/to/mcp-toolkit/servers/system_info/server.py"]
},
"web-search": {
"command": "python3",
"args": ["/path/to/mcp-toolkit/servers/web_search/server.py"]
},
"git-ops": {
"command": "python3",
"args": ["/path/to/mcp-toolkit/servers/git_ops/server.py"]
},
"file-ops": {
"command": "python3",
"args": ["/path/to/mcp-toolkit/servers/file_ops/server.py"]
}
}
}Then restart Claude Desktop. You'll see the tools available in the tool selector.
# In your project directory, add MCP server
claude mcp add system-info python3 /path/to/servers/system_info/server.py
claude mcp add web-search python3 /path/to/servers/web_search/server.pypython3 servers/system_info/server.py
python3 servers/web_search/server.py
python3 servers/git_ops/server.py
python3 servers/file_ops/server.pyLets Claude understand your machine's current state:
| Tool | Description |
|---|---|
get_system_overview |
CPU, memory, disk usage, uptime, OS version |
list_top_processes |
Top N processes by CPU usage |
get_network_connections |
Active network connections |
run_command |
Execute safe read-only shell commands |
Example Claude prompt:
"What's using the most CPU on my machine right now?"
No API key required — uses DuckDuckGo:
| Tool | Description |
|---|---|
web_search |
Search the web via DuckDuckGo |
fetch_url |
Fetch and extract text from any URL |
Example Claude prompt:
"Search for the latest MCP server examples on GitHub"
Read-only Git operations:
| Tool | Description |
|---|---|
git_log |
Commit history with filters |
git_status |
Working tree status |
git_diff |
Staged or unstaged changes |
git_branches |
List local/remote branches |
git_show_file |
File content at any commit |
Example Claude prompt:
"Show me the last 10 commits to this repo and summarize the changes"
Safe file system exploration:
| Tool | Description |
|---|---|
read_file |
Read file with line ranges |
list_directory |
Explore directory trees |
search_files |
Glob pattern file search |
file_info |
File metadata |
Example Claude prompt:
"Find all Python files in ~/projects/myapp and show me the main entry point"
Each server is a self-contained Python file. Here's the minimal template:
from mcp.server import Server
from mcp.server.stdio import stdio_server
from mcp.types import Tool, TextContent
server = Server("my-server")
@server.list_tools()
async def list_tools() -> list[Tool]:
return [
Tool(
name="my_tool",
description="What this tool does",
inputSchema={
"type": "object",
"properties": {
"input": {"type": "string", "description": "Input parameter"}
},
"required": ["input"],
},
)
]
@server.call_tool()
async def call_tool(name: str, arguments: dict) -> list[TextContent]:
if name == "my_tool":
result = f"You said: {arguments['input']}"
return [TextContent(type="text", text=result)]
async def main():
async with stdio_server() as streams:
await server.run(streams[0], streams[1], server.create_initialization_options())
if __name__ == "__main__":
import asyncio
asyncio.run(main())-
slack— Post messages, read channels -
notion— Read/write Notion pages -
aws— S3, EC2, CloudWatch read operations -
postgres— Query databases (read-only) -
docker— Container status and logs -
vmware— vSphere VM information -
kubernetes— Cluster status and pod logs
Want a server built? Open an issue with your use case.
Contributions welcome! The easiest way to contribute is to add a new server:
- Create
servers/your_server_name/server.py - Follow the template above
- Add it to the README table
- Open a PR
Guidelines:
- Each server should be self-contained in one file
- Prefer no/minimal dependencies
- Never perform destructive operations by default (read-only first)
- Include proper error handling
git clone https://github.com/mimonimo/mcp-toolkit
cd mcp-toolkit
pip install -e ".[dev]"MIT © mimonimo
If mcp-toolkit is useful to you, please give it a ⭐
Built by mimonimo