If you keep your Obsidian vault in a GitHub repo, this server lets Claude read and search through it directly. You get getFileContents for pulling specific notes, searchFiles with modes for filename, path, content, or all three at once, and getCommitHistory to see how notes evolved. It also surfaces searchIssues for GitHub integration. The filename search mode is handy when you need something specific like "OKR 2025.md" without wading through content matches. Needs a GitHub token with repo access and your owner/repo details in the config. Written in TypeScript with Zod validation throughout.
Public tool metadata for what this MCP can expose to an agent.
getFileContentsRetrieve the contents of a specific note, document, or file from your Obsidian vault stored in GitHub (hoffination/Ben-Personal). Perfect for accessing your knowledge base content.1 paramsRetrieve the contents of a specific note, document, or file from your Obsidian vault stored in GitHub (hoffination/Ben-Personal). Perfect for accessing your knowledge base content.
filePathstringsearchFilesSearch for notes, documents, and files within your Obsidian vault on GitHub (hoffination/Ben-Personal). Find specific knowledge base content using GitHub's powerful search syntax. Supports searching in filenames, paths, and content.4 paramsSearch for notes, documents, and files within your Obsidian vault on GitHub (hoffination/Ben-Personal). Find specific knowledge base content using GitHub's powerful search syntax. Supports searching in filenames, paths, and content.
pagenumberquerystringperPagenumbersearchInstringfilename · path · content · alldefault: allsearchIssuesSearch for issues and discussions in your Obsidian vault repository (hoffination/Ben-Personal). Great for tracking tasks, project management, and collaborative knowledge work.1 paramsSearch for issues and discussions in your Obsidian vault repository (hoffination/Ben-Personal). Great for tracking tasks, project management, and collaborative knowledge work.
querystringgetCommitHistoryTrack the evolution of your Obsidian vault knowledge base by retrieving commit history from GitHub (hoffination/Ben-Personal). See how your notes and ideas have developed over time with detailed diffs.5 paramsTrack the evolution of your Obsidian vault knowledge base by retrieving commit history from GitHub (hoffination/Ben-Personal). See how your notes and ideas have developed over time with detailed diffs.
daysnumberpagenumberauthorstringmaxCommitsnumberincludeDiffsbooleanA Model Context Protocol (MCP) server that connects AI assistants to GitHub repositories containing Obsidian vaults. This server enables seamless integration with your knowledge base stored on GitHub, allowing AI assistants to read, search, and analyze your Obsidian notes and documentation.
Many Obsidian users store their vaults in GitHub for backup, versioning, and collaboration. This MCP server bridges the gap between your GitHub-hosted Obsidian vault and AI assistants, enabling:
filename: Find files by exact filename (perfect for "OKR 2025" type searches)path: Search anywhere in file pathscontent: Search within file contentsall: Comprehensive search across filenames, paths, and contentThe easiest way to install Obsidian GitHub MCP is using Smithery:
# For Claude Desktop
npx -y @smithery/cli install @Hint-Services/obsidian-github-mcp --client claude
# For Cursor
npx -y @smithery/cli install @Hint-Services/obsidian-github-mcp --client cursor
# For Windsurf
npx -y @smithery/cli install @Hint-Services/obsidian-github-mcp --client windsurf
# For Cline
npx -y @smithery/cli install @Hint-Services/obsidian-github-mcp --client cline
npm install obsidian-github-mcp
Add the server to your MCP settings file with the following configuration:
{
"mcpServers": {
"obsidianGithub": {
"command": "npx",
"args": ["-y", "obsidian-github-mcp"],
"env": {
"GITHUB_TOKEN": "your-github-token",
"GITHUB_OWNER": "your-github-username",
"GITHUB_REPO": "your-obsidian-vault-repo"
}
}
}
}
GITHUB_TOKEN: Your GitHub personal access token (create one here)GITHUB_OWNER: The owner/organization of the GitHub repositoryGITHUB_REPO: The name of the repository containing your Obsidian vaultYour GitHub token needs the following permissions:
repo (for private repositories) or public_repo (for public repositories)read:org (if accessing organization repositories){
"tool": "getFileContents",
"arguments": {
"filePath": "Daily Notes/2024-01-15.md"
}
}
{
"tool": "searchFiles",
"arguments": {
"query": "OKR 2025",
"searchIn": "filename"
}
}
{
"tool": "searchFiles",
"arguments": {
"query": "Daily Notes",
"searchIn": "path"
}
}
{
"tool": "searchFiles",
"arguments": {
"query": "machine learning algorithms",
"searchIn": "content",
"perPage": 10
}
}
{
"tool": "searchFiles",
"arguments": {
"query": "project planning",
"searchIn": "all"
}
}
{
"tool": "searchFiles",
"arguments": {
"query": "path:*.md extension:md",
"searchIn": "content"
}
}
{
"tool": "getCommitHistory",
"arguments": {
"days": 30,
"includeDiffs": true,
"maxCommits": 10
}
}
Problem: Searching for "OKR 2025" doesn't find your file named "OKR 2025.md"
Solution: Use the searchIn: "filename" parameter:
{
"tool": "searchFiles",
"arguments": {
"query": "OKR 2025",
"searchIn": "filename"
}
}
Exact Phrases: Use quotes for multi-word searches
{
"query": "\"project planning 2025\"",
"searchIn": "content"
}
File Extensions: Find specific file types
{
"query": "path:*.md",
"searchIn": "content"
}
Directory Specific: Search within folders
{
"query": "path:\"Daily Notes/\"",
"searchIn": "content"
}
obsidian-github-mcp/
├── src/
│ ├── index.ts # Main MCP server entry point
│ └── github/ # GitHub API integration
│ ├── client.ts # GitHub client implementation
│ └── types.ts # TypeScript type definitions
├── docs/ # Documentation
├── package.json # Project configuration
└── tsconfig.json # TypeScript configuration
If you're interested in contributing to this project or developing your own tools with this server, please see the Development Guide.
pnpm install - Install dependenciespnpm run build - Build the projectpnpm run dev - Run in development mode with inspectorpnpm run inspector - Launch MCP inspector for testingIf you're migrating from the older mcp-private-github-search package:
Update your package name in configuration:
{
"mcpServers": {
"obsidianGithub": {
"command": "npx",
"args": ["-y", "obsidian-github-mcp"]
}
}
}
The functionality remains the same - all existing tools work identically
Consider the new Obsidian-focused use cases and workflows
For further information on the MCP ecosystem, refer to:
"The future is already here, it's just unevenly distributed"
— William Gibson, Author
Hint Services is a boutique consultancy with a mission to develop and expand how user interfaces leverage artificial intelligence technology. We architect ambition at the intersection of AI and User Experience, founded and led by Ben Hofferber.
We offer specialized AI workshops for design teams looking to embrace AI tools without becoming developers. Learn more about our training and workshops.
ray0907/git-mcp-server
cyanheads/git-mcp-server
io.github.b1ff/atlassian-dc-mcp-bitbucket
io.github.b1ff/atlassian-dc-mcp-jira
com.mcparmory/atlassian-jira
sirlordt/vscode-terminal-mcp