Model Context Protocol (MCP) server examples with simplified, focused tool sets. This repository contains working examples for Obsidian vault management and browser automation.
Status:
- Obsidian Examples: Production-ready β
- AWS Browser Example: Production-ready with real AWS Agent Core integration β
- Playwright Browser Example: Production-ready β
-
Clone and setup
git clone <repository-url> cd mcp_server_examples make setup-all # Installs dependencies and builds all examples
-
Configure your MCP client to use
run.shfiles as entry points- Each example has a
run.shthat handles virtual environments automatically - Use absolute paths to these
.shfiles in your MCP client configuration
- Each example has a
-
Test your setup using the commands below
- Python (FastMCP):
examples/obsidian_python/run.sh - TypeScript (Official SDK):
examples/obsidian_typescript/run.sh
Tools: list, read, create, update, move, search, delete
- Python (FastMCP + AWS Agent Core):
examples/aws_agent_core_browser_python/run.sh - TypeScript (AWS Agent Core):
examples/aws_agent_core_browser_typescript/run.sh
Tools: fetch, screenshot
- Obsidian with LiveSync plugin configured
- CouchDB server running (local or remote)
cd examples/obsidian_python
pip install -r requirements.txt
# Set environment variables
export VAULT_BASE_URL="http://localhost:5984"
export VAULT_DB_NAME="your-obsidian-vault"
export VAULT_USERNAME="your-username" # optional
export VAULT_PASSWORD="your-password" # optionalcd examples/obsidian_typescript
npm install
npm run build
# Set same environment variables as Pythoncd examples/aws_agent_core_browser_python
pip install -r requirements.txt
# Optional AWS configuration
export AWS_PROFILE="your-profile"
export AWS_REGION="us-west-2"cd examples/aws_agent_core_browser_typescript
npm install
npx playwright install chromium
npm run buildAdd to your claude_desktop_config.json:
{
"mcpServers": {
"obsidian-python": {
"command": "/absolute/path/to/examples/obsidian_python/run.sh",
"env": {
"VAULT_BASE_URL": "http://localhost:5984",
"VAULT_DB_NAME": "your-vault-name",
"VAULT_USERNAME": "your-username",
"VAULT_PASSWORD": "your-password"
}
},
"aws-browser": {
"command": "/absolute/path/to/examples/aws_agent_core_browser_typescript/run.sh",
"env": {}
}
}
}Add to your config.json:
{
"mcpServers": [
{
"name": "obsidian-python",
"command": ["/absolute/path/to/examples/obsidian_python/run.sh"],
"env": {
"VAULT_BASE_URL": "http://localhost:5984",
"VAULT_DB_NAME": "your-vault-name",
"VAULT_USERNAME": "your-username",
"VAULT_PASSWORD": "your-password"
}
},
{
"name": "aws-browser",
"command": ["/absolute/path/to/examples/aws_agent_core_browser_typescript/run.sh"],
"env": {}
}
]
}npx @modelcontextprotocol/inspector examples/obsidian_python/run.shUse the provided Makefile for easy path management:
make show-paths # Show all absolute paths
make claude-config # Generate Claude Desktop config
make continue-config # Generate Continue.dev config
make test-obsidian-py # Test Obsidian Python server
make test-browser-ts # Test TypeScript browser server# Test Obsidian Python server
echo '{"method": "tools/list"}' | examples/obsidian_python/run.sh
# Test AWS Browser TypeScript server
echo '{"method": "tools/list"}' | examples/aws_agent_core_browser_typescript/run.sh# Interactive testing interface
npx @modelcontextprotocol/inspector examples/obsidian_python/run.sh# List all files
list()
# Read a specific note
read("daily/2024-01-15.md")
# Create a new note
create("ideas/new-project.md", "# New Project\n\nGreat idea!")
# Search for files
search("*.md")# Fetch webpage content
fetch("https://example.com")
# Take a screenshot
screenshot("https://github.com")| Variable | Description | Required |
|---|---|---|
VAULT_BASE_URL |
CouchDB server URL | Yes |
VAULT_DB_NAME |
Database/vault name | Yes |
VAULT_USERNAME |
Auth username | No |
VAULT_PASSWORD |
Auth password | No |
| Variable | Description | Default |
|---|---|---|
AWS_PROFILE |
AWS profile name | None |
AWS_REGION |
AWS region | us-west-2 |
.shfiles: All examples userun.shas entry points- Virtual environments: Shell scripts automatically activate Python venvs and handle dependencies
- Path independence: No need to manage Python/Node paths manually
- Obsidian: 7 core file operations (CRUD + search/move)
- Browser: 2 focused tools (fetch content + screenshot)
- Python: FastMCP for clean, decorator-based API
- TypeScript: Official MCP SDK for maximum compatibility
- Comprehensive error catching and user-friendly messages
- Automatic connection management and retries
- Graceful fallbacks (e.g., Playwright when AWS Agent Core unavailable)
Each example directory contains detailed documentation:
examples/obsidian_python/README.mdexamples/obsidian_typescript/README.mdexamples/aws_agent_core_browser_python/README.mdexamples/aws_agent_core_browser_typescript/README.md
- Fork the repository
- Create your feature branch
- Follow the existing code style and architecture
- Add tests and documentation
- Submit a pull request
MIT License - See individual example directories for implementation details.