Skip to content

Commit 8dc53ed

Browse files
authored
Merge branch 'main' into adamj/search-files-clarify-implementation
2 parents 5069586 + c8fe7d9 commit 8dc53ed

3 files changed

Lines changed: 62 additions & 15 deletions

File tree

README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,7 @@ Official integrations are maintained by companies building production ready MCP
414414
- <img height="12" width="12" src="https://www.pingcap.com/favicon.ico" alt="TiDB Logo" /> **[TiDB](https://github.com/pingcap/pytidb)** - MCP Server to interact with TiDB database platform.
415415
- <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
416416
- <img height="12" width="12" src="https://b2729162.smushcdn.com/2729162/wp-content/uploads/2023/10/cropped-Favicon-1-192x192.png?lossy=1&strip=1&webp=1" alt="Tldv Logo" /> **[Tldv](https://gitlab.com/tldv/tldv-mcp-server)** - Connect your AI agents to Google-Meet, Zoom & Microsoft Teams through [tl;dv](https://tldv.io)
417+
- <img height="12" width="12" src="https://www.todoist.com/static/favicon-32x32.png" alt="Todoist Logo" /> **[Todoist](https://github.com/doist/todoist-ai)** - Search, add, and update [Todoist](https://todoist.com) tasks, projects, sections, comments, and more.
417418
- <img height="12" width="12" src="https://cdn.tokenmetrics.com/logo.svg" alt="Token Metrics Logo" /> **[Token Metrics](https://github.com/token-metrics/mcp)** - [Token Metrics](https://www.tokenmetrics.com/) integration for fetching real-time crypto market data, trading signals, price predictions, and advanced analytics.
418419
- <img height="12" width="12" src="https://di8m9w6rqrh5d.cloudfront.net/2G3TRwfv1w3GTLfmT7Dmco1VddoFTI5P/1920_6b7e7ec2-d897-4cd7-94f3-46a8301212c3.png" alt="TomTom Logo" /> **[TomTom-MCP](https://github.com/tomtom-international/tomtom-mcp)** - The [TomTom](https://www.tomtom.com/) MCP Server simplifies geospatial development by providing seamless access to TomTom's location services, including search, routing, traffic and static maps data.
419420
- <img height="12" width="12" src="https://images.thetradeagent.ai/trade_agent/logo.svg" alt="Trade Agent Logo" /> **[Trade Agent](https://github.com/Trade-Agent/trade-agent-mcp)** - Execute stock and crypto trades on your brokerage via [Trade Agent](https://thetradeagent.ai)
@@ -575,6 +576,7 @@ A growing set of community-developed and maintained servers demonstrates various
575576
- **[coin_api_mcp](https://github.com/longmans/coin_api_mcp)** - Provides access to [coinmarketcap](https://coinmarketcap.com/) cryptocurrency data.
576577
- **[CoinMarketCap](https://github.com/shinzo-labs/coinmarketcap-mcp)** - Implements the complete [CoinMarketCap](https://coinmarketcap.com/) API for accessing cryptocurrency market data, exchange information, and other blockchain-related metrics.
577578
- **[commands](https://github.com/g0t4/mcp-server-commands)** - Run commands and scripts. Just like in a terminal.
579+
- **[Companies House MCP](https://github.com/stefanoamorelli/companies-house-mcp)** (by Stefano Amorelli) - MCP server to connect with the UK Companies House API.
578580
- **[computer-control-mcp](https://github.com/AB498/computer-control-mcp)** - MCP server that provides computer control capabilities, like mouse, keyboard, OCR, etc. using PyAutoGUI, RapidOCR, ONNXRuntime Without External Dependencies.
579581
- **[Computer-Use - Remote MacOS Use](https://github.com/baryhuang/mcp-remote-macos-use)** - Open-source out-of-the-box alternative to OpenAI Operator, providing a full desktop experience and optimized for using remote macOS machines as autonomous AI agents.
580582
- **[Congress.gov API](https://github.com/AshwinSundar/congress_gov_mcp)** - An MCP server to interact with real-time data from the Congress.gov API, which is the official API for the United States Congress.
@@ -634,6 +636,7 @@ A growing set of community-developed and maintained servers demonstrates various
634636
- **[Docker](https://github.com/ckreiling/mcp-server-docker)** - Integrate with Docker to manage containers, images, volumes, and networks.
635637
- **[Docker](https://github.com/0xshariq/docker-mcp-server)** - Docker MCP Server provides advanced, unified Docker management via CLI and MCP workflows, supporting containers, images, volumes, networks, and orchestration.
636638
- **[Docs](https://github.com/da1z/docsmcp)** - Enable documentation access for the AI agent, supporting llms.txt and other remote or local files.
639+
- **[documcp](https://github.com/tosin2013/documcp)** - An MCP server for intelligent document processing and management, supporting multiple formats and document operations.
637640
- **[Docy](https://github.com/oborchers/mcp-server-docy)** - Docy gives your AI direct access to the technical documentation it needs, right when it needs it. No more outdated information, broken links, or rate limits - just accurate, real-time documentation access for more precise coding assistance.
638641
- **[Dodo Payments](https://github.com/dodopayments/dodopayments-node/tree/main/packages/mcp-server)** - Enables AI agents to securely perform payment operations via a lightweight, serverless-compatible interface to the [Dodo Payments](https://dodopayments.com) API.
639642
- **[Domain Tools](https://github.com/deshabhishek007/domain-tools-mcp-server)** - A Model Context Protocol (MCP) server for comprehensive domain analysis: WHOIS, DNS records, and DNS health checks.
@@ -1155,6 +1158,7 @@ A growing set of community-developed and maintained servers demonstrates various
11551158
- **[Trello MCP Server](https://github.com/lioarce01/trello-mcp-server)** - An MCP server that interact with user Trello boards, modifying them with prompting.
11561159
- **[Trino](https://github.com/tuannvm/mcp-trino)** - A high-performance Model Context Protocol (MCP) server for Trino implemented in Go.
11571160
- **[Tripadvisor](https://github.com/pab1it0/tripadvisor-mcp)** - An MCP server that enables LLMs to interact with Tripadvisor API, supporting location data, reviews, and photos through standardized MCP interfaces
1161+
- **[Triplyfy MCP](https://github.com/helpful-AIs/triplyfy-mcp)** - An MCP server that lets LLMs plan and manage itineraries with interactive maps in Triplyfy; manage itineraries, places and notes, and search/save flights.
11581162
- **[TrueNAS Core MCP](https://github.com/vespo92/TrueNasCoreMCP)** - An MCP server for interacting with TrueNAS Core.
11591163
- **[TuriX Computer Automation MCP](https://github.com/TurixAI/TuriX-CUA/tree/mac_mcp)** - MCP server for helping automation control your computer complete your pre-setting task.
11601164
- **[Tyk API Management](https://github.com/TykTechnologies/tyk-dashboard-mcp)** - Chat with all of your organization's managed APIs and perform other API lifecycle operations, managing tokens, users, analytics, and more.

src/git/README.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,12 @@ Please note that mcp-server-git is currently in early development. The functiona
5757
- Returns: Confirmation of reset operation
5858

5959
8. `git_log`
60-
- Shows the commit logs
60+
- Shows the commit logs with optional date filtering
6161
- Inputs:
6262
- `repo_path` (string): Path to Git repository
6363
- `max_count` (number, optional): Maximum number of commits to show (default: 10)
64+
- `start_timestamp` (string, optional): Start timestamp for filtering commits. Accepts ISO 8601 format (e.g., '2024-01-15T14:30:25'), relative dates (e.g., '2 weeks ago', 'yesterday'), or absolute dates (e.g., '2024-01-15', 'Jan 15 2024')
65+
- `end_timestamp` (string, optional): End timestamp for filtering commits. Accepts ISO 8601 format (e.g., '2024-01-15T14:30:25'), relative dates (e.g., '2 weeks ago', 'yesterday'), or absolute dates (e.g., '2024-01-15', 'Jan 15 2024')
6466
- Returns: Array of commit entries with hash, author, date, and message
6567

6668
9. `git_create_branch`

src/git/src/mcp_server_git/server.py

Lines changed: 55 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,14 @@ class GitReset(BaseModel):
4848
class GitLog(BaseModel):
4949
repo_path: str
5050
max_count: int = 10
51+
start_timestamp: Optional[str] = Field(
52+
None,
53+
description="Start timestamp for filtering commits. Accepts: ISO 8601 format (e.g., '2024-01-15T14:30:25'), relative dates (e.g., '2 weeks ago', 'yesterday'), or absolute dates (e.g., '2024-01-15', 'Jan 15 2024')"
54+
)
55+
end_timestamp: Optional[str] = Field(
56+
None,
57+
description="End timestamp for filtering commits. Accepts: ISO 8601 format (e.g., '2024-01-15T14:30:25'), relative dates (e.g., '2 weeks ago', 'yesterday'), or absolute dates (e.g., '2024-01-15', 'Jan 15 2024')"
58+
)
5159

5260
class GitCreateBranch(BaseModel):
5361
repo_path: str
@@ -83,6 +91,7 @@ class GitBranch(BaseModel):
8391
description="The commit sha that branch should NOT contain. Do not pass anything to this param if no commit sha is specified",
8492
)
8593

94+
8695
class GitTools(str, Enum):
8796
STATUS = "git_status"
8897
DIFF_UNSTAGED = "git_diff_unstaged"
@@ -125,17 +134,41 @@ def git_reset(repo: git.Repo) -> str:
125134
repo.index.reset()
126135
return "All staged changes reset"
127136

128-
def git_log(repo: git.Repo, max_count: int = 10) -> list[str]:
129-
commits = list(repo.iter_commits(max_count=max_count))
130-
log = []
131-
for commit in commits:
132-
log.append(
133-
f"Commit: {commit.hexsha!r}\n"
134-
f"Author: {commit.author!r}\n"
135-
f"Date: {commit.authored_datetime}\n"
136-
f"Message: {commit.message!r}\n"
137-
)
138-
return log
137+
def git_log(repo: git.Repo, max_count: int = 10, start_timestamp: Optional[str] = None, end_timestamp: Optional[str] = None) -> list[str]:
138+
if start_timestamp or end_timestamp:
139+
# Use git log command with date filtering
140+
args = []
141+
if start_timestamp:
142+
args.extend(['--since', start_timestamp])
143+
if end_timestamp:
144+
args.extend(['--until', end_timestamp])
145+
args.extend(['--format=%H%n%an%n%ad%n%s%n'])
146+
147+
log_output = repo.git.log(*args).split('\n')
148+
149+
log = []
150+
# Process commits in groups of 4 (hash, author, date, message)
151+
for i in range(0, len(log_output), 4):
152+
if i + 3 < len(log_output) and len(log) < max_count:
153+
log.append(
154+
f"Commit: {log_output[i]}\n"
155+
f"Author: {log_output[i+1]}\n"
156+
f"Date: {log_output[i+2]}\n"
157+
f"Message: {log_output[i+3]}\n"
158+
)
159+
return log
160+
else:
161+
# Use existing logic for simple log without date filtering
162+
commits = list(repo.iter_commits(max_count=max_count))
163+
log = []
164+
for commit in commits:
165+
log.append(
166+
f"Commit: {commit.hexsha!r}\n"
167+
f"Author: {commit.author!r}\n"
168+
f"Date: {commit.authored_datetime}\n"
169+
f"Message: {commit.message!r}\n"
170+
)
171+
return log
139172

140173
def git_create_branch(repo: git.Repo, branch_name: str, base_branch: str | None = None) -> str:
141174
if base_branch:
@@ -203,6 +236,7 @@ def git_branch(repo: git.Repo, branch_type: str, contains: str | None = None, no
203236

204237
return branch_info
205238

239+
206240
async def serve(repository: Path | None) -> None:
207241
logger = logging.getLogger(__name__)
208242

@@ -283,6 +317,7 @@ async def list_tools() -> list[Tool]:
283317
name=GitTools.BRANCH,
284318
description="List Git branches",
285319
inputSchema=GitBranch.model_json_schema(),
320+
286321
)
287322
]
288323

@@ -380,13 +415,19 @@ async def call_tool(name: str, arguments: dict) -> list[TextContent]:
380415
text=result
381416
)]
382417

418+
# Update the LOG case:
383419
case GitTools.LOG:
384-
log = git_log(repo, arguments.get("max_count", 10))
420+
log = git_log(
421+
repo,
422+
arguments.get("max_count", 10),
423+
arguments.get("start_timestamp"),
424+
arguments.get("end_timestamp")
425+
)
385426
return [TextContent(
386427
type="text",
387428
text="Commit history:\n" + "\n".join(log)
388429
)]
389-
430+
390431
case GitTools.CREATE_BRANCH:
391432
result = git_create_branch(
392433
repo,
@@ -423,7 +464,7 @@ async def call_tool(name: str, arguments: dict) -> list[TextContent]:
423464
type="text",
424465
text=result
425466
)]
426-
467+
427468
case _:
428469
raise ValueError(f"Unknown tool: {name}")
429470

0 commit comments

Comments
 (0)