DEV Community

Raj Aryan
Raj Aryan

Posted on

10 Killer MCP Projects to Supercharge Your AI Engineering Portfolio

๐Ÿš€ Learning AI isn't just theory โ€” it's about building real tools. Fast.

In this post, Iโ€™m giving you 10 hands-on MCP (Model Context Protocol) project ideas you can run entirely locally. Forget cloud lock-in โ€” these are fast, private, and seriously cool.

Each project includes:

  • ๐Ÿ”ง What it does
  • ๐Ÿ’ก Why itโ€™s worth building
  • ๐Ÿงช Code you can run immediately

Perfect for engineers, indie hackers, and tinkerers looking to level up their local-first AI dev game.


๐Ÿง  Wait, Whatโ€™s MCP?

MCP is like a personal assistant API bridge โ€” it lets local AI apps like Cursor or Claude Desktop interact with your local tools, databases, files, and scripts.

You say: โ€œCheck this stock trendโ€ โ†’ MCP talks to your local CSV + code โ†’ Returns chart/insight โ†’ No cloud, no lag, full control.


1. โœ‰๏ธ Lightweight MCP Socket Client

The foundation.
Build a socket-based local MCP client that can send & receive queries.

import socket, json

def mcp():
    s = socket.socket()
    s.connect(('localhost', 9999))
    s.send(json.dumps({"action": "status"}).encode())
    print(json.loads(s.recv(1024).decode()))
    s.close()

mcp()
Enter fullscreen mode Exit fullscreen mode

Next: Add a Flask or FastAPI backend.


2. ๐Ÿ” Dual-Source RAG Engine

Search smarter.
Local document retrieval that uses web scraping as a fallback.

from llama_index import VectorStoreIndex, SimpleDirectoryReader
import requests
from bs4 import BeautifulSoup

docs = SimpleDirectoryReader("docs").load_data()
index = VectorStoreIndex.from_documents(docs)

def query(q):
    answer = index.as_query_engine().query(q)
    return fallback(q) if answer.score < 0.4 else str(answer)

def fallback(q):
    r = requests.get(f"https://lite.search/?q={q}")
    return BeautifulSoup(r.text, 'html.parser').find('p').text

print(query("What is AGI?"))
Enter fullscreen mode Exit fullscreen mode

3. ๐Ÿ“Š Local Finance Insight Bot

Analyze local stock CSVs with moving averages and charts.

import pandas as pd
import matplotlib.pyplot as plt

def analyze(ticker):
    df = pd.read_csv(f"data/{ticker}.csv")
    df['MA30'] = df['Close'].rolling(30).mean()
    plt.plot(df['Date'], df['Close'], label='Close')
    plt.plot(df['Date'], df['MA30'], label='MA30')
    plt.legend(); plt.show()
    return f"{ticker} is {'rising' if df['Close'].iloc[-1] > df['MA30'].iloc[-1] else 'falling'}"

print(analyze("TSLA"))
Enter fullscreen mode Exit fullscreen mode

4. ๐ŸŽ™๏ธ Speak-to-Search Assistant

Voice interface + RAG = your own Alexa

import speech_recognition as sr
from llama_index import SimpleDirectoryReader, VectorStoreIndex

r = sr.Recognizer()
index = VectorStoreIndex.from_documents(SimpleDirectoryReader("notes").load_data())

def listen():
    with sr.Microphone() as source:
        audio = r.listen(source)
    return r.recognize_google(audio)

def respond():
    q = listen()
    return str(index.as_query_engine().query(q))

print(respond())
Enter fullscreen mode Exit fullscreen mode

5. ๐Ÿง  Unified Data Query Server (MindsDB)

Ask anything about your local databases.

from flask import Flask, request, jsonify
import mindsdb_sdk

app = Flask(__name__)
mdb = mindsdb_sdk.connect()

@app.route('/query', methods=['POST'])
def query():
    q = request.json['q']
    return jsonify(mdb.query(q).fetch().to_dict())

app.run(port=5000)
Enter fullscreen mode Exit fullscreen mode

6. ๐Ÿ““ Memory Bridge for Claude + Cursor

Store key-value memory across tools using SQLite.

import sqlite3

def setup():
    with sqlite3.connect('mem.db') as conn:
        conn.execute('CREATE TABLE IF NOT EXISTS store (k TEXT PRIMARY KEY, v TEXT)')

setup()

def set_note(k, v):
    with sqlite3.connect('mem.db') as con:
        con.execute('REPLACE INTO store VALUES (?, ?)', (k, v))

def get_note(k):
    with sqlite3.connect('mem.db') as con:
        r = con.execute('SELECT v FROM store WHERE k=?', (k,)).fetchone()
    return r[0] if r else 'none'

set_note('focus', 'Work on MCP today')
print(get_note('focus'))
Enter fullscreen mode Exit fullscreen mode

7. ๐Ÿ“„ RAG for Messy PDFs

Extract text from messy PDFs using PyMuPDF.

import fitz
from llama_index import Document, VectorStoreIndex

def extract(file):
    text = ''.join([page.get_text() for page in fitz.open(file)])
    return VectorStoreIndex.from_documents([Document(text=text)]).as_query_engine()

print(extract("sample.pdf").query("What's discussed?"))
Enter fullscreen mode Exit fullscreen mode

8. ๐Ÿงช Synthetic Table Generator

Generate test data locally using SDV.

from sdv.single_table import GaussianCopulaSynthesizer
from flask import Flask, request, jsonify
import pandas as pd

app = Flask(__name__)

@app.route('/generate', methods=['POST'])
def generate():
    df = pd.read_csv(request.json['file'])
    synth = GaussianCopulaSynthesizer(df)
    synth.fit()
    return jsonify(synth.sample(100).to_dict())

app.run(port=5050)
Enter fullscreen mode Exit fullscreen mode

9. ๐Ÿ” Local Research Agent Crew

Multi-agent CrewAI for deep local research.

from crewai import Agent, Task, Crew
from llama_index import VectorStoreIndex, SimpleDirectoryReader

docs = VectorStoreIndex.from_documents(SimpleDirectoryReader("src").load_data())
researcher = Agent("Analyst", "Break down info", tools=[docs.as_query_engine()])
task = Task("Summarize AI + ethics", agent=researcher)
crew = Crew([researcher], [task])
print(crew.kickoff())
Enter fullscreen mode Exit fullscreen mode

10. ๐Ÿ” Local Auth Without Passwords

Build your own authentication system โ€” no APIs.

from flask import Flask, request, jsonify

app = Flask(__name__)
users = {"raj": "faceprint123"}

@app.route('/login', methods=['POST'])
def login():
    body = request.json
    return jsonify({"success": users.get(body['user']) == body['auth']})

app.run(port=3001)
Enter fullscreen mode Exit fullscreen mode

๐Ÿš€ Final Thoughts

These MCP projects are powerful learning tools and excellent portfolio pieces. Youโ€™ll gain:

  • ๐Ÿง  Local AI deployment skills
  • ๐Ÿ”ง Real-world use case experience
  • ๐Ÿ”’ Cloud-free, privacy-first AI setups

๐Ÿ’ฌ Let me know which project you want to build โ€” or improve together!


#ai #machinelearning #mcp #openai #cursorai #crewai #llamaindex #privacyfirst #buildinpublic

Top comments (0)