Skip to content

Commit 21e07b6

Browse files
authored
Merge branch 'main' into main
2 parents 188cd76 + deacc07 commit 21e07b6

File tree

10 files changed

+129
-38
lines changed

10 files changed

+129
-38
lines changed

README.md

Lines changed: 15 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ These servers aim to demonstrate MCP features and the Typescript and Python SDK.
3434

3535
Official integrations are maintained by companies building production ready MCP servers for their platforms.
3636

37+
- <img height="12" width="12" src="https://axiom.co/favicon.ico" alt="Axiom Logo" /> **[Axiom](https://github.com/axiomhq/mcp-server-axiom)** - Query and analyze your Axiom logs, traces, and all other event data in natural language
3738
- <img height="12" width="12" src="https://browserbase.com/favicon.ico" alt="Browserbase Logo" /> **[Browserbase](https://github.com/browserbase/mcp-server-browserbase)** - Automate browser interactions in the cloud (e.g. web navigation, data extraction, form filling, and more)
3839
- <img height="12" width="12" src="https://cdn.simpleicons.org/cloudflare" /> **[Cloudflare](https://github.com/cloudflare/mcp-server-cloudflare)** - Deploy, configure & interrogate your resources on the Cloudflare developer platform (e.g. Workers/KV/R2/D1)
3940
- **[Raygun](https://github.com/MindscapeHQ/mcp-server-raygun)** - Interact with your crash reporting and real using monitoring data on your Raygun account
@@ -51,30 +52,40 @@ A growing set of community-developed and maintained servers demonstrates various
5152
> **Note:** Community servers are **untested** and should be used at **your own risk**. They are not affiliated with or endorsed by Anthropic.
5253
5354
- **[MCP Installer](https://github.com/anaisbetts/mcp-installer)** - This server is a server that installs other MCP servers for you.
54-
- **[Spotify MCP](https://github.com/varunneal/spotify-mcp)** - This MCP allows an LLM to play and use Spotify.
55+
- **[Spotify](https://github.com/varunneal/spotify-mcp)** - This MCP allows an LLM to play and use Spotify.
5556
- **[Inoyu](https://github.com/sergehuber/inoyu-mcp-unomi-server)** - Interact with an Apache Unomi CDP customer data platform to retrieve and update customer profiles
57+
- **[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.
5658
- **[MySQL](https://github.com/designcomputer/mysql_mcp_server)** - MySQL database integration with configurable access controls and schema inspection
59+
- **[MSSQL](https://github.com/aekanun2020/mcp-server/)** - MSSQL database integration with configurable access controls and schema inspection
5760
- **[BigQuery](https://github.com/LucasHild/mcp-server-bigquery)** (by LucasHild) - This server enables LLMs to inspect database schemas and execute queries on BigQuery.
5861
- **[BigQuery](https://github.com/ergut/mcp-bigquery-server)** (by ergut) - Server implementation for Google BigQuery integration that enables direct BigQuery database access and querying capabilities
5962
- **[Todoist](https://github.com/abhiz123/todoist-mcp-server)** - Interact with Todoist to manage your tasks.
6063
- **[Tavily search](https://github.com/RamXX/mcp-tavily")** - An MCP server for Tavily's search & news API, with explicit site inclusions/exclusions
6164
- **[Linear](https://github.com/jerhadf/linear-mcp-server)** - Allows LLM to interact with Linear's API for project management, including searching, creating, and updating issues.
62-
- **[Playwright MCP](https://github.com/executeautomation/mcp-playwright)** - This MCP Server will help you run browser automation and webscraping using Playwright
65+
- **[Playwright](https://github.com/executeautomation/mcp-playwright)** - This MCP Server will help you run browser automation and webscraping using Playwright
6366
- **[AWS](https://github.com/rishikavikondala/mcp-server-aws)** - Perform operations on your AWS resources using an LLM
6467
- **[LlamaCloud](https://github.com/run-llama/mcp-server-llamacloud)** (by marcusschiesser) - Integrate the data stored in a managed index on [LlamaCloud](https://cloud.llamaindex.ai/)
6568
- **[Any Chat Completions](https://github.com/pyroprompts/any-chat-completions-mcp)** - Interact with any OpenAI SDK Compatible Chat Completions API like OpenAI, Perplexity, Groq, xAI and many more.
6669
- **[Windows CLI](https://github.com/SimonB97/win-cli-mcp-server)** - MCP server for secure command-line interactions on Windows systems, enabling controlled access to PowerShell, CMD, and Git Bash shells.
6770
- **[OpenRPC](https://github.com/shanejonas/openrpc-mpc-server)** - Interact with and discover JSON-RPC APIs via [OpenRPC](https://open-rpc.org).
71+
- **[FireCrawl](https://github.com/vrknetha/mcp-server-firecrawl)** - Advanced web scraping with JavaScript rendering, PDF support, and smart rate limiting
72+
- **[AlphaVantage](https://github.com/calvernaz/alphavantage)** - MCP server for stock market data API [AlphaVantage](https://www.alphavantage.co)
73+
- **[Docker](https://github.com/ckreiling/mcp-server-docker)** - Integrate with Docker to manage containers, images, volumes, and networks.
74+
- **[Kubernetes](https://github.com/Flux159/mcp-server-kubernetes)** - Connect to Kubernetes cluster and manage pods, deployments, and services.
75+
- **[OpenAPI](https://github.com/snaggle-ai/openapi-mcp-server)** - Interact with [OpenAPI](https://www.openapis.org/) APIs.
76+
- **[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.
6877

6978
## 📚 Resources
7079

7180
Additional resources on MCP.
7281

73-
- **[Awesome MCP Servers by punkpeye](https://github.com/punkpeye/awesome-mcp-servers)** - A curated list of MCP servers by **[Frank Fiegel](https://github.com/punkpeye)**
74-
- **[Awesome MCP Servers by wong2](https://github.com/wong2/awesome-mcp-servers)** - A curated list of MCP servers by **[wong2](https://github.com/wong2)**
82+
- **[Awesome MCP Servers by punkpeye](https://github.com/punkpeye/awesome-mcp-servers)** (**[website](https://glama.ai/mcp/servers)**) - A curated list of MCP servers by **[Frank Fiegel](https://github.com/punkpeye)**
83+
- **[Awesome MCP Servers by wong2](https://github.com/wong2/awesome-mcp-servers)** (**[website](https://mcpservers.org)**) - A curated list of MCP servers by **[wong2](https://github.com/wong2)**
7584
- **[Awesome MCP Servers by appcypher](https://github.com/appcypher/awesome-mcp-servers)** - A curated list of MCP servers by **[Stephen Akinyemi](https://github.com/appcypher)**
85+
- **[Discord Server](https://glama.ai/mcp/discord)** – A community discord server dedicated to MCP by **[Frank Fiegel](https://github.com/punkpeye)**
7686
- **[mcp-get](https://mcp-get.com)** - Command line tool for installing and managing MCP servers by **[Michael Latman](https://github.com/michaellatman)**
7787
- **[mcp-cli](https://github.com/wong2/mcp-cli)** - A CLI inspector for the Model Context Protocol by **[wong2](https://github.com/wong2)**
88+
- **[r/mcp](https://www.reddit.com/r/mcp)** – A Reddit community dedicated to MCP by **[Frank Fiegel](https://github.com/punkpeye)**
7889

7990
## 🚀 Getting Started
8091

src/git/README.md

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,34 +26,41 @@ Please note that mcp-server-git is currently in early development. The functiona
2626
- `repo_path` (string): Path to Git repository
2727
- Returns: Diff output of staged changes
2828

29-
4. `git_commit`
29+
4. `git_diff`
30+
- Shows differences between branches or commits
31+
- Inputs:
32+
- `repo_path` (string): Path to Git repository
33+
- `target` (string): Target branch or commit to compare with
34+
- Returns: Diff output comparing current state with target
35+
36+
5. `git_commit`
3037
- Records changes to the repository
3138
- Inputs:
3239
- `repo_path` (string): Path to Git repository
3340
- `message` (string): Commit message
3441
- Returns: Confirmation with new commit hash
3542

36-
5. `git_add`
43+
6. `git_add`
3744
- Adds file contents to the staging area
3845
- Inputs:
3946
- `repo_path` (string): Path to Git repository
4047
- `files` (string[]): Array of file paths to stage
4148
- Returns: Confirmation of staged files
4249

43-
6. `git_reset`
50+
7. `git_reset`
4451
- Unstages all staged changes
4552
- Input:
4653
- `repo_path` (string): Path to Git repository
4754
- Returns: Confirmation of reset operation
4855

49-
7. `git_log`
56+
8. `git_log`
5057
- Shows the commit logs
5158
- Inputs:
5259
- `repo_path` (string): Path to Git repository
5360
- `max_count` (number, optional): Maximum number of commits to show (default: 10)
5461
- Returns: Array of commit entries with hash, author, date, and message
5562

56-
8. `git_create_branch`
63+
9. `git_create_branch`
5764
- Creates a new branch
5865
- Inputs:
5966
- `repo_path` (string): Path to Git repository

src/git/src/mcp_server_git/server.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@ class GitDiffUnstaged(BaseModel):
2424
class GitDiffStaged(BaseModel):
2525
repo_path: str
2626

27+
class GitDiff(BaseModel):
28+
repo_path: str
29+
target: str
30+
2731
class GitCommit(BaseModel):
2832
repo_path: str
2933
message: str
@@ -48,6 +52,7 @@ class GitTools(str, Enum):
4852
STATUS = "git_status"
4953
DIFF_UNSTAGED = "git_diff_unstaged"
5054
DIFF_STAGED = "git_diff_staged"
55+
DIFF = "git_diff"
5156
COMMIT = "git_commit"
5257
ADD = "git_add"
5358
RESET = "git_reset"
@@ -63,6 +68,9 @@ def git_diff_unstaged(repo: git.Repo) -> str:
6368
def git_diff_staged(repo: git.Repo) -> str:
6469
return repo.git.diff("--cached")
6570

71+
def git_diff(repo: git.Repo, target: str) -> str:
72+
return repo.git.diff(target)
73+
6674
def git_commit(repo: git.Repo, message: str) -> str:
6775
commit = repo.index.commit(message)
6876
return f"Changes committed successfully with hash {commit.hexsha}"
@@ -127,6 +135,11 @@ async def list_tools() -> list[Tool]:
127135
description="Shows changes that are staged for commit",
128136
inputSchema=GitDiffStaged.schema(),
129137
),
138+
Tool(
139+
name=GitTools.DIFF,
140+
description="Shows differences between branches or commits",
141+
inputSchema=GitDiff.schema(),
142+
),
130143
Tool(
131144
name=GitTools.COMMIT,
132145
description="Records changes to the repository",
@@ -210,6 +223,13 @@ async def call_tool(name: str, arguments: dict) -> list[TextContent]:
210223
text=f"Staged changes:\n{diff}"
211224
)]
212225

226+
case GitTools.DIFF:
227+
diff = git_diff(repo, arguments["target"])
228+
return [TextContent(
229+
type="text",
230+
text=f"Diff with {arguments['target']}:\n{diff}"
231+
)]
232+
213233
case GitTools.COMMIT:
214234
result = git_commit(repo, arguments["message"])
215235
return [TextContent(

src/github/README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,14 @@ MCP Server for the GitHub API, enabling file operations, repository management,
180180
- `sha` (optional string): branch name
181181
- Returns: List of commits
182182

183+
17. `get_issue`
184+
- Gets the contents of an issue within a repository
185+
- Inputs:
186+
- `owner` (string): Repository owner
187+
- `repo` (string): Repository name
188+
- `issue_number` (number): Issue number to retrieve
189+
- Returns: Github Issue object & details
190+
183191
## Search Query Syntax
184192

185193
### Code Search

src/github/index.ts

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import {
2020
CreateRepositorySchema,
2121
ForkRepositorySchema,
2222
GetFileContentsSchema,
23+
GetIssueSchema,
2324
GitHubCommitSchema,
2425
GitHubContentSchema,
2526
GitHubCreateUpdateFileResponseSchema,
@@ -691,6 +692,29 @@ async function searchUsers(
691692
return SearchUsersResponseSchema.parse(await response.json());
692693
}
693694

695+
async function getIssue(
696+
owner: string,
697+
repo: string,
698+
issueNumber: number
699+
): Promise<GitHubIssue> {
700+
const response = await fetch(
701+
`https://api.github.com/repos/${owner}/${repo}/issues/${issueNumber}`,
702+
{
703+
headers: {
704+
Authorization: `token ${GITHUB_PERSONAL_ACCESS_TOKEN}`,
705+
Accept: "application/vnd.github.v3+json",
706+
"User-Agent": "github-mcp-server",
707+
},
708+
}
709+
);
710+
711+
if (!response.ok) {
712+
throw new Error(`Github API error: ${response.statusText}`);
713+
}
714+
715+
return GitHubIssueSchema.parse(await response.json());
716+
}
717+
694718
server.setRequestHandler(ListToolsRequestSchema, async () => {
695719
return {
696720
tools: [
@@ -778,6 +802,11 @@ server.setRequestHandler(ListToolsRequestSchema, async () => {
778802
description: "Search for users on GitHub",
779803
inputSchema: zodToJsonSchema(SearchUsersSchema),
780804
},
805+
{
806+
name: "get_issue",
807+
description: "Get details of a specific issue in a GitHub repository.",
808+
inputSchema: zodToJsonSchema(GetIssueSchema)
809+
}
781810
],
782811
};
783812
});
@@ -972,6 +1001,16 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
9721001
return { content: [{ type: "text", text: JSON.stringify(results, null, 2) }] };
9731002
}
9741003

1004+
case "get_issue": {
1005+
const args = z.object({
1006+
owner: z.string(),
1007+
repo: z.string(),
1008+
issue_number: z.number()
1009+
}).parse(request.params.arguments);
1010+
const issue = await getIssue(args.owner, args.repo, args.issue_number);
1011+
return { toolResult: issue };
1012+
}
1013+
9751014
default:
9761015
throw new Error(`Unknown tool: ${request.params.name}`);
9771016
}

src/github/schemas.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -677,6 +677,12 @@ export const IssueCommentSchema = z.object({
677677
body: z.string()
678678
});
679679

680+
export const GetIssueSchema = z.object({
681+
owner: z.string().describe("Repository owner (username or organization)"),
682+
repo: z.string().describe("Repository name"),
683+
issue_number: z.number().describe("Issue number")
684+
});
685+
680686
// Export types
681687
export type GitHubAuthor = z.infer<typeof GitHubAuthorSchema>;
682688
export type GitHubFork = z.infer<typeof GitHubForkSchema>;

src/sentry/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ A Model Context Protocol server for retrieving and analyzing issues from Sentry.
66

77
### Tools
88

9-
1. `get-sentry-issue`
9+
1. `get_sentry_issue`
1010
- Retrieve and analyze a Sentry issue by ID or URL
1111
- Input:
1212
- `issue_id_or_url` (string): Sentry issue ID or URL to analyze

src/sentry/src/mcp_server_sentry/server.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ async def handle_get_prompt(
223223
async def handle_list_tools() -> list[types.Tool]:
224224
return [
225225
types.Tool(
226-
name="get-sentry-issue",
226+
name="get_sentry_issue",
227227
description="""Retrieve and analyze a Sentry issue by ID or URL. Use this tool when you need to:
228228
- Investigate production errors and crashes
229229
- Access detailed stacktraces from Sentry
@@ -247,7 +247,7 @@ async def handle_list_tools() -> list[types.Tool]:
247247
async def handle_call_tool(
248248
name: str, arguments: dict | None
249249
) -> list[types.TextContent | types.ImageContent | types.EmbeddedResource]:
250-
if name != "get-sentry-issue":
250+
if name != "get_sentry_issue":
251251
raise ValueError(f"Unknown tool: {name}")
252252

253253
if not arguments or "issue_id_or_url" not in arguments:

src/sqlite/README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,26 +22,26 @@ The server provides a demonstration prompt:
2222
The server offers six core tools:
2323

2424
#### Query Tools
25-
- `read-query`
25+
- `read_query`
2626
- Execute SELECT queries to read data from the database
2727
- Input:
2828
- `query` (string): The SELECT SQL query to execute
2929
- Returns: Query results as array of objects
3030

31-
- `write-query`
31+
- `write_query`
3232
- Execute INSERT, UPDATE, or DELETE queries
3333
- Input:
3434
- `query` (string): The SQL modification query
3535
- Returns: `{ affected_rows: number }`
3636

37-
- `create-table`
37+
- `create_table`
3838
- Create new tables in the database
3939
- Input:
4040
- `query` (string): CREATE TABLE SQL statement
4141
- Returns: Confirmation of table creation
4242

4343
#### Schema Tools
44-
- `list-tables`
44+
- `list_tables`
4545
- Get a list of all tables in the database
4646
- No input required
4747
- Returns: Array of table names
@@ -53,7 +53,7 @@ The server offers six core tools:
5353
- Returns: Array of column definitions with names and types
5454

5555
#### Analysis Tools
56-
- `append-insight`
56+
- `append_insight`
5757
- Add new business insights to the memo resource
5858
- Input:
5959
- `insight` (string): Business insight discovered from data analysis

0 commit comments

Comments
 (0)