mirror of
https://github.com/modelcontextprotocol/servers.git
synced 2026-04-22 05:45:22 +02:00
Merge branch 'main' into foxy-contexts
This commit is contained in:
19
README.md
19
README.md
@@ -43,7 +43,9 @@ Official integrations are maintained by companies building production ready MCP
|
|||||||
- **[Obsidian Markdown Notes](https://github.com/calclavia/mcp-obsidian)** - Read and search through your Obsidian vault or any directory containing Markdown notes
|
- **[Obsidian Markdown Notes](https://github.com/calclavia/mcp-obsidian)** - Read and search through your Obsidian vault or any directory containing Markdown notes
|
||||||
- <img height="12" width="12" src="https://e2b.dev/favicon.ico" alt="E2B Logo" /> **[E2B](https://github.com/e2b-dev/mcp-server)** - Run code in secure sandboxes hosted by [E2B](https://e2b.dev)
|
- <img height="12" width="12" src="https://e2b.dev/favicon.ico" alt="E2B Logo" /> **[E2B](https://github.com/e2b-dev/mcp-server)** - Run code in secure sandboxes hosted by [E2B](https://e2b.dev)
|
||||||
- <img height="12" width="12" src="https://exa.ai/images/favicon-32x32.png" alt="Exa Logo" /> **[Exa](https://github.com/exa-labs/exa-mcp-server)** - Search Engine made for AIs by [Exa](https://exa.ai)
|
- <img height="12" width="12" src="https://exa.ai/images/favicon-32x32.png" alt="Exa Logo" /> **[Exa](https://github.com/exa-labs/exa-mcp-server)** - Search Engine made for AIs by [Exa](https://exa.ai)
|
||||||
|
- <img height="12" width="12" src="https://cdn.simpleicons.org/jetbrains" /> **[JetBrains](https://github.com/JetBrains/mcp-jetbrains)** – Work on your code with JetBrains IDEs
|
||||||
- **[Neon](https://github.com/neondatabase/mcp-server-neon)** - Interact with the Neon serverless Postgres platform
|
- **[Neon](https://github.com/neondatabase/mcp-server-neon)** - Interact with the Neon serverless Postgres platform
|
||||||
|
- <img height="12" width="12" src="https://neo4j.com/favicon.ico" alt="Neo4j Logo" /> **[Neo4j](https://github.com/neo4j-contrib/mcp-neo4j/)** - Neo4j graph database server (schema + read/write-cypher) and separate graph database backed memory
|
||||||
- <img height="12" width="12" src="https://www.tinybird.co/favicon.ico" alt="Tinybird Logo" /> **[Tinybird](https://github.com/tinybirdco/mcp-tinybird)** - Interact with Tinybird serverless ClickHouse platform
|
- <img height="12" width="12" src="https://www.tinybird.co/favicon.ico" alt="Tinybird Logo" /> **[Tinybird](https://github.com/tinybirdco/mcp-tinybird)** - Interact with Tinybird serverless ClickHouse platform
|
||||||
- <img height="12" width="12" src="https://pics.fatwang2.com/56912e614b35093426c515860f9f2234.svg" /> [Search1API](https://github.com/fatwang2/search1api-mcp) - One API for Search, Crawling, and Sitemaps
|
- <img height="12" width="12" src="https://pics.fatwang2.com/56912e614b35093426c515860f9f2234.svg" /> [Search1API](https://github.com/fatwang2/search1api-mcp) - One API for Search, Crawling, and Sitemaps
|
||||||
- <img height="12" width="12" src="https://qdrant.tech/img/brand-resources-logos/logomark.svg" /> **[Qdrant](https://github.com/qdrant/mcp-server-qdrant/)** - Implement semantic memory layer on top of the Qdrant vector search engine
|
- <img height="12" width="12" src="https://qdrant.tech/img/brand-resources-logos/logomark.svg" /> **[Qdrant](https://github.com/qdrant/mcp-server-qdrant/)** - Implement semantic memory layer on top of the Qdrant vector search engine
|
||||||
@@ -60,7 +62,7 @@ A growing set of community-developed and maintained servers demonstrates various
|
|||||||
- **[Spotify](https://github.com/varunneal/spotify-mcp)** - This MCP allows an LLM to play and use Spotify.
|
- **[Spotify](https://github.com/varunneal/spotify-mcp)** - This MCP allows an LLM to play and use Spotify.
|
||||||
- **[Inoyu](https://github.com/sergehuber/inoyu-mcp-unomi-server)** - Interact with an Apache Unomi CDP customer data platform to retrieve and update customer profiles
|
- **[Inoyu](https://github.com/sergehuber/inoyu-mcp-unomi-server)** - Interact with an Apache Unomi CDP customer data platform to retrieve and update customer profiles
|
||||||
- **[Vega-Lite](https://github.com/isaacwasserman/mcp-vegalite-server)** - Generate visualizations from fetched data using the VegaLite format and renderer.
|
- **[Vega-Lite](https://github.com/isaacwasserman/mcp-vegalite-server)** - Generate visualizations from fetched data using the VegaLite format and renderer.
|
||||||
- **[Snowflake](https://github.com/datawiz168/mcp-snowflake-service)** - This MCP server enables LLMs to interact with Snowflake databases, allowing for secure and controlled data operations.
|
- **[Snowflake](https://github.com/isaacwasserman/mcp-snowflake-server)** - This MCP server enables LLMs to interact with Snowflake databases, allowing for secure and controlled data operations.
|
||||||
- **[MySQL](https://github.com/designcomputer/mysql_mcp_server)** (by DesignComputer) - MySQL database integration in Python with configurable access controls and schema inspection
|
- **[MySQL](https://github.com/designcomputer/mysql_mcp_server)** (by DesignComputer) - MySQL database integration in Python with configurable access controls and schema inspection
|
||||||
- **[MySQL](https://github.com/benborla/mcp-server-mysql)** (by benborla) - MySQL database integration in NodeJS with configurable access controls and schema inspection
|
- **[MySQL](https://github.com/benborla/mcp-server-mysql)** (by benborla) - MySQL database integration in NodeJS with configurable access controls and schema inspection
|
||||||
- **[MSSQL](https://github.com/aekanun2020/mcp-server/)** - MSSQL database integration with configurable access controls and schema inspection
|
- **[MSSQL](https://github.com/aekanun2020/mcp-server/)** - MSSQL database integration with configurable access controls and schema inspection
|
||||||
@@ -80,15 +82,28 @@ A growing set of community-developed and maintained servers demonstrates various
|
|||||||
- **[Docker](https://github.com/ckreiling/mcp-server-docker)** - Integrate with Docker to manage containers, images, volumes, and networks.
|
- **[Docker](https://github.com/ckreiling/mcp-server-docker)** - Integrate with Docker to manage containers, images, volumes, and networks.
|
||||||
- **[Kubernetes](https://github.com/Flux159/mcp-server-kubernetes)** - Connect to Kubernetes cluster and manage pods, deployments, and services.
|
- **[Kubernetes](https://github.com/Flux159/mcp-server-kubernetes)** - Connect to Kubernetes cluster and manage pods, deployments, and services.
|
||||||
- **[OpenAPI](https://github.com/snaggle-ai/openapi-mcp-server)** - Interact with [OpenAPI](https://www.openapis.org/) APIs.
|
- **[OpenAPI](https://github.com/snaggle-ai/openapi-mcp-server)** - Interact with [OpenAPI](https://www.openapis.org/) APIs.
|
||||||
- **[Pandoc](https://github.com/vivekVells/mcp-pandoc)** - MCP server for seamless document format conversion using Pandoc, supporting Markdown, HTML, and plain text, with other formats like PDF, csv and docx in development.
|
- **[Pandoc](https://github.com/vivekVells/mcp-pandoc)** - MCP server for seamless document format conversion using Pandoc, supporting Markdown, HTML, and plain text, with other formats like PDF, csv and docx in development.
|
||||||
|
- **[Pinecone](https://github.com/sirmews/mcp-pinecone)** - MCP server for searching and uploading records to Pinecone. Allows for simple RAG features, leveraging Pinecone's Inference API.
|
||||||
- **[HuggingFace Spaces](https://github.com/evalstate/mcp-hfspace)** - Server for using HuggingFace Spaces, supporting Open Source Image, Audio, Text Models and more. Claude Desktop mode for easy integration.
|
- **[HuggingFace Spaces](https://github.com/evalstate/mcp-hfspace)** - Server for using HuggingFace Spaces, supporting Open Source Image, Audio, Text Models and more. Claude Desktop mode for easy integration.
|
||||||
- **[ChatSum](https://github.com/chatmcp/mcp-server-chatsum)** - Query and Summarize chat messages with LLM. by [mcpso](https://mcp.so)
|
- **[ChatSum](https://github.com/chatmcp/mcp-server-chatsum)** - Query and Summarize chat messages with LLM. by [mcpso](https://mcp.so)
|
||||||
- **[Rememberizer AI](https://github.com/skydeckai/mcp-server-rememberizer)** - An MCP server designed for interacting with the Rememberizer data source, facilitating enhanced knowledge retrieval.
|
- **[Rememberizer AI](https://github.com/skydeckai/mcp-server-rememberizer)** - An MCP server designed for interacting with the Rememberizer data source, facilitating enhanced knowledge retrieval.
|
||||||
|
- **[FlightRadar24](https://github.com/sunsetcoder/flightradar24-mcp-server)** - A Claude Desktop MCP server that helps you track flights in real-time using Flightradar24 data.
|
||||||
- **[X (Twitter)](https://github.com/vidhupv/x-mcp)** (by vidhupv) - Create, manage and publish X/Twitter posts directly through Claude chat.
|
- **[X (Twitter)](https://github.com/vidhupv/x-mcp)** (by vidhupv) - Create, manage and publish X/Twitter posts directly through Claude chat.
|
||||||
- **[X (Twitter)](https://github.com/EnesCinr/twitter-mcp)** (by EnesCinr) - Interact with twitter API. Post tweets and search for tweets by query.
|
- **[X (Twitter)](https://github.com/EnesCinr/twitter-mcp)** (by EnesCinr) - Interact with twitter API. Post tweets and search for tweets by query.
|
||||||
- **[RAG Web Browser](https://github.com/apify/mcp-server-rag-web-browser)** An MCP server for Apify's RAG Web Browser Actor to perform web searches, scrape URLs, and return content in Markdown.
|
- **[RAG Web Browser](https://github.com/apify/mcp-server-rag-web-browser)** An MCP server for Apify's RAG Web Browser Actor to perform web searches, scrape URLs, and return content in Markdown.
|
||||||
- **[XMind](https://github.com/apeyroux/mcp-xmind)** - Read and search through your XMind directory containing XMind files.
|
- **[XMind](https://github.com/apeyroux/mcp-xmind)** - Read and search through your XMind directory containing XMind files.
|
||||||
- **[oatpp-mcp](https://github.com/oatpp/oatpp-mcp)** - C++ MCP integration for Oat++. Use [Oat++](https://oatpp.io) to build MCP servers.
|
- **[oatpp-mcp](https://github.com/oatpp/oatpp-mcp)** - C++ MCP integration for Oat++. Use [Oat++](https://oatpp.io) to build MCP servers.
|
||||||
|
- **[Contentful-mcp](https://github.com/ivo-toby/contentful-mcp)** - Read, update, delete, publish content in your [Contentful](https://contentful.com) space(s) from this MCP Server.
|
||||||
|
- **[Home Assistant](https://github.com/tevonsb/homeassistant-mcp)** - Interact with [Home Assistant](https://www.home-assistant.io/) including viewing and controlling lights, switches, sensors, and all other Home Assistant entities.
|
||||||
|
- **[cognee-mcp](https://github.com/topoteretes/cognee-mcp-server)** - GraphRAG memory server with customizable ingestion, data processing and search
|
||||||
|
- **[Airtable](https://github.com/domdomegg/airtable-mcp-server)** - Read and write access to [Airtable](https://airtable.com/) databases, with schema inspection.
|
||||||
|
- **[mcp-k8s-go](https://github.com/strowk/mcp-k8s-go)** - Golang-based Kubernetes server for MCP to browse pods and their logs, events, namespaces and more. Built to be extensible.
|
||||||
|
- **[Notion](https://github.com/v-3/notion-server)** (by v-3) - Notion MCP integration. Search, Read, Update, and Create pages through Claude chat.
|
||||||
|
- **[Notion](https://github.com/suekou/mcp-notion-server)** (by suekou) - Interact with Notion API.
|
||||||
|
- **[TMDB](https://github.com/Laksh-star/mcp-server-tmdb)** - This MCP server integrates with The Movie Database (TMDB) API to provide movie information, search capabilities, and recommendations.
|
||||||
|
- **[MongoDB](https://github.com/kiliczsh/mcp-mongo-server)** - A Model Context Protocol Server for MongoDB.
|
||||||
|
- **[Airtable](https://github.com/felores/airtable-mcp)** - Airtable Model Context Protocol Server.
|
||||||
|
- **[Fetch](https://github.com/zcaceres/fetch-mcp)** - A server that flexibly fetches HTML, JSON, Markdown, or plaintext
|
||||||
|
|
||||||
## 📚 Resources
|
## 📚 Resources
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Everything MCP Server
|
# Everything MCP Server
|
||||||
|
|
||||||
This MCP server attempts to exercise all the features of the MCP protocol. It is not intended to be a useful server, but rather a test server for builders of MCP clients. It implements prompts, tools, resources, sampling, and more to showcase MCP capabilities.
|
This MCP server attempts to exercise all the features of the MCP protocol. It is not intended to be a useful server, but rather a test server for builders of MCP clients. It implements prompts, tools, resources, sampling, and more to showcase MCP capabilities.
|
||||||
|
|
||||||
@@ -15,7 +15,7 @@ This MCP server attempts to exercise all the features of the MCP protocol. It is
|
|||||||
2. `add`
|
2. `add`
|
||||||
- Adds two numbers together
|
- Adds two numbers together
|
||||||
- Inputs:
|
- Inputs:
|
||||||
- `a` (number): First number
|
- `a` (number): First number
|
||||||
- `b` (number): Second number
|
- `b` (number): Second number
|
||||||
- Returns: Text result of the addition
|
- Returns: Text result of the addition
|
||||||
|
|
||||||
@@ -27,7 +27,7 @@ This MCP server attempts to exercise all the features of the MCP protocol. It is
|
|||||||
- Returns: Completion message with duration and steps
|
- Returns: Completion message with duration and steps
|
||||||
- Sends progress notifications during execution
|
- Sends progress notifications during execution
|
||||||
|
|
||||||
4. `sampleLLM`
|
4. `sampleLLM`
|
||||||
- Demonstrates LLM sampling capability using MCP sampling feature
|
- Demonstrates LLM sampling capability using MCP sampling feature
|
||||||
- Inputs:
|
- Inputs:
|
||||||
- `prompt` (string): The prompt to send to the LLM
|
- `prompt` (string): The prompt to send to the LLM
|
||||||
@@ -39,17 +39,23 @@ This MCP server attempts to exercise all the features of the MCP protocol. It is
|
|||||||
- No inputs required
|
- No inputs required
|
||||||
- Returns: Base64 encoded PNG image data
|
- Returns: Base64 encoded PNG image data
|
||||||
|
|
||||||
|
6. `printEnv`
|
||||||
|
- Prints all environment variables
|
||||||
|
- Useful for debugging MCP server configuration
|
||||||
|
- No inputs required
|
||||||
|
- Returns: JSON string of all environment variables
|
||||||
|
|
||||||
### Resources
|
### Resources
|
||||||
|
|
||||||
The server provides 100 test resources in two formats:
|
The server provides 100 test resources in two formats:
|
||||||
- Even numbered resources:
|
- Even numbered resources:
|
||||||
- Plaintext format
|
- Plaintext format
|
||||||
- URI pattern: `test://static/resource/{even_number}`
|
- URI pattern: `test://static/resource/{even_number}`
|
||||||
- Content: Simple text description
|
- Content: Simple text description
|
||||||
|
|
||||||
- Odd numbered resources:
|
- Odd numbered resources:
|
||||||
- Binary blob format
|
- Binary blob format
|
||||||
- URI pattern: `test://static/resource/{odd_number}`
|
- URI pattern: `test://static/resource/{odd_number}`
|
||||||
- Content: Base64 encoded binary data
|
- Content: Base64 encoded binary data
|
||||||
|
|
||||||
Resource features:
|
Resource features:
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
|
||||||
import {
|
import {
|
||||||
CallToolRequestSchema,
|
CallToolRequestSchema,
|
||||||
|
CompleteRequestSchema,
|
||||||
CreateMessageRequest,
|
CreateMessageRequest,
|
||||||
CreateMessageResultSchema,
|
CreateMessageResultSchema,
|
||||||
GetPromptRequestSchema,
|
GetPromptRequestSchema,
|
||||||
@@ -40,6 +41,8 @@ const LongRunningOperationSchema = z.object({
|
|||||||
steps: z.number().default(5).describe("Number of steps in the operation"),
|
steps: z.number().default(5).describe("Number of steps in the operation"),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const PrintEnvSchema = z.object({});
|
||||||
|
|
||||||
const SampleLLMSchema = z.object({
|
const SampleLLMSchema = z.object({
|
||||||
prompt: z.string().describe("The prompt to send to the LLM"),
|
prompt: z.string().describe("The prompt to send to the LLM"),
|
||||||
maxTokens: z
|
maxTokens: z
|
||||||
@@ -48,12 +51,20 @@ const SampleLLMSchema = z.object({
|
|||||||
.describe("Maximum number of tokens to generate"),
|
.describe("Maximum number of tokens to generate"),
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Example completion values
|
||||||
|
const EXAMPLE_COMPLETIONS = {
|
||||||
|
style: ["casual", "formal", "technical", "friendly"],
|
||||||
|
temperature: ["0", "0.5", "0.7", "1.0"],
|
||||||
|
resourceId: ["1", "2", "3", "4", "5"],
|
||||||
|
};
|
||||||
|
|
||||||
const GetTinyImageSchema = z.object({});
|
const GetTinyImageSchema = z.object({});
|
||||||
|
|
||||||
enum ToolName {
|
enum ToolName {
|
||||||
ECHO = "echo",
|
ECHO = "echo",
|
||||||
ADD = "add",
|
ADD = "add",
|
||||||
LONG_RUNNING_OPERATION = "longRunningOperation",
|
LONG_RUNNING_OPERATION = "longRunningOperation",
|
||||||
|
PRINT_ENV = "printEnv",
|
||||||
SAMPLE_LLM = "sampleLLM",
|
SAMPLE_LLM = "sampleLLM",
|
||||||
GET_TINY_IMAGE = "getTinyImage",
|
GET_TINY_IMAGE = "getTinyImage",
|
||||||
}
|
}
|
||||||
@@ -297,6 +308,11 @@ export const createServer = () => {
|
|||||||
description: "Adds two numbers",
|
description: "Adds two numbers",
|
||||||
inputSchema: zodToJsonSchema(AddSchema) as ToolInput,
|
inputSchema: zodToJsonSchema(AddSchema) as ToolInput,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: ToolName.PRINT_ENV,
|
||||||
|
description: "Prints all environment variables, helpful for debugging MCP server configuration",
|
||||||
|
inputSchema: zodToJsonSchema(PrintEnvSchema) as ToolInput,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: ToolName.LONG_RUNNING_OPERATION,
|
name: ToolName.LONG_RUNNING_OPERATION,
|
||||||
description:
|
description:
|
||||||
@@ -374,6 +390,17 @@ export const createServer = () => {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (name === ToolName.PRINT_ENV) {
|
||||||
|
return {
|
||||||
|
content: [
|
||||||
|
{
|
||||||
|
type: "text",
|
||||||
|
text: JSON.stringify(process.env, null, 2),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
if (name === ToolName.SAMPLE_LLM) {
|
if (name === ToolName.SAMPLE_LLM) {
|
||||||
const validatedArgs = SampleLLMSchema.parse(args);
|
const validatedArgs = SampleLLMSchema.parse(args);
|
||||||
const { prompt, maxTokens } = validatedArgs;
|
const { prompt, maxTokens } = validatedArgs;
|
||||||
@@ -412,6 +439,34 @@ export const createServer = () => {
|
|||||||
throw new Error(`Unknown tool: ${name}`);
|
throw new Error(`Unknown tool: ${name}`);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
server.setRequestHandler(CompleteRequestSchema, async (request) => {
|
||||||
|
const { ref, argument } = request.params;
|
||||||
|
|
||||||
|
if (ref.type === "ref/resource") {
|
||||||
|
const resourceId = ref.uri.split("/").pop();
|
||||||
|
if (!resourceId) return { completion: { values: [] } };
|
||||||
|
|
||||||
|
// Filter resource IDs that start with the input value
|
||||||
|
const values = EXAMPLE_COMPLETIONS.resourceId.filter(id =>
|
||||||
|
id.startsWith(argument.value)
|
||||||
|
);
|
||||||
|
return { completion: { values, hasMore: false, total: values.length } };
|
||||||
|
}
|
||||||
|
|
||||||
|
if (ref.type === "ref/prompt") {
|
||||||
|
// Handle completion for prompt arguments
|
||||||
|
const completions = EXAMPLE_COMPLETIONS[argument.name as keyof typeof EXAMPLE_COMPLETIONS];
|
||||||
|
if (!completions) return { completion: { values: [] } };
|
||||||
|
|
||||||
|
const values = completions.filter(value =>
|
||||||
|
value.startsWith(argument.value)
|
||||||
|
);
|
||||||
|
return { completion: { values, hasMore: false, total: values.length } };
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Error(`Unknown reference type`);
|
||||||
|
});
|
||||||
|
|
||||||
server.setRequestHandler(SetLevelRequestSchema, async (request) => {
|
server.setRequestHandler(SetLevelRequestSchema, async (request) => {
|
||||||
const { level } = request.params;
|
const { level } = request.params;
|
||||||
|
|
||||||
|
|||||||
@@ -73,6 +73,12 @@ Please note that mcp-server-git is currently in early development. The functiona
|
|||||||
- `repo_path` (string): Path to Git repository
|
- `repo_path` (string): Path to Git repository
|
||||||
- `branch_name` (string): Name of branch to checkout
|
- `branch_name` (string): Name of branch to checkout
|
||||||
- Returns: Confirmation of branch switch
|
- Returns: Confirmation of branch switch
|
||||||
|
9. `git_show`
|
||||||
|
- Shows the contents of a commit
|
||||||
|
- Inputs:
|
||||||
|
- `repo_path` (string): Path to Git repository
|
||||||
|
- `revision` (string): The revision (commit hash, branch name, tag) to show
|
||||||
|
- Returns: Contents of the specified commit
|
||||||
|
|
||||||
## Installation
|
## Installation
|
||||||
|
|
||||||
|
|||||||
@@ -52,6 +52,10 @@ class GitCheckout(BaseModel):
|
|||||||
repo_path: str
|
repo_path: str
|
||||||
branch_name: str
|
branch_name: str
|
||||||
|
|
||||||
|
class GitShow(BaseModel):
|
||||||
|
repo_path: str
|
||||||
|
revision: str
|
||||||
|
|
||||||
class GitTools(str, Enum):
|
class GitTools(str, Enum):
|
||||||
STATUS = "git_status"
|
STATUS = "git_status"
|
||||||
DIFF_UNSTAGED = "git_diff_unstaged"
|
DIFF_UNSTAGED = "git_diff_unstaged"
|
||||||
@@ -63,6 +67,7 @@ class GitTools(str, Enum):
|
|||||||
LOG = "git_log"
|
LOG = "git_log"
|
||||||
CREATE_BRANCH = "git_create_branch"
|
CREATE_BRANCH = "git_create_branch"
|
||||||
CHECKOUT = "git_checkout"
|
CHECKOUT = "git_checkout"
|
||||||
|
SHOW = "git_show"
|
||||||
|
|
||||||
def git_status(repo: git.Repo) -> str:
|
def git_status(repo: git.Repo) -> str:
|
||||||
return repo.git.status()
|
return repo.git.status()
|
||||||
@@ -113,6 +118,24 @@ def git_checkout(repo: git.Repo, branch_name: str) -> str:
|
|||||||
repo.git.checkout(branch_name)
|
repo.git.checkout(branch_name)
|
||||||
return f"Switched to branch '{branch_name}'"
|
return f"Switched to branch '{branch_name}'"
|
||||||
|
|
||||||
|
def git_show(repo: git.Repo, revision: str) -> str:
|
||||||
|
commit = repo.commit(revision)
|
||||||
|
output = [
|
||||||
|
f"Commit: {commit.hexsha}\n"
|
||||||
|
f"Author: {commit.author}\n"
|
||||||
|
f"Date: {commit.authored_datetime}\n"
|
||||||
|
f"Message: {commit.message}\n"
|
||||||
|
]
|
||||||
|
if commit.parents:
|
||||||
|
parent = commit.parents[0]
|
||||||
|
diff = parent.diff(commit, create_patch=True)
|
||||||
|
else:
|
||||||
|
diff = commit.diff(git.NULL_TREE, create_patch=True)
|
||||||
|
for d in diff:
|
||||||
|
output.append(f"\n--- {d.a_path}\n+++ {d.b_path}\n")
|
||||||
|
output.append(d.diff.decode('utf-8'))
|
||||||
|
return "".join(output)
|
||||||
|
|
||||||
async def serve(repository: Path | None) -> None:
|
async def serve(repository: Path | None) -> None:
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -179,6 +202,11 @@ async def serve(repository: Path | None) -> None:
|
|||||||
description="Switches branches",
|
description="Switches branches",
|
||||||
inputSchema=GitCheckout.schema(),
|
inputSchema=GitCheckout.schema(),
|
||||||
),
|
),
|
||||||
|
Tool(
|
||||||
|
name=GitTools.SHOW,
|
||||||
|
description="Shows the contents of a commit",
|
||||||
|
inputSchema=GitShow.schema(),
|
||||||
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
async def list_repos() -> Sequence[str]:
|
async def list_repos() -> Sequence[str]:
|
||||||
@@ -290,6 +318,13 @@ async def serve(repository: Path | None) -> None:
|
|||||||
text=result
|
text=result
|
||||||
)]
|
)]
|
||||||
|
|
||||||
|
case GitTools.SHOW:
|
||||||
|
result = git_show(repo, arguments["revision"])
|
||||||
|
return [TextContent(
|
||||||
|
type="text",
|
||||||
|
text=result
|
||||||
|
)]
|
||||||
|
|
||||||
case _:
|
case _:
|
||||||
raise ValueError(f"Unknown tool: {name}")
|
raise ValueError(f"Unknown tool: {name}")
|
||||||
|
|
||||||
|
|||||||
@@ -4,19 +4,19 @@ MCP Server for the Google Maps API.
|
|||||||
|
|
||||||
## Tools
|
## Tools
|
||||||
|
|
||||||
1. `geocode`
|
1. `maps_geocode`
|
||||||
- Convert address to coordinates
|
- Convert address to coordinates
|
||||||
- Input: `address` (string)
|
- Input: `address` (string)
|
||||||
- Returns: location, formatted_address, place_id
|
- Returns: location, formatted_address, place_id
|
||||||
|
|
||||||
2. `reverse_geocode`
|
2. `maps_reverse_geocode`
|
||||||
- Convert coordinates to address
|
- Convert coordinates to address
|
||||||
- Inputs:
|
- Inputs:
|
||||||
- `latitude` (number)
|
- `latitude` (number)
|
||||||
- `longitude` (number)
|
- `longitude` (number)
|
||||||
- Returns: formatted_address, place_id, address_components
|
- Returns: formatted_address, place_id, address_components
|
||||||
|
|
||||||
3. `search_places`
|
3. `maps_search_places`
|
||||||
- Search for places using text query
|
- Search for places using text query
|
||||||
- Inputs:
|
- Inputs:
|
||||||
- `query` (string)
|
- `query` (string)
|
||||||
@@ -24,12 +24,12 @@ MCP Server for the Google Maps API.
|
|||||||
- `radius` (optional): number (meters, max 50000)
|
- `radius` (optional): number (meters, max 50000)
|
||||||
- Returns: array of places with names, addresses, locations
|
- Returns: array of places with names, addresses, locations
|
||||||
|
|
||||||
4. `get_place_details`
|
4. `maps_place_details`
|
||||||
- Get detailed information about a place
|
- Get detailed information about a place
|
||||||
- Input: `place_id` (string)
|
- Input: `place_id` (string)
|
||||||
- Returns: name, address, contact info, ratings, reviews, opening hours
|
- Returns: name, address, contact info, ratings, reviews, opening hours
|
||||||
|
|
||||||
5. `get_distance_matrix`
|
5. `maps_distance_matrix`
|
||||||
- Calculate distances and times between points
|
- Calculate distances and times between points
|
||||||
- Inputs:
|
- Inputs:
|
||||||
- `origins` (string[])
|
- `origins` (string[])
|
||||||
@@ -37,12 +37,12 @@ MCP Server for the Google Maps API.
|
|||||||
- `mode` (optional): "driving" | "walking" | "bicycling" | "transit"
|
- `mode` (optional): "driving" | "walking" | "bicycling" | "transit"
|
||||||
- Returns: distances and durations matrix
|
- Returns: distances and durations matrix
|
||||||
|
|
||||||
6. `get_elevation`
|
6. `maps_elevation`
|
||||||
- Get elevation data for locations
|
- Get elevation data for locations
|
||||||
- Input: `locations` (array of {latitude, longitude})
|
- Input: `locations` (array of {latitude, longitude})
|
||||||
- Returns: elevation data for each point
|
- Returns: elevation data for each point
|
||||||
|
|
||||||
7. `get_directions`
|
7. `maps_directions`
|
||||||
- Get directions between points
|
- Get directions between points
|
||||||
- Inputs:
|
- Inputs:
|
||||||
- `origin` (string)
|
- `origin` (string)
|
||||||
|
|||||||
Reference in New Issue
Block a user