මම ගොඩක් දුක් විඳිනවා.අපේ කතාව ගැන සමාවෙන්න.
MCPs සෑම තැනකම හා හොඳ හේතුවක් සඳහා.එය යෙදුම් සංවර්ධනයේ ඊළඟ පියවර වේ.
එක් චැට් වලින් සියල්ල භාවිතා කිරීමට හැකි වීම කිසිදු යෙදුමකට ප්රවේශ නොකරයි.පෝස්ට්චැට් වලින් ඔබගේ සියලු සමාජ තැපැල් සැලසුම් කරන්න!එහෙනම්, මම Postiz කේතය බිඳ දැමීමට පටන්ගෙන එය එකතු කළා!
MCP Repository එක අමුතු දෙයක්.
සෑම MCP එකකටම ප්රවාහනයක් ඇත, එය අපගේ පද්ධතිය සමඟ කතා කිරීමට LLMs භාවිතා කරන ක්රමයකි.
There are two primary methods at the moment: Stdio, මූලික වශයෙන් නියෝග රේඛාවක් වන අතර SSE.
මම ඇත්තටම තේරුම් නැහැ ඇයි ඔවුන් SSE තෝරා - එය ප්රධාන වශයෙන් දිගු ඉල්ලීමක් වන අතර එය කවදාවත් අවසන් නොවේ සහ ගනුදෙනුකරුවාට සිදුවීම් ප්රවාහනය කරයි.
මෙම ක්රමයේ ගැටලුව වන්නේ තොරතුරු සර්වර් වෙත ආපසු යැවීම සඳහා, ඔබට තවත් තැපැල් ඉල්ලීමක් යැවිය යුතුය (SSE එකඟ සන්නිවේදනය වන නිසා), එබැවින් ඔබ තත්වය තබා ගත යුතුය.
ඔවුන්ගේ උදාහරණයේ දී, ඔවුන් යෙදුම මතකය තුළ තත්වයක් තබාගෙන කුමක්ද දන්නේද?
මම WebSockets භාවිතා කරන්නෙමි.ඔවුන් ඇතුළත් නින්ද ක්රමයක් ඇති අතර, ඔබට එය සඳහා තත්වයක් තබා ගැනීමට අවශ්ය නැත.
පිපිරීම
මම Anthropic typcript SDK කපා දැම්මා හා පුදුම වුණේ නැහැ. එය අවුල් හැඟීමක්. නිෂ්පාදනය තුළ භාවිතා නොකරන බොහෝ දේ, "අධිකරණ" වැනි. ඔවුන් ඔබට මුළු ලෝකයේ සියල්ල මතකය තුළ තබා ගැනීමට අවශ්ය ආකාරය සිදු කිරීමට බලාපොරොත්තු වන අනතුරකි.
එසේම, සන්නිවේදන ක්රියාත්මක කිරීම සහ පරිශීලකයා සංකේතයෙන් ඉවත් කිරීම අපගේ විස්තර ලබා ගත හැකිය.
Postiz NestJS සමඟ ගොඩනැගී ඇත, එබැවින් SSE මාර්ගය භාවිතා කරන විට, එය නිරීක්ෂණය කළ හැකි වහාම ඉවත් වන අතර, ඔබට මතකයෙන් සියල්ල ඉවත් කිරීමට ඉඩ සලසයි.
import EventEmitter from 'events';
import { finalize, fromEvent, startWith } from 'rxjs';
@Injectable()
export class McpService {
static event = new EventEmitter();
constructor(
private _mainMcp: MainMcp
) {
}
async runServer(apiKey: string, organization: string) {
const server = McpSettings.load(organization, this._mainMcp).server();
const transport = new McpTransport(organization);
const observer = fromEvent(
McpService.event,
`organization-${organization}`
).pipe(
startWith({
type: 'endpoint',
data: process.env.NEXT_PUBLIC_BACKEND_URL + '/mcp/' + apiKey + '/messages',
}),
finalize(() => {
transport.close();
})
);
console.log('MCP transport started');
await server.connect(transport);
return observer;
}
async processPostBody(organization: string, body: object) {
const server = McpSettings.load(organization, this._mainMcp).server();
const message = JSONRPCMessageSchema.parse(body);
const transport = new McpTransport(organization);
await server.connect(transport);
transport.handlePostMessage(message);
return {};
}
}
️ ️ ️
ඔබ NestJS/Laravel/Spring වැනි OOP frameworks විශාල ප්රේක්ෂක නම් මෙය ඔබ සඳහා වේ.
@McpTool({ toolName: 'POSTIZ_GET_CONFIG_ID' })
async preRun() {
return [
{
type: 'text',
text: `id: ${makeId(10)} Today date is ${dayjs.utc().format()}`,
},
];
}
@McpTool({ toolName: 'POSTIZ_PROVIDERS_LIST' })
async listOfProviders(organization: string) {
const list = (
await this._integrationService.getIntegrationsList(organization)
).map((org) => ({
id: org.id,
name: org.name,
identifier: org.providerIdentifier,
picture: org.picture,
disabled: org.disabled,
profile: org.profile,
customer: org.customer
? {
id: org.customer.id,
name: org.customer.name,
}
: undefined,
}));
return [{ type: 'text', text: JSON.stringify(list) }];
}
@McpTool({
toolName: 'POSTIZ_SCHEDULE_POST',
zod: {
type: eenum(['draft', 'scheduled']),
configId: string(),
generatePictures: boolean(),
date: string().describe('UTC TIME'),
providerId: string().describe('Use POSTIZ_PROVIDERS_LIST to get the id'),
posts: array(object({ text: string(), images: array(string()) })),
},
})
async schedulePost(
organization: string,
obj: {
type: 'draft' | 'schedule';
generatePictures: boolean;
date: string;
providerId: string;
posts: { text: string }[];
}
) {
const create = await this._postsService.createPost(organization, {
date: obj.date,
type: obj.type,
tags: [],
posts: [
{
group: makeId(10),
value: await Promise.all(
obj.posts.map(async (post) => ({
content: post.text,
id: makeId(10),
image: !obj.generatePictures
? []
: [
{
id: makeId(10),
path: await this._openAiService.generateImage(
post.text,
true
),
},
],
}))
),
// @ts-ignore
settings: {},
integration: {
id: obj.providerId,
},
},
],
});
return [
{
type: 'text',
text: `Post created successfully, check it here: ${process.env.FRONTEND_URL}/p/${create[0].postId}`,
},
];
}
සියලුම කේතය මෙහි Postiz තුළ සොයා ගත හැක:https://github.com/gitroomhq/postiz-app/tree/main/libraries/nestjs-libraries/src/mcp
මෙන්න මෙහෙ :https://github.com/gitroomhq/postiz-app/tree/main/apps/backend/src/mcp
මාලිගාව කරන්න ඕනේ දේවල් 🏻
එය අපගේ දේවල් වෙත ප්රවේශ කිරීමට පෙර විවිධ දේවල් කිරීමට LLM බල කිරීමට ඇතුළත් විකල්පයක් තිබීම හොඳයි.
සෑම විටම මම Cursor මට තැපැල් සැලසුම් කිරීමට කිව්වා, එය 2024 සඳහා සැලසුම් කිරීමට උත්සාහ කළේය.
මම සමහර config විස්තර අතහැර දැමීමට අවශ්ය, ඒ නිසා මම නිර්මාණයPOSTIZ_CONFIGURATION_PRERUN
අපි බලාපොරොත්තු වෙනවා, LLM සෑම විටම දේවල් කිරීමට පෙර එය කතා කරනු ඇත.
නමුත් එය බොහෝ වාර ගණනාවක් නොසලකා බැලුවා (දරුණු), එබැවින් මම නිර්මාණශීලී විය යුතුය.POSTIZ_SCHEDULE_POST
මම නමින් අලුත් දේපල එකතු කළා.configId
Config Tool නම වෙනස් කරන්නPOSTIZ_GET_CONFIG_ID.
Config වල ප් රතිඵලය වන්නේ:id: ${makeId(10)} Today date is ${dayjs.utc().format()}
එය LLM සෑම විටම මීට පෙර එය කැඳවා, හා දිනය නියමිත විය! :)
එය මට වඩා හොඳ විය, මොකද මම දැනගෙන හිටියේ එය මට දැන් සිට UTC දිනය එවනු ඇත.
භාවිතය
මම හිතන්නේ එය බොහෝ මෙවලම් එකතු කරන විට හොඳම ක්රියා කරයි, උදාහරණයක් ලෙස:
- නුඹ
- එය Cursor වෙත සම්බන්ධ කර අද ඔබගේ වැඩ පිළිබඳ තැපැල් සැලසුම් කිරීමට ඉල්ලා සිටින්න. නුඹ
- එය Notion සමඟ සම්බන්ධ කරන්න සහ සමාජ මාධ්ය මත කණ්ඩායමේ සියලුම නවතම වැඩ සැලසුම් කරන්න - Composio MCPs බලන්න. නුඹ
- CopilotKit ඇති ඕනෑම SaaS වලට එය සම්බන්ධ කරන්න සහ යෙදුම මත පදනම්ව තැපැල් සැලසුම් කරන්න. නුඹ
MCP පිටුව
පෝස්ට්වඩාත්ම ශක්තිමත් විවෘත මූලාශ්රය සමාජ මාධ්ය සැලැස්ම මෙවලමක් - සහ දැන් MCP ඉදිරිපත් කරන එකම සැලැස්ම මෙවලමක් (සැබැවින්ම, Zapier හෝ එවැනි දෙයක් සමඟ නොවේ)
නව MCP සමඟ, ඔබ Cursor / Windsurf සහ Anthropic සේවාදායකයන්ගෙන් සියලුම තැපැල් සැලසුම් කළ හැකිය.
Everything is 100% free, of course. :)
ඔබ එය කැමති නම්, කරුණාකර අපව තරු කිරීමට අමතක නොකරන්න ⭐️https://github.com/gitroomhq/postiz-app පිලිබදව