Skip to content

Commit 0cffce6

Browse files
author
shiraayal-tadata
committed
fix
1 parent 5a0b800 commit 0cffce6

File tree

2 files changed

+1
-126
lines changed

2 files changed

+1
-126
lines changed

examples/shared/apps/__init__.py

Lines changed: 0 additions & 125 deletions
Original file line numberDiff line numberDiff line change
@@ -1,125 +0,0 @@
1-
"""
2-
Simple example of using FastAPI-MCP to add an MCP server to a FastAPI app.
3-
"""
4-
5-
from fastapi import FastAPI, HTTPException, Query
6-
from pydantic import BaseModel
7-
from typing import List, Optional
8-
9-
10-
router = FastAPI()
11-
12-
13-
class Item(BaseModel):
14-
id: int
15-
name: str
16-
description: Optional[str] = None
17-
price: float
18-
tags: List[str] = []
19-
20-
21-
items_db: dict[int, Item] = {}
22-
23-
24-
@router.get("/items/", response_model=List[Item], tags=["items"], operation_id="list_items")
25-
async def list_items(skip: int = 0, limit: int = 10):
26-
"""
27-
List all items in the database.
28-
29-
Returns a list of items, with pagination support.
30-
"""
31-
return list(items_db.values())[skip : skip + limit]
32-
33-
34-
@router.get("/items/{item_id}", response_model=Item, tags=["items"], operation_id="get_item")
35-
async def read_item(item_id: int):
36-
"""
37-
Get a specific item by its ID.
38-
39-
Raises a 404 error if the item does not exist.
40-
"""
41-
if item_id not in items_db:
42-
raise HTTPException(status_code=404, detail="Item not found")
43-
return items_db[item_id]
44-
45-
46-
@router.post("/items/", response_model=Item, tags=["items"], operation_id="create_item")
47-
async def create_item(item: Item):
48-
"""
49-
Create a new item in the database.
50-
51-
Returns the created item with its assigned ID.
52-
"""
53-
items_db[item.id] = item
54-
return item
55-
56-
57-
@router.put("/items/{item_id}", response_model=Item, tags=["items"], operation_id="update_item")
58-
async def update_item(item_id: int, item: Item):
59-
"""
60-
Update an existing item.
61-
62-
Raises a 404 error if the item does not exist.
63-
"""
64-
if item_id not in items_db:
65-
raise HTTPException(status_code=404, detail="Item not found")
66-
67-
item.id = item_id
68-
items_db[item_id] = item
69-
return item
70-
71-
72-
@router.delete("/items/{item_id}", tags=["items"], operation_id="delete_item")
73-
async def delete_item(item_id: int):
74-
"""
75-
Delete an item from the database.
76-
77-
Raises a 404 error if the item does not exist.
78-
"""
79-
if item_id not in items_db:
80-
raise HTTPException(status_code=404, detail="Item not found")
81-
82-
del items_db[item_id]
83-
return {"message": "Item deleted successfully"}
84-
85-
86-
@router.get("/items/search/", response_model=List[Item], tags=["search"], operation_id="search_items")
87-
async def search_items(
88-
q: Optional[str] = Query(None, description="Search query string"),
89-
min_price: Optional[float] = Query(None, description="Minimum price"),
90-
max_price: Optional[float] = Query(None, description="Maximum price"),
91-
tags: List[str] = Query([], description="Filter by tags"),
92-
):
93-
"""
94-
Search for items with various filters.
95-
96-
Returns a list of items that match the search criteria.
97-
"""
98-
results = list(items_db.values())
99-
100-
if q:
101-
q = q.lower()
102-
results = [
103-
item for item in results if q in item.name.lower() or (item.description and q in item.description.lower())
104-
]
105-
106-
if min_price is not None:
107-
results = [item for item in results if item.price >= min_price]
108-
if max_price is not None:
109-
results = [item for item in results if item.price <= max_price]
110-
111-
if tags:
112-
results = [item for item in results if all(tag in item.tags for tag in tags)]
113-
114-
return results
115-
116-
117-
sample_items = [
118-
Item(id=1, name="Hammer", description="A tool for hammering nails", price=9.99, tags=["tool", "hardware"]),
119-
Item(id=2, name="Screwdriver", description="A tool for driving screws", price=7.99, tags=["tool", "hardware"]),
120-
Item(id=3, name="Wrench", description="A tool for tightening bolts", price=12.99, tags=["tool", "hardware"]),
121-
Item(id=4, name="Saw", description="A tool for cutting wood", price=19.99, tags=["tool", "hardware", "cutting"]),
122-
Item(id=5, name="Drill", description="A tool for drilling holes", price=49.99, tags=["tool", "hardware", "power"]),
123-
]
124-
for item in sample_items:
125-
items_db[item.id] = item

examples/shared/setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,4 +35,4 @@ def setup_logging():
3535
from logging.config import dictConfig
3636

3737
logging_config = LoggingConfig()
38-
dictConfig(logging_config.model_dump())
38+
dictConfig(logging_config.model_dump())

0 commit comments

Comments
 (0)